07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
LATEST ENTRY
CATEGORY
ARCHIVE
PROFILE
SEARCH
RECENT COMMENT
MOBILE
qrcode
OTHERS
<< 【QUICKFIX】 FX自動売買への道 24 【情報系の試験(正常系)】 | top | 【QUICKFIX】 FX自動売買への道 26 【スワップ情報 Roll Rates の取得】 >>
【QUICKFIX】 FX自動売買への道 25 【情報系の試験(準正常系)】

情報系の正常系試験が完了したので、準正常系もやっときます。

 

試験概要(正常系)
 1 レート情報 FULL + NonAggregate:板未加工情報
 2 レート情報 FULL + Aggregate:板加工情報
 3 レート情報 TOP :最適値情報


試験概要(準正常系)
 4 重複要求:同一通貨で再度要求を行う
 5 通貨ペア不正1:スラッシュが抜けている
 6 通貨ペア不正2:対象外通貨ペアを要求
 7 構造不正1:要求情報数と要求情報(BIDとかOFFERとか)がおかしい
 8 構造不正2:通貨数と通貨情報がおかしい



■準正常系のメッセージ確認のためにデバッグ情報を埋め込み(Application.cpp)
tradeclient]# vi Application.cpp
−−−−抜粋ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
        void Application::toApp( FIX::Message& message, const FIX::SessionID& sessionID )
        throw( FIX::DoNotSend )
        {
          try
          {
            FIX::PossDupFlag possDupFlag;
            message.getHeader().getField( possDupFlag );
            if ( possDupFlag ) throw FIX::DoNotSend();
          }
          catch ( FIX::FieldNotFound& ) {}

       if (message.getHeader().getField(FIX::FIELD::MsgType) == FIX::MsgType_MarketDataRequest)
            std::cout << message.toXML() << std::endl;

          std::cout << std::endl << "OUT: " << message << std::endl;
        }

−−−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
< V > MarketDataRequest だったら、XML表示


■コンパイル&実行
tradeclient]# make
tradeclient]# cd ..
examples]# ./tradeclient/tradeclient   tradeclient.cfg

こちらも全文を乗せると大変なのでダイジェストで
(見やすいように一部修正してますよ)

【準正常系】
テスト4 重複要求:同一通貨で再度要求を行う
−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
★        V4
TEST4

