コードジェネレーター

コードジェネレーターの使用方法


カスタムタグ作成方法


  • 作成方法
必要なカスタムタグを、データディクショナリ(FIX4X.xml)のフィールド欄に追加する。
追加したフィールドを、使用するコンポーネント、メッセージに登録する。
  ※下の変更点を参照
+コードジェネレータ(![[QuickFix]]/Jで定義されているクラス)で、カスタムタグが反映されたJarファイルを生成する。
 -作成手順は、下記参照。添付ファイルに!CodeGenerateを行うプロジェクトの圧縮ファイルを置く
  • 変更点
+!OrderTypeへ指し成り、引け成り追加
{{{
#!textile
     <field number="40" name="OrdType" type="CHAR">
        <value enum="1" description="MARKET"/>
        <value enum="2" description="LIMIT"/>
        <value enum="3" description="STOP"/>
        <value enum="4" description="STOP_LIMIT"/>
        <value enum="5" description="MARKET_ON_CLOSE"/>
        <value enum="6" description="WITH_OR_WITHOUT"/>
        <value enum="7" description="LIMIT_OR_BETTER"/>
        <value enum="8" description="LIMIT_WITH_OR_WITHOUT"/>
        <value enum="9" description="ON_BASIS"/>
        <value enum="A" description="ON_CLOSE"/>
        <value enum="B" description="LIMIT_ON_CLOSE"/>
        <value enum="C" description="FOREX_MARKET"/>
        <value enum="D" description="PREVIOUSLY_QUOTED"/>
        <value enum="E" description="PREVIOUSLY_INDICATED"/>
        <value enum="F" description="FOREX_LIMIT"/>
        <value enum="G" description="FOREX_SWAP"/>
        <value enum="H" description="FOREX_PREVIOUSLY_QUOTED"/>
        <value enum="I" description="FUNARI"/>
        <value enum="J" description="MARKET_IF_TOUCHED"/>
        <value enum="P" description="PEGGED"/>
      ◎<value enum="y" description="SASHI_NARI"/>
      ◎<value enum="z" description="HIKE_NARI"/>
     </field>
}}}
 0. !SecurityStatusメッセージの!SecurityTradingStatusにFIX4.4で使用できる値を追加。また、フ(100)、ト(101)、コ(102)も追加
{{{
#!textile
     <field number="326" name="SecurityTradingStatus" type="INT">
        <value enum="1" description="OPENING_DELAY"/>
        <value enum="2" description="TRADING_HALT"/>
        <value enum="3" description="RESUME"/>
        <value enum="4" description="NO_OPENNO_RESUME"/>
        <value enum="5" description="PRICE_INDICATION"/>
        <value enum="6" description="TRADING_RANGE_INDICATION"/>
        <value enum="7" description="MARKET_IMBALANCE_BUY"/>
        <value enum="8" description="MARKET_IMBALANCE_SELL"/>
        <value enum="9" description="MARKET_ON_CLOSE_IMBALANCE_BUY"/>
        <value enum="10" description="MARKET_ON_CLOSE_IMBALANCE_SELL"/>
        <value enum="12" description="NO_MARKET_IMBALANCE"/>
        <value enum="13" description="NO_MARKET_ON_CLOSE_IMBALANCE"/>
        <value enum="14" description="ITS_PREOPENING"/>
        <value enum="15" description="NEW_PRICE_INDICATION"/>
        <value enum="16" description="TRADE_DISSEMINATION_TIME"/>
        <value enum="17" description="READY_TO_TRADE"/>
        <value enum="18" description="NOT_AVAILABLE_FOR_TRADING"/>
        <value enum="19" description="NOT_TRADED_ON_THIS_MARKET"/>
        <value enum="20" description="UNKNOWN_OR_INVALID"/>
      ◎<value enum="21" description="PRE_OPEN"/>
      ◎<value enum="22" description="OPENING_ROTATION"/>
      ◎<value enum="23" description="FAST_MARKET"/>
      ◎<value enum="100" description="ORDER_LACK"/>
      ◎<value enum="101" description="SPECIAL_SIGN"/>
      ◎<value enum="102" description="WARNING_POINT"/>
     </field>
}}}
 0. !OpenCloseSettleFlagに3(Expected)を追加
{{{
#!textile
     <field number="286" name="OpenCloseSettleFlag" type="CHAR">
        <value enum="0" description="DAILY_OPEN_CLOSE__SETTLEMENT_PRICE"/>
        <value enum="1" description="SESSION_OPEN_CLOSE__SETTLEMENT_PRICE"/>
        <value enum="2" description="DELIVERY_SETTLEMENT_PRICE"/>
      ◎<value enum="3" description="EXPECTED"/>
     </field>
}}}
 0. MDEntryTypeに'''W,X,Y,Z'''を追加
{{{
#!textile
     <field number="269" name="MDEntryType" type="CHAR">
        <value enum="0" description="BID"/>
        <value enum="1" description="OFFER"/>
        <value enum="2" description="TRADE"/>
        <value enum="3" description="INDEX_VALUE"/>
        <value enum="4" description="OPENING_PRICE"/>
        <value enum="5" description="CLOSING_PRICE"/>
        <value enum="6" description="SETTLEMENT_PRICE"/>
        <value enum="7" description="TRADING_SESSION_HIGH_PRICE"/>
        <value enum="8" description="TRADING_SESSION_LOW_PRICE"/>
        <value enum="9" description="TRADING_SESSION_VWAP_PRICE"/>
      ◎<value enum="W" description="MARKET_ORDER_BUY"/>
      ◎<value enum="X" description="MARKET_ORDER_SELL"/>
      ◎<value enum="Y" description="TOTAL_BUY_BOOK"/>
      ◎<value enum="Z" description="TOTAL_SELL_BOOK"/>
     </field>
}}}
 0. カスタムタグ10044(!LocalTransactTime)を追加
{{{
#!textile
まず、カスタムタグ10044(LocalTransactTime)を定義
     ◎<field number="10044" name="LocalTransactTime" type="UTCTIMESTAMP" />
その後
「執行レポート」タグに10044タグを追加
       <message name="ExecutionReport" msgtype="8" msgcat="app">
        <field name="OrderID" required="Y"/>
        <field name="SecondaryOrderID" required="N"/>
        <field name="ClOrdID" required="N"/>
              (省略)
        <field name="TransactTime" required="N"/>
      ◎<field name="LocalTransactTime" required="N"/>
              (省略)
       </message>
「取り消し拒否」タグに10044タグを追加
     <message name="OrderCancelReject" msgtype="9" msgcat="app">
        <field name="OrderID" required="Y"/>
        <field name="SecondaryOrderID" required="N"/>
        <field name="ClOrdID" required="Y"/>
        <field name="OrigClOrdID" required="Y"/>
        <field name="OrdStatus" required="Y"/>
        <field name="ClientID" required="N"/>
        <field name="ExecBroker" required="N"/>
        <field name="ListID" required="N"/>
        <field name="Account" required="N"/>
        <field name="TransactTime" required="N"/>
      ◎<field name="LocalTransactTime" required="N"/>
        <field name="CxlRejResponseTo" required="Y"/>
        <field name="CxlRejReason" required="N"/>
        <field name="Text" required="N"/>
        <field name="EncodedTextLen" required="N"/>
        <field name="EncodedText" required="N"/>
     </message>

}}}
 0. カスタムタグ6209(ClRefID)を追加
{{{
#!textile
まず、カスタムタグ6209(ClRefID)を定義
     ◎<field number="6209" name="ClRefId" type="STRING" />
その後
「執行レポート」タグに6209タグを追加
       <message name="ExecutionReport" msgtype="8" msgcat="app">
        <field name="OrderID" required="Y"/>
        <field name="SecondaryOrderID" required="N"/>
        <field name="ClOrdID" required="N"/>
              (省略)
        <field name="TransactTime" required="N"/>
        <field name="LocalTransactTime" required="N"/>
      ◎<filed name="ClRefId" required="N"/>
              (省略)
       </message>
「シングル新規発注」タグに6209タグを追加
     <message name="NewOrderSingle" msgtype="D" msgcat="app">
        <field name="ClOrdID" required="Y"/>
        <field name="ClientID" required="N"/>
              (省略)
        <field name="ClearingAccount" required="N"/>
      ◎<field name="ClRefId" required="N"/>
     </message>
}}}
!CodeGenerat(添付ファイルのプロジェクト)の使用方法
{{{
1. このページの添付ファイルをローカルマシンに落とす。

2. ファイルをEclipseへインポートする。(インポート方法はEclipseの使用方法を参照)

3. CodeGenerate - spec に変更した Fix42.xml ファイルを置く(更新する)

4. build.xmlを実行する。その時のタスクは、clean -> jar

※CodeGenerate - readme.txt を参照すること。
}}}




最終更新:2009年05月27日 06:01