<?xml version="1.0" encoding="utf-8"?>

<Strategy xmlns="http://www.fixprotocol.org/FIXatdl-1-1/Core"
    xmlns:val="http://www.fixprotocol.org/FIXatdl-1-1/Validation"
    xmlns:lay="http://www.fixprotocol.org/FIXatdl-1-1/Layout"
    xmlns:flow="http://www.fixprotocol.org/FIXatdl-1-1/Flow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.fixprotocol.org/FIXatdl-1-1/Core tt-fixatdl-core-1-1.xsd"
    name="TT_RETRY" uiRep="TT Retry" version="15.114.13" providerID="TT" entryFile="algo.so">

    <HideFromUIComponents>
        <UIComponent>Dashboard</UIComponent>
    </HideFromUIComponents>

    <Parameter name="__instr_id" xsi:type="String_t" refValue="OrderInstrumentID" required="true" dir="In" updateable="false"/>

    <Parameter name="__order_quantity" xsi:type="Qty_t" refValue="OrderQty" required="true" dir="In" updateable="true"/>

    <Parameter name="__price" xsi:type="Price_t" refValue="OrderPrice"  required="true" dir="In" updateable="true"/>

    <Parameter name="__side" xsi:type="Int_t" refValue="OrderSide" required="true" dir="In" updateable="true"/>

    <Parameter name="__account" xsi:type="String_t" refValue="OrderAccount" required="true" dir="In" updateable="false"/>

    <Parameter name="ChildTIF" xsi:type="Int_t" refValue="OrderTif" required="true" dir="In" updateable="false" orderEntryFixtag="16903"/>

    <Parameter name="ParentTIF" xsi:type="Int_t" initValue="eDay" required="true" dir="In" updateable="false" orderEntryFixtag="16950">
        <EnumPair enumID="eGTC" wireValue="2"/>
        <EnumPair enumID="eDay" wireValue="1"/>
    </Parameter>

    <!-- For now, hardcode limit -->
    <Parameter name="__type" xsi:type="Int_t" constValue="2" required="true" dir="In" updateable="false"/>

    <!-- Date and Time -->
    <Parameter name="STime" xsi:type="UTCTimestamp_t" required="false" dir="In" updateable="true" orderEntryFixtag="168"/>

    <Parameter name="RetryCount" xsi:type="Int_t" initValue="1" minValue="1" maxValue="32000" required="true" dir="In" updateable="false" orderEntryFixtag="16942"/>

    <Parameter name="RetryInterval" xsi:type="Int_t" initValue="0" minValue="0" maxValue="100000" required="true" dir="In" updateable="false" orderEntryFixtag="16943"/>

    <Parameter name="WaitingOption" xsi:type="Int_t" initValue="eNow" required="true" dir="In" updateable="false" orderEntryFixtag="16961">
        <EnumPair enumID="eNow"        wireValue="0"/>
        <EnumPair enumID="eTime"       wireValue="1"/>
        <EnumPair enumID="ePreOpen" wireValue="2"/>
        <EnumPair enumID="eOpen"      wireValue="3"/>
    </Parameter>

    <lay:StrategyLayout>
        <lay:StrategyPanel orientation="VERTICAL" class="main-panel">

            <lay:Control ID="RetryCount_ctrl" parameterRef="RetryCount" xsi:type="lay:SingleSpinner_t"  label="Number of retries"/>
            <lay:Control ID="RetryInterval_ctrl" parameterRef="RetryInterval" xsi:type="lay:SingleSpinner_t"  label="Retry interval(ms)"/>

            <!-- Start Time -->
            <lay:StrategyPanel orientation="HORIZONTAL">
                <lay:StrategyPanel>
                    <lay:Control ID="Start_label" label="Start" xsi:type="lay:Label_t"/>
                </lay:StrategyPanel>
                <lay:Control ID="Start" xsi:type="lay:DropDownList_t" parameterRef="WaitingOption" initValue="eNow">
                    <lay:ListItem enumID="eNow" uiRep="Now"/>
                    <lay:ListItem enumID="eTime" uiRep="Time"/>
                    <lay:ListItem enumID="ePreOpen" uiRep="Pre-Open"/>
                    <lay:ListItem enumID="eOpen" uiRep="Open"/>
                </lay:Control>
                <lay:Control ID="StartTime_ctrl" parameterRef="STime" xsi:type="lay:Clock_t" initValueMode="1" showMicrosec="true">
                    <flow:StateRule visible="true">
                        <val:Edit field="Start" operator="EQ" value="eTime"/>
                    </flow:StateRule>
                </lay:Control>
            </lay:StrategyPanel>

            <!-- End Time -->
            <lay:StrategyPanel orientation="HORIZONTAL">
                <lay:Control ID="End_label" label="End" xsi:type="lay:Label_t"/>
                <lay:Control ID="End" xsi:type="lay:DropDownList_t" column="3" parameterRef="ParentTIF" initValue="eGTC">
                    <lay:ListItem enumID="eGTC" uiRep="GTC"/>
                    <lay:ListItem enumID="eDay" uiRep="Day"/>
                </lay:Control>
            </lay:StrategyPanel>

        </lay:StrategyPanel>
    </lay:StrategyLayout>

    <val:StrategyEdit errorMessage="Child time in force is not compatible with parent day order">
        <val:Edit logicOperator="OR">
            <val:Edit field="ParentTIF" operator="EQ" value="2"/>
            <val:Edit logicOperator="AND">
                <val:Edit field="ParentTIF" operator="EQ" value="1"/>
                <val:Edit logicOperator="OR">
                    <val:Edit field="ChildTIF" operator="EQ" value="1"/>
                    <val:Edit field="ChildTIF" operator="EQ" value="4"/>
                    <val:Edit field="ChildTIF" operator="EQ" value="5"/>
                </val:Edit>
            </val:Edit>
        </val:Edit>
    </val:StrategyEdit>

</Strategy>