(メッセージ構造省略)
     OUT: 8=FIX.4.49=13935=V34=849=CAXDemo_Account_Str52=20160417-22:46:30.54856=CNX146=155=EUR/CHF262=EUR/CHF263=1264=1265=1266=Y267=2269=1269=010=084
     OUT: 8=FIX.4.49=13935=V34=949=CAXDemo_Account_Str52=20160417-22:46:30.55856=CNX146=155=EUR/CHF262=EUR/CHF263=1264=1265=1266=Y267=2269=1269=010=086

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[206]]></field>
            <field number="35"><![CDATA[X]]></field>
            <field number="34"><![CDATA[22]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:30.653]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
            <field number="262"><![CDATA[EUR/CHF]]></field>
            <field number="268"><![CDATA[2]]></field>
            <group>
              <field number="279"><![CDATA[0]]></field>
              <field number="269"><![CDATA[0]]></field>
              <field number="278"><![CDATA[14]]></field>
              <field number="55"><![CDATA[EUR/CHF]]></field>
              <field number="270"><![CDATA[1.09173]]></field>
              <field number="271"><![CDATA[1000000]]></field>
              <field number="346"><![CDATA[1]]></field>
            </group>
            <group>
              <field number="279"><![CDATA[0]]></field>
              <field number="269"><![CDATA[1]]></field>
              <field number="278"><![CDATA[15]]></field>
              <field number="55"><![CDATA[EUR/CHF]]></field>
              <field number="270"><![CDATA[1.0921]]></field>
              <field number="271"><![CDATA[1000000]]></field>
              <field number="346"><![CDATA[1]]></field>
            </group>
          </body>
          <trailer>
            <field number="10"><![CDATA[254]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=20635=X34=2249=CNX52=20160417-22:46:30.65356=CAXDemo_Account_Str262=EUR/CHF268=2279=0269=0278=1455=EUR/CHF270=1.09173271=1000000346=1279=0269=1278=1555=EUR/CHF270=1.0921271=1000000346=110=254

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[121]]></field>
            <field number="35"><![CDATA[Y]]></field>
            <field number="34"><![CDATA[23]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:30.871]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
            <field number="58"><![CDATA[Duplicate subscription request]]></field>
            <field number="262"><![CDATA[EUR/CHF]]></field>
            <field number="281"><![CDATA[1]]></field>
          </body>
          <trailer>
            <field number="10"><![CDATA[022]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=12135=Y34=2349=CNX52=20160417-22:46:30.87156=CAXDemo_Account_Str58=Duplicate subscription request262=EUR/CHF281=110=022

     OUT: 8=FIX.4.49=14035=V34=1049=CAXDemo_Account_Str52=20160417-22:46:31.01256=CNX146=155=EUR/CHF262=EUR/CHF263=2264=1265=1266=Y267=2269=1269=010=105

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[147]]></field>
            <field number="35"><![CDATA[X]]></field>
            <field number="34"><![CDATA[24]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:31.119]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
            <field number="262"><![CDATA[EUR/CHF]]></field>
            <field number="268"><![CDATA[2]]></field>
            <group>
              <field number="279"><![CDATA[2]]></field>
              <field number="269"><![CDATA[0]]></field>
              <field number="278"><![CDATA[14]]></field>
              <field number="55"><![CDATA[EUR/CHF]]></field>
            </group>
            <group>
              <field number="279"><![CDATA[2]]></field>
              <field number="269"><![CDATA[1]]></field>
              <field number="278"><![CDATA[15]]></field>
              <field number="55"><![CDATA[EUR/CHF]]></field>
            </group>
          </body>
          <trailer>
            <field number="10"><![CDATA[096]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=14735=X34=2449=CNX52=20160417-22:46:31.11956=CAXDemo_Account_Str262=EUR/CHF268=2279=2269=0278=1455=EUR/CHF279=2269=1278=1555=EUR/CHF10=096

−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
同一通貨で重複要求なので、
と で同一通貨の要求が重複です。
レート情報が1回来てるけど
で < Y > MarketDataRequestReject − Duplicate subscription request が発生
Reject されたので自動で STOP 要求を投げて
STOP 完了

って流れです。
想定通りかな




テスト5 通貨ペア不正1:スラッシュが抜けている
−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
★        V5
TEST5

(メッセージ構造省略)
     OUT: 8=FIX.4.49=13835=V34=1149=CAXDemo_Account_Str52=20160417-22:46:39.97356=CNX146=155=USDJPY262=USDJPY263=1264=1265=1266=Y267=2269=1269=010=110

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[104]]></field>
            <field number="35"><![CDATA[Y]]></field>
            <field number="34"><![CDATA[25]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:40.067]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
         <field number="58"><![CDATA[Invalid Symbol]]></field>
            <field number="262"><![CDATA[USDJPY]]></field>
            <field number="281"><![CDATA[0]]></field>
          </body>
          <trailer>
            <field number="10"><![CDATA[093]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=10435=Y34=2549=CNX52=20160417-22:46:40.06756=CAXDemo_Account_Str58=Invalid Symbol262=USDJPY281=010=093

(メッセージ構造省略)
     OUT: 8=FIX.4.49=13835=V34=1249=CAXDemo_Account_Str52=20160417-22:46:40.21856=CNX146=155=USDJPY262=USDJPY263=2264=1265=1266=Y267=2269=1269=010=096

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[104]]></field>
            <field number="35"><![CDATA[Y]]></field>
            <field number="34"><![CDATA[26]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:40.318]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
         <field number="58"><![CDATA[Invalid Symbol]]></field>
            <field number="262"><![CDATA[USDJPY]]></field>
            <field number="281"><![CDATA[0]]></field>
          </body>
          <trailer>
            <field number="10"><![CDATA[093]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=10435=Y34=2649=CNX52=20160417-22:46:40.31856=CAXDemo_Account_Str58=Invalid Symbol262=USDJPY281=010=093

−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
通貨ペアの スラッシュ文字が抜けた状態で要求
< Y > Invalid Symbol が返ってきた
Y が来たので、停止要求を自動で投げると
やっぱり通貨ペアのエラー < Y > Invalid Symbol が返って来る
  でも、すでにDBは停止中なので何もしない、と


想定通りの動きです



テスト6 通貨ペア不正2:対象外通貨ペアを要求(インドルピー)
−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
★        V6
TEST6

(メッセージ構造省略)
     OUT: 8=FIX.4.49=14035=V34=1349=CAXDemo_Account_Str52=20160417-22:46:46.41156=CNX146=155=USD/IDR262=USD/IDR263=1264=1265=1266=Y267=2269=1269=010=144

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[119]]></field>
            <field number="35"><![CDATA[Y]]></field>
            <field number="34"><![CDATA[27]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:46.510]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
         <field number="58"><![CDATA[Instrument is not configured]]></field>
            <field number="262"><![CDATA[USD/IDR]]></field>
            <field number="281"><![CDATA[0]]></field>
          </body>
          <trailer>
            <field number="10"><![CDATA[014]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=11935=Y34=2749=CNX52=20160417-22:46:46.51056=CAXDemo_Account_Str58=Instrument is not configured262=USD/IDR281=010=014

(メッセージ構造省略)
     OUT: 8=FIX.4.49=14035=V34=1449=CAXDemo_Account_Str52=20160417-22:46:46.66556=CNX146=155=USD/IDR262=USD/IDR263=2264=1265=1266=Y267=2269=1269=010=157

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[113]]></field>
            <field number="35"><![CDATA[Y]]></field>
            <field number="34"><![CDATA[28]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:46.767]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
         <field number="58"><![CDATA[No active subscription]]></field>
            <field number="262"><![CDATA[USD/IDR]]></field>
            <field number="281"><![CDATA[2]]></field>
          </body>
          <trailer>
            <field number="10"><![CDATA[203]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=11335=Y34=2849=CNX52=20160417-22:46:46.76756=CAXDemo_Account_Str58=No active subscription262=USD/IDR281=210=203

−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
対象外の通貨ペアで要求
< Y > Instrument is not configured が返ってきた
Y が来たので、停止要求を自動で投げると
そもそも開始してないけど? < Y > No active subscription が返って来る
  でも、すでにDBは停止中なので何もしない、と

自動停止要求も Instrument is not configured かと思ったけど、
まぁ開始してないよってエラーも正しい。。
これも想定通りの動きです



テスト7 構造不正1:要求情報数と要求情報(BIDとかOFFERとか)がおかしい
−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
★        V7
TEST7
        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="35"><![CDATA[V]]></field>
            <field number="34"><![CDATA[15]]></field>
            <field number="49"><![CDATA[CAXDemo_Account_Str]]></field>
            <field number="52"><![CDATA[20160417-22:46:56.991]]></field>
            <field number="56"><![CDATA[CNX]]></field>
          </header>
          <body>
            <field number="146"><![CDATA[1]]></field>
            <field number="262"><![CDATA[EUR/GBP]]></field>
            <field number="263"><![CDATA[1]]></field>
            <field number="264"><![CDATA[1]]></field>
            <field number="265"><![CDATA[1]]></field>
            <field number="266"><![CDATA[Y]]></field>
            <field number="267"><![CDATA[2]]></field>
            <group>
              <field number="55"><![CDATA[EUR/GBP]]></field>
            </group>
            <group>
           <field number="269"><![CDATA[0]]></field>
            </group>
            <group>
           <field number="269"><![CDATA[0]]></field>
            </group>
          </body>
          <trailer>
          </trailer>
        </message>
        OUT: 8=FIX.4.49=14035=V34=1549=CAXDemo_Account_Str52=20160417-22:46:56.99156=CNX146=155=EUR/GBP262=EUR/GBP263=1264=1265=1266=Y267=2269=0269=010=147

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[109]]></field>
            <field number="35"><![CDATA[Y]]></field>
            <field number="34"><![CDATA[29]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:57.084]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
         <field number="58"><![CDATA[Invalid entry type]]></field>
            <field number="262"><![CDATA[EUR/GBP]]></field>
            <field number="281"><![CDATA[2]]></field>
          </body>
          <trailer>
            <field number="10"><![CDATA[034]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=10935=Y34=2949=CNX52=20160417-22:46:57.08456=CAXDemo_Account_Str58=Invalid entry type262=EUR/GBP281=210=034

(メッセージ構造省略)
     OUT: 8=FIX.4.49=14035=V34=1649=CAXDemo_Account_Str52=20160417-22:46:57.21456=CNX146=155=EUR/GBP262=EUR/GBP263=2264=1265=1266=Y267=2269=0269=010=138

        <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="9"><![CDATA[113]]></field>
            <field number="35"><![CDATA[Y]]></field>
            <field number="34"><![CDATA[30]]></field>
            <field number="49"><![CDATA[CNX]]></field>
            <field number="52"><![CDATA[20160417-22:46:57.316]]></field>
            <field number="56"><![CDATA[CAXDemo_Account_Str]]></field>
          </header>
          <body>
         <field number="58"><![CDATA[No active subscription]]></field>
            <field number="262"><![CDATA[EUR/GBP]]></field>
            <field number="281"><![CDATA[2]]></field>
          </body>
          <trailer>
            <field number="10"><![CDATA[182]]></field>
          </trailer>
        </message>
     IN: 8=FIX.4.49=11335=Y34=3049=CNX52=20160417-22:46:57.31656=CAXDemo_Account_Str58=No active subscription262=EUR/GBP281=210=182

−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
BID と OFFER のペアのところを、BID + BID で要求
< Y > Invalid entry type が返ってきた
Y が来たので、停止要求を自動で投げると
そもそも開始してないけど? < Y > No active subscription が返って来る
  でも、すでにDBは停止中なので何もしない、と

まぁ想定通りの動きです




テスト8 構造不正2:通貨数と通貨情報がおかしい
−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
★        V8
TEST8
        Message Not Sent: Field not found

−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
え?
メッセージがおかしいってことかな?

とりあえず、メッセージ構造を表示できるようにしときましょ
tradeclient]# vi MarketDataRequest.cpp
ーーーー超抜粋ーーーーーーーーーーーーーーーーーーーーー

        std::cout << "TEST8: " << message.toXML() << std::endl;

          InsertMarketDataRequest( message );

          FIX::Session::sendToTarget( message, m_sendercomp_ratefeedID, m_targetcompID );
        }

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
〜信処理の前に XML で表示してみる
で、コンパイル&実行

−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
        V8

        TEST8: <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="35"><![CDATA[V]]></field>
          </header>
          <body>
         <field number="55"><![CDATA[GBP/USD]]></field>
         <field number="146"><![CDATA[1]]></field>

            <field number="262"><![CDATA[GBP/USD]]></field>
            <field number="263"><![CDATA[1]]></field>
            <field number="264"><![CDATA[1]]></field>
            <field number="265"><![CDATA[1]]></field>
            <field number="266"><![CDATA[Y]]></field>
            <field number="267"><![CDATA[2]]></field>
            <group>
              <field number="269"><![CDATA[1]]></field>
            </group>
            <group>
              <field number="269"><![CDATA[0]]></field>
            </group>
          </body>
          <trailer>
          </trailer>
        </message>
     Message Not Sent: Field not found

−−−−ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Symbol 通貨ペアと
Symbol 通貨ペア数

試験仕様に書かれてた通りのメッセージになってますが

        Message Not Sent: Field not found
ってエラーになってますね。

< V > MarketDataRequest の必須フィールドがないってことか?
設定ファイルに指定してある XMLを確認すると

examples]# grep DataDictionary  tradeclient.cfg
        UseDataDictionary=Y
        DataDictionary=../spec/FIX44.xml



examples]# vi ../spec/FIX44.xml
ーーー抜粋ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
          <message name='MarketDataRequest' msgcat='app' msgtype='V'>
★         <field name='MDReqID' required='Y' />
★         <field name='SubscriptionRequestType' required='Y' />
★         <field name='MarketDepth' required='Y' />
           <field name='MDUpdateType' required='N' />
           <field name='AggregatedBook' required='N' />
           <field name='OpenCloseSettlFlag' required='N' />
           <field name='Scope' required='N' />
           <field name='MDImplicitDelete' required='N' />
★         <component name='MDReqGrp' required='Y' />
★         <component name='InstrmtMDReqGrp' required='Y' />
           <component name='TrdgSesGrp' required='N' />
           <field name='ApplQueueAction' required='N' />
           <field name='ApplQueueMax' required='N' />
          </message>

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
★ が必須

コンポーネント 「MDReqGrp」はこんな定義
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
          <component name='MDReqGrp'>
★         <group name='NoMDEntryTypes' required='Y'>
★          <field name='MDEntryType' required='Y' />
           </group>
          </component>

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


コンポーネント 「InstrmtMDReqGrp」はこんな定義
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
          <component name='InstrmtMDReqGrp'>
★         <group name='NoRelatedSym' required='Y'>
★          <component name='Instrument' required='Y' />
            <component name='UndInstrmtGrp' required='N' />
            <component name='InstrmtLegGrp' required='N' />
           </group>
          </component>

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

コンポーネント 「Instrument」はこんな定義
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
          <component name='Instrument'>
           <field name='Symbol' required='N' />
           <field name='SymbolSfx' required='N' />
           <field name='SecurityID' required='N' />
           <field name='SecurityIDSource' required='N' />
           <component name='SecAltIDGrp' required='N' />
           <field name='Product' required='N' />
           <field name='CFICode' required='N' />
           <field name='SecurityType' required='N' />
           <field name='SecuritySubType' required='N' />
           <field name='MaturityMonthYear' required='N' />
           <field name='MaturityDate' required='N' />
           <field name='PutOrCall' required='N' />
           <field name='CouponPaymentDate' required='N' />
           <field name='IssueDate' required='N' />
           <field name='RepoCollateralSecurityType' required='N' />
           <field name='RepurchaseTerm' required='N' />
           <field name='RepurchaseRate' required='N' />
           <field name='Factor' required='N' />
           <field name='CreditRating' required='N' />
           <field name='InstrRegistry' required='N' />
           <field name='CountryOfIssue' required='N' />
           <field name='StateOrProvinceOfIssue' required='N' />
           <field name='LocaleOfIssue' required='N' />
           <field name='RedemptionDate' required='N' />
           <field name='StrikePrice' required='N' />
           <field name='StrikeCurrency' required='N' />
           <field name='OptAttribute' required='N' />
           <field name='ContractMultiplier' required='N' />
           <field name='CouponRate' required='N' />
           <field name='SecurityExchange' required='N' />
           <field name='Issuer' required='N' />
           <field name='EncodedIssuerLen' required='N' />
           <field name='EncodedIssuer' required='N' />
           <field name='SecurityDesc' required='N' />
           <field name='EncodedSecurityDescLen' required='N' />
           <field name='EncodedSecurityDesc' required='N' />
           <field name='Pool' required='N' />
           <field name='ContractSettlMonth' required='N' />
           <field name='CPProgram' required='N' />
           <field name='CPRegType' required='N' />
           <component name='EvntGrp' required='N' />
           <field name='DatedDate' required='N' />
           <field name='InterestAccrualDate' required='N' />
          </component>

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

必須の★のフィールド番号を調べると
  <field number='262' name='MDReqID' type='STRING' />
  <field number='263' name='SubscriptionRequestType' type='CHAR'>
  <field number='264' name='MarketDepth' type='INT' />
  <field number='267' name='NoMDEntryTypes' type='NUMINGROUP' />
  <field number='269' name='MDEntryType' type='CHAR'>
  <field number='146' name='NoRelatedSym' type='NUMINGROUP' />



もう一度送信しようとしたメッセージを見てみると
        TEST8: <message>
          <header>
            <field number="8"><![CDATA[FIX.4.4]]></field>
            <field number="35"><![CDATA[V]]></field>
          </header>
          <body>
            <field number="55"><![CDATA[GBP/USD]]></field>
★          <field number="146"><![CDATA[1]]></field>
★          <field number="262"><![CDATA[GBP/USD]]></field>
★          <field number="263"><![CDATA[1]]></field>
★          <field number="264"><![CDATA[1]]></field>
            <field number="265"><![CDATA[1]]></field>
            <field number="266"><![CDATA[Y]]></field>
★          <field number="267"><![CDATA[2]]></field>
            <group>
★            <field number="269"><![CDATA[1]]></field>
            </group>
            <group>
★            <field number="269"><![CDATA[0]]></field>
            </group>
          </body>
          <trailer>
          </trailer>
        </message>



うーん。。
必須は全部あるんだけどなぁ

しいて言えば 146が type グループ内の個数(Num In Group)って
  <field number='146' name='NoRelatedSym' type='NUMINGROUP' />
なってるけど、グループとして組み立ててないからエラーってことかな


まぁ試験仕様書は機能がなければテストしなくてもイイヨって書いてるから、
テスト8はパスってことにしときましょ
・・だって、送れないし・・


−−−−
以上
準正常系の試験も終了です



 
まこ | FIX | 22:30 | comments(0) | trackbacks(0) |
スポンサーサイト
スポンサードリンク | - | 22:30 | - | - |
Comment









Trackback
URL: