2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【QuickFIX】06 独自メッセージ仕様

Last updated at Posted at 2017-04-17

CNEXからもらった仕様書をみると標準quickfixの FIX44 にはない
メッセージ仕様がいっぱいあるので、とりあえず対応

本体側で3ファイル

1/3 FixFieldNumbers.h(差分)

quickfix/src/C++/FixFieldNumbers.h
・・・
     const int StreamAsgnAckType = 1503;
     const int RelSymTransactTime = 1504;
     const int StreamAsgnType = 1617;
+
+    const int PartyDetailsListRequestID = 1505;   // C-NEX
+    const int PartyDetailsListReportID = 1510;    // C-NEX
+    const int PartyDetailsRequestResult = 1511;   // C-NEX
+    const int NoPartyList = 1513;                 // C-NEX
+    const int BelowMin = 7530;                    // C-NEX
+    const int StopSide = 7534;                    // C-NEX
+    const int IFDThenType = 7535;                 // C-NEX
+    const int IFDThenSide = 7536;                 // C-NEX
+    const int IFDThenPrStopRate = 7537;           // C-NEX
+    const int IFDThenPrLimitRate = 7538;          // C-NEX
+    const int IFDThenPrStopSide = 7539;           // C-NEX
+    const int OCOLeg1LimitRate = 7540;            // C-NEX
+    const int OCOLeg2Type = 7541;                 // C-NEX
+    const int OCOLeg2StopRate = 7542;             // C-NEX
+    const int OCOLeg2StopSide = 7543;             // C-NEX
+    const int OCOLeg2StopLimitRate = 7544;        // C-NEX
+    const int IFDFillSide = 7545;                 // C-NEX
+    const int OCOLegID = 7546;                    // C-NEX
+    const int IFDIfOrdStatus = 7547;              // C-NEX
+    const int OCOLeg1AvgPx = 7548;                // C-NEX
+    const int OCOLeg1CumQty = 7549;               // C-NEX
+    const int OCOLeg2AvgPx = 7550;                // C-NEX
+    const int OCOLeg2CumQty = 7551;               // C-NEX
+    const int IFDCancelType = 7552;               // C-NEX
+    const int OCOLeg2Side = 7553;                 // C-NEX
+    const int IFDThenAvgPx = 7554;                // C-NEX
+    const int IFDThenCumQty = 7555;               // C-NEX
+    const int IFDThenPrLeavesQty = 7556;          // C-NEX
+    const int ExpireSeconds = 7558;               // C-NEX
+    const int OpenOrders = 7559;                  // C-NEX
+    const int IFDIfType = 7569;                   // C-NEX
+    const int IFDIfStopRate = 7570;               // C-NEX
+    const int TrailBy = 7587;                     // C-NEX
+    const int MaxSlippage = 7588;                 // C-NEX
+    const int InitialTriggerRate = 7589;          // C-NEX
+    const int PartyDetailsType = 7593;            // C-NEX
+    const int TradeRealizedPL = 8018;             // C-NEX
+
   }
 }
 #endif //FIX_FIELDNUMBERS_H

2/3 FixFields.h(差分)

quickfix/src/C++/FixFields.h
・・・
   DEFINE_INT(StreamAsgnAckType);
   DEFINE_UTCTIMESTAMP(RelSymTransactTime);
   DEFINE_INT(StreamAsgnType);
+
+  DEFINE_STRING(PartyDetailsListRequestID);    // C-NEX 1505
+  DEFINE_STRING(PartyDetailsListReportID);     // C-NEX 1510
+  DEFINE_CHAR(PartyDetailsRequestResult);      // C-NEX 1511
+  DEFINE_NUMINGROUP(NoPartyList);              // C-NEX 1513
+  DEFINE_BOOLEAN(BelowMin);                    // C-NEX 7530
+  DEFINE_CHAR(StopSide);                       // C-NEX 7534
+  DEFINE_CHAR(IFDThenType);                    // C-NEX 7535
+  DEFINE_CHAR(IFDThenSide);                    // C-NEX 7536
+  DEFINE_PRICE(IFDThenPrStopRate);             // C-NEX 7537
+  DEFINE_PRICE(IFDThenPrLimitRate);            // C-NEX 7538
+  DEFINE_CHAR(IFDThenPrStopSide);              // C-NEX 7539
+  DEFINE_PRICE(OCOLeg1LimitRate);              // C-NEX 7540
+  DEFINE_CHAR(OCOLeg2Type);                    // C-NEX 7541
+  DEFINE_PRICE(OCOLeg2StopRate);               // C-NEX 7542
+  DEFINE_CHAR(OCOLeg2StopSide);                // C-NEX 7543
+  DEFINE_PRICE(OCOLeg2StopLimitRate);          // C-NEX 7544
+  DEFINE_CHAR(IFDFillSide);                    // C-NEX 7545
+  DEFINE_CHAR(OCOLegID);                       // C-NEX 7546
+  DEFINE_CHAR(IFDIfOrdStatus);                 // C-NEX 7547
+  DEFINE_PRICE(OCOLeg1AvgPx);                  // C-NEX 7548
+  DEFINE_QTY(OCOLeg1CumQty);                   // C-NEX 7549
+  DEFINE_PRICE(OCOLeg2AvgPx);                  // C-NEX 7550
+  DEFINE_QTY(OCOLeg2CumQty);                   // C-NEX 7551
+  DEFINE_CHAR(IFDCancelType);                  // C-NEX 7552
+  DEFINE_CHAR(OCOLeg2Side);                    // C-NEX 7553
+  DEFINE_PRICE(IFDThenAvgPx);                  // C-NEX 7554
+  DEFINE_QTY(IFDThenCumQty);                   // C-NEX 7555
+  DEFINE_QTY(IFDThenPrLeavesQty);              // C-NEX 7556
+  DEFINE_INT(ExpireSeconds);                   // C-NEX 7558
+  DEFINE_BOOLEAN(OpenOrders);                  // C-NEX 7559
+  DEFINE_CHAR(IFDIfType);                      // C-NEX 7569
+  DEFINE_PRICE(IFDIfStopRate);                 // C-NEX 7570
+  DEFINE_PRICE(TrailBy);                       // C-NEX 7587
+  DEFINE_FLOAT(MaxSlippage);                   // C-NEX 7588
+  DEFINE_PRICE(InitialTriggerRate);            // C-NEX 7589
+  DEFINE_CHAR(PartyDetailsType);               // C-NEX 7593
+  DEFINE_PRICE(TradeRealizedPL);               // C-NEX 8018
+
 }
 #endif //FIX_FIELDS_H

3/3 FixValues.h(差分)

quickfix/src/C++/FixValues.h
・・・
   const int StreamAsgnType_ASSIGNMENT = 1;
   const int StreamAsgnType_REJECTED = 2;
   const int StreamAsgnType_TERMINATE_UNASSIGN = 3;
+
+  const int PartyDetailsRequestResult_VALID_REQUEST = 0;                   // C-NEX
+  const int PartyDetailsRequestResult_INVALID_OR_UNSUPPORTED_REQUEST = 1;  // C-NEX
+  const char BelowMin_NO = 'N';                   // C-NEX
+  const char BelowMin_YES = 'Y';                  // C-NEX
+  const char StopSide_BID = '1';                  // C-NEX
+  const char StopSide_OFFER = '2';                // C-NEX
+  const char IFDThenType_STOP = '3';              // C-NEX
+  const char IFDThenType_STOP_LIMIT = '4';        // C-NEX
+  const char IFDThenType_LIMIT = 'F';             // C-NEX
+  const char IFDThenType_OCO = 'W';               // C-NEX
+  const char IFDThenSide_BUY = '1';               // C-NEX
+  const char IFDThenSide_SELL = '2';              // C-NEX
+  const char IFDThenPrStopSide_BID = '1';         // C-NEX
+  const char IFDThenPrStopSide_OFFER = '2';       // C-NEX
+  const char OCOLeg2Type_STOP = '3';              // C-NEX
+  const char OCOLeg2Type_STOP_LIMIT = '4';        // C-NEX
+  const char OCOLeg2StopSide_BID = '1';           // C-NEX
+  const char OCOLeg2StopSide_OFFER = '2';         // C-NEX
+  const char IFDFillSide_IF = '1';                // C-NEX
+  const char IFDFillSide_THEN = '2';              // C-NEX
+  const char IFDIfOrdStatus_New = '0';            // C-NEX
+  const char IFDIfOrdStatus_PartialFill = '1';    // C-NEX
+  const char IFDIfOrdStatus_Fill = '2';           // C-NEX
+  const char IFDIfOrdStatus_Canceled = '4';       // C-NEX
+  const char IFDIfOrdStatus_Expired = 'C';        // C-NEX
+  const char IFDCancelType_PartialCancel = '0';   // C-NEX
+  const char IFDCancelType_CompleteCancel = '1';  // C-NEX
+  const char OCOLeg2Side_BUY = '1';               // C-NEX
+  const char OCOLeg2Side_SELL = '2';              // C-NEX
+  const char OpenOrders_NO = 'N';                 // C-NEX
+  const char OpenOrders_YES = 'Y';                // C-NEX
+  const char IFDIfType_STOP = '3';                // C-NEX
+  const char IFDIfType_STOP_LIMIT = '4';          // C-NEX
+  const char IFDIfType_MARKET = 'C';              // C-NEX
+  const char IFDIfType_LIMIT = 'F';               // C-NEX
+  const char PartyDetailsType_AccountUpdate = '1';                         // C-NEX
+  const char PartyDetailsType_SellOutTriggered = '3';                      // C-NEX
+  const char PartyDetailsType_AccountDisabled = '4';                       // C-NEX
+  const char PartyDetailsType_BR_RolloverComplete = '5';                   // C-NEX
+  const char PartyDetailsType_MarginRollerComplete = '8';                  // C-NEX
+
+  const int BusinessRejectReason_TRADE_TIMED_OUT = 6;   // C-NEX
+  const int BusinessRejectReason_TRADE_LOCKED = 7;      // C-NEX
+  const char SubscriptionRequestType_UNSUBSCRIBE = '2'; // C-NEX
+  const char MarketDepth_FULL_BOOK = '0';               // C-NEX
+  const char MarketDepth_TOP_OF_BOOK = '1';             // C-NEX
+  const char OrdType_CNEX_MARKET = 'C';                 // C-NEX
+  const char OrdType_CNEX_MARKET_SLIPPAGE = 'T';        // C-NEX
+  const char OrdType_CNEX_LIMIT = 'F';                  // C-NEX
+  const char OrdType_CNEX_DISCRETIONARY = 'R';          // C-NEX
+  const char OrdType_CNEX_TRAILING_STOP = 'V';          // C-NEX
+  const char OrdType_CNEX_OCO = 'W';                    // C-NEX
+  const char OrdType_CNEX_IFD = 'X';                    // C-NEX
+  const char OrdType_CNEX_IFD_OCO = 'Y';                // C-NEX
+  const char TimeInForce_GOOD_FOR_SECONDS = 'X';        // C-NEX
+  const char OrdStatus_PartialCanceled = 'D';           // C-NEX
+  const char OCOLegId_Leg1 = '1';                       // C-NEX
+  const char OCOLegId_Leg2 = '2';                       // C-NEX
+  const int MassStatusReqType_STATUS_ALL_ORDERS = 8;    // C-NEX
+  const char FinancialStatus_DISABLED = '1';            // C-NEX
+  const char FinancialStatus_ACTIVE = '3';              // C-NEX
+  const int AccountType_Margin_Account_NET = 1;         // C-NEX
+  const int AccountType_Margin_Account_Hedge = 2;       // C-NEX
+  const int AccountType_Institutional_Account_Credit = 3;       // C-NEX
+  const char PosType_OPEN_POSITION[] = "OPN";           // C-NEX
+  const char PosType_CLOSE_POSITION[] = "CLS";          // C-NEX
+  const int CollStatus_JOURNAL_ENTRY = 3;               // C-NEX
+  const int QtyType_DEPOSIT = 10;                       // C-NEX
+  const int QtyType_WITHDRAWAL = 11;                    // C-NEX
+  const int QtyType_INTEREST = 12;                      // C-NEX
+  const int QtyType_ROLL = 13;                          // C-NEX
+  const int QtyType_PROFIT_AND_LOSS = 14;               // C-NEX
+  const int QtyType_HOUSE_COMMISSION = 15;              // C-NEX
+  const int QtyType_IB_COMMISSION = 16;                 // C-NEX
+  const int QtyType_MONEY_MANAGER_COMMISSION = 17;      // C-NEX
+  const int QtyType_COLLATERAL = 18;                    // C-NEX
+
   }
   #endif //FIX_VALUES_H

#FIX4.4の仕様に追加
11ファイル

1/11 CollateralResponse.h(差分)

quickfix/src/C++/fix44/CollateralResponse.h
・・・
     FIELD_SET(*this, FIX::Text);
     FIELD_SET(*this, FIX::EncodedTextLen);
     FIELD_SET(*this, FIX::EncodedText);
+    FIELD_SET(*this, FIX::FinancialStatus);    // C-NEX 291
   };

 }

2/11 ExecutionReport.h(差分)

quickfix/src/C++/fix44/ExecutionReport.h
・・・
       FIELD_SET(*this, FIX::MiscFeeType);
       FIELD_SET(*this, FIX::MiscFeeBasis);
     };
+
+    FIELD_SET(*this, FIX::BelowMin);            // C-NEX 7530
+    FIELD_SET(*this, FIX::StopSide);            // C-NEX 7534
+    FIELD_SET(*this, FIX::IFDIfOrdStatus);      // C-NEX 7547
+    FIELD_SET(*this, FIX::IFDIfType);           // C-NEX 7569
+    FIELD_SET(*this, FIX::IFDThenType);         // C-NEX 7535
+    FIELD_SET(*this, FIX::IFDThenSide);         // C-NEX 7536
+    FIELD_SET(*this, FIX::IFDIfStopRate);       // C-NEX 7570
+    FIELD_SET(*this, FIX::IFDThenPrStopRate);   // C-NEX 7537
+    FIELD_SET(*this, FIX::IFDThenPrLimitRate);  // C-NEX 7538
+    FIELD_SET(*this, FIX::IFDThenPrStopSide);   // C-NEX 7539
+    FIELD_SET(*this, FIX::IFDThenAvgPx);        // C-NEX 7554
+    FIELD_SET(*this, FIX::IFDThenCumQty);       // C-NEX 7555
+    FIELD_SET(*this, FIX::IFDThenPrLeavesQty);  // C-NEX 7556
+    FIELD_SET(*this, FIX::OCOLeg1LimitRate);    // C-NEX 7540
+    FIELD_SET(*this, FIX::OCOLeg2Type);         // C-NEX 7541
+    FIELD_SET(*this, FIX::OCOLeg2Side);         // C-NEX 7553
+    FIELD_SET(*this, FIX::OCOLeg2StopRate);     // C-NEX 7542
+    FIELD_SET(*this, FIX::OCOLeg2StopSide);     // C-NEX 7543
+    FIELD_SET(*this, FIX::OCOLeg2StopLimitRate);        // C-NEX 7544
+    FIELD_SET(*this, FIX::IFDFillSide);         // C-NEX 7545
+    FIELD_SET(*this, FIX::OCOLegID);            // C-NEX 7546
+    FIELD_SET(*this, FIX::OCOLeg1AvgPx);        // C-NEX 7548
+    FIELD_SET(*this, FIX::OCOLeg1CumQty);       // C-NEX 7549
+    FIELD_SET(*this, FIX::OCOLeg2AvgPx);        // C-NEX 7550
+    FIELD_SET(*this, FIX::OCOLeg2CumQty);       // C-NEX 7551
+    FIELD_SET(*this, FIX::TrailBy);             // C-NEX 7587
+    FIELD_SET(*this, FIX::MaxSlippage);         // C-NEX 7588
+    FIELD_SET(*this, FIX::InitialTriggerRate);  // C-NEX 7589
   };

 }

3/11 ListStatus.h(差分)

quickfix/src/C++/fix44/ListStatus.h
@@ -47,7 +47,23 @@ namespace FIX44
     class NoOrders: public FIX::Group
     {
     public:
-    NoOrders() : FIX::Group(73,11,FIX::message_order(11,526,14,39,636,151,84,6,103,58,354,355,0)) {}
+    NoOrders() : FIX::Group(73,11,FIX::message_order(11,526,14,39,636,151,84,6,103,58,354,355
+    ,59         // C-NEX
+    ,432        // C-NEX
+    ,126        // C-NEX
+    ,37         // C-NEX
+    ,55         // C-NEX
+    ,54         // C-NEX
+    ,40         // C-NEX
+    ,7547       // C-NEX
+    ,7554       // C-NEX
+    ,7555       // C-NEX
+    ,7556       // C-NEX
+    ,7548       // C-NEX
+    ,7549       // C-NEX
+    ,7550       // C-NEX
+    ,7551       // C-NEX
+    ,0)) {}
       FIELD_SET(*this, FIX::ClOrdID);
       FIELD_SET(*this, FIX::SecondaryClOrdID);
       FIELD_SET(*this, FIX::CumQty);
@@ -60,6 +76,21 @@ namespace FIX44
       FIELD_SET(*this, FIX::Text);
       FIELD_SET(*this, FIX::EncodedTextLen);
       FIELD_SET(*this, FIX::EncodedText);
+      FIELD_SET(*this, FIX::TimeInForce);               // C-NEX 59
+      FIELD_SET(*this, FIX::ExpireDate);                // C-NEX 432
+      FIELD_SET(*this, FIX::ExpireTime);                // C-NEX 126
+      FIELD_SET(*this, FIX::OrderID);                   // C-NEX 37
+      FIELD_SET(*this, FIX::Symbol);                    // C-NEX 55
+      FIELD_SET(*this, FIX::Side);                      // C-NEX 54
+      FIELD_SET(*this, FIX::OrdType);                   // C-NEX 40
+      FIELD_SET(*this, FIX::IFDIfOrdStatus);            // C-NEX 7547
+      FIELD_SET(*this, FIX::IFDThenAvgPx);              // C-NEX 7554
+      FIELD_SET(*this, FIX::IFDThenCumQty);             // C-NEX 7555
+      FIELD_SET(*this, FIX::IFDThenPrLeavesQty);        // C-NEX 7556
+      FIELD_SET(*this, FIX::OCOLeg1AvgPx);              // C-NEX 7548
+      FIELD_SET(*this, FIX::OCOLeg1CumQty);             // C-NEX 7549
+      FIELD_SET(*this, FIX::OCOLeg2AvgPx);              // C-NEX 7550
+      FIELD_SET(*this, FIX::OCOLeg2CumQty);             // C-NEX 7551
     };
   };

4/11 NewOrderSingle.h(差分)

quickfix/src/C++/fix44/NewOrderSingle.h
・・・
     FIELD_SET(*this, FIX::MoneyLaunderingStatus);
     FIELD_SET(*this, FIX::RegistID);
     FIELD_SET(*this, FIX::Designation);
+
+    FIELD_SET(*this, FIX::ExpireSeconds);       // C-NEX 7558
+    FIELD_SET(*this, FIX::StopSide);            // C-NEX 7534
+    FIELD_SET(*this, FIX::IFDIfType);           // C-NEX 7569
+    FIELD_SET(*this, FIX::IFDThenType);         // C-NEX 7535
+    FIELD_SET(*this, FIX::IFDThenSide);         // C-NEX 7536
+    FIELD_SET(*this, FIX::IFDIfStopRate);       // C-NEX 7570
+    FIELD_SET(*this, FIX::IFDThenPrStopRate);   // C-NEX 7537
+    FIELD_SET(*this, FIX::IFDThenPrLimitRate);  // C-NEX 7538
+    FIELD_SET(*this, FIX::IFDThenPrStopSide);   // C-NEX 7539
+    FIELD_SET(*this, FIX::OCOLeg1LimitRate);    // C-NEX 7540
+    FIELD_SET(*this, FIX::OCOLeg2Type);         // C-NEX 7541
+    FIELD_SET(*this, FIX::OCOLeg2Side);         // C-NEX 7553
+    FIELD_SET(*this, FIX::OCOLeg2StopRate);     // C-NEX 7542
+    FIELD_SET(*this, FIX::OCOLeg2StopSide);     // C-NEX 7543
+    FIELD_SET(*this, FIX::OCOLeg2StopLimitRate);        // C-NEX 7544
+    FIELD_SET(*this, FIX::TrailBy);             // C-NEX 7587
+    FIELD_SET(*this, FIX::MaxSlippage);         // C-NEX 7588
+    FIELD_SET(*this, FIX::InitialTriggerRate);  // C-NEX 7589
   };

 }

5/11 OrderCancelReject.h(差分)

quickfix/src/C++/fix44/OrderCancelReject.h
・・・
     FIELD_SET(*this, FIX::Text);
     FIELD_SET(*this, FIX::EncodedTextLen);
     FIELD_SET(*this, FIX::EncodedText);
+    FIELD_SET(*this, FIX::NoPartyIDs);          // C-NEX 453
+    class NoPartyIDs: public FIX::Group
+    {
+    public:
+    NoPartyIDs() : FIX::Group(453,448,FIX::message_order(448,447,452,802,0)) {}         // C-NEX
+      FIELD_SET(*this, FIX::PartyID);           // C-NEX 448
+      FIELD_SET(*this, FIX::PartyIDSource);     // C-NEX 447
+      FIELD_SET(*this, FIX::PartyRole);         // C-NEX 452
+      FIELD_SET(*this, FIX::NoPartySubIDs);     // C-NEX 802
+      class NoPartySubIDs: public FIX::Group
+      {
+      public:
+      NoPartySubIDs() : FIX::Group(802,523,FIX::message_order(523,803,0)) {}  // C-NEX
+        FIELD_SET(*this, FIX::PartySubID);      // C-NEX 523
+        FIELD_SET(*this, FIX::PartySubIDType);  // C-NEX 803
+      };
+    };
   };

 }

6/11 OrderCancelReplaceRequest.h(差分)

quickfix/src/C++/fix44/OrderCancelReplaceRequest.h
・・・
     FIELD_SET(*this, FIX::MoneyLaunderingStatus);
     FIELD_SET(*this, FIX::RegistID);
     FIELD_SET(*this, FIX::Designation);
+    FIELD_SET(*this, FIX::TrailBy);     // C-NEX 7587
+    FIELD_SET(*this, FIX::MaxSlippage); // C-NEX 7588
   };

 }

7/11 OrderCancelRequest.h(差分)

quickfix/src/C++/fix44/OrderCancelRequest.h
・・・
     FIELD_SET(*this, FIX::Text);
     FIELD_SET(*this, FIX::EncodedTextLen);
     FIELD_SET(*this, FIX::EncodedText);
+
+    FIELD_SET(*this, FIX::OrdType);             // C-NEX 40
+    FIELD_SET(*this, FIX::IFDCancelType);       // C-NEX 7552
+    FIELD_SET(*this, FIX::OpenOrders);          // C-NEX 7559
   };

 }

8/11 OrderMassStatusRequest.h(差分)

quickfix/src/C++/fix44/OrderMassStatusRequest.h
・・・
     FIELD_SET(*this, FIX::UnderlyingCurrentValue);
     FIELD_SET(*this, FIX::UnderlyingEndValue);
     FIELD_SET(*this, FIX::Side);
+
+    FIELD_SET(*this, FIX::TransactTime);        // C-NEX 60
   };

 }

9/11 OrderStatusRequest.h(差分)

quickfix/src/C++/fix44/OrderStatusRequest.h
・・・
       FIELD_SET(*this, FIX::UnderlyingEndValue);
     };
     FIELD_SET(*this, FIX::Side);
+
+    FIELD_SET(*this, FIX::OrdType);     // C-NEX 40
+    FIELD_SET(*this, FIX::OpenOrders);  // C-NEX 7559
   };

 }

10/11 PositionReport.h(差分)

quickfix/src/C++/fix44/PositionReport.h
・・・
     FIELD_SET(*this, FIX::Text);
     FIELD_SET(*this, FIX::EncodedTextLen);
     FIELD_SET(*this, FIX::EncodedText);
+
+    FIELD_SET(*this, FIX::ExecID);              // C-NEX 17
+    FIELD_SET(*this, FIX::TradeRealizedPL);     // C-NEX 8018
   };

 }

11/11 SecurityList.h(差分)

quickfix/src/C++/fix44/SecurityList.h
・・・
       FIELD_SET(*this, FIX::Text);
       FIELD_SET(*this, FIX::EncodedTextLen);
       FIELD_SET(*this, FIX::EncodedText);
+
+      FIELD_SET(*this, FIX::NoInstrAttrib);     // C-NEX 870
+      class NoInstrAttrib: public FIX::Group
+      {
+      public:
+      NoInstrAttrib() : FIX::Group(870,871,FIX::message_order(871,872,0)) {}  // C-NEX 870
+        FIELD_SET(*this, FIX::InstrAttribType);         // C-NEX 871
+        FIELD_SET(*this, FIX::InstrAttribValue);        // C-NEX 872
+      };
+
     };
   };

#メッセージValidate

##FIX44.xml(差分)

quickfix/examples/tradeclient/FIX44.xml

@@ -247,6 +247,32 @@
    <component name='InstrmtLegExecGrp' required='N' />
    <field name='CopyMsgIndicator' required='N' />
    <component name='MiscFeesGrp' required='N' />
+   <field name='StopSide' required='N' />
+   <field name='IFDIfOrdStatus' required='N' />
+   <field name='IFDIfType' required='N' />
+   <field name='IFDThenType' required='N' />
+   <field name='IFDThenSide' required='N' />
+   <field name='IFDIfStopRate' required='N' />
+   <field name='IFDThenPrStopRate' required='N' />
+   <field name='IFDThenPrLimitRate' required='N' />
+   <field name='IFDThenAvgPx' required='N' />
+   <field name='IFDThenCumQty' required='N' />
+   <field name='IFDThenPrLeavesQty' required='N' />
+   <field name='OCOLeg1LimitRate' required='N' />
+   <field name='OCOLeg2Type' required='N' />
+   <field name='OCOLeg2Side' required='N' />
+   <field name='OCOLeg2StopRate' required='N' />
+   <field name='OCOLeg2StopSide' required='N' />
+   <field name='OCOLeg2StopLimitRate' required='N' />
+   <field name='IFDFillSide' required='N' />
+   <field name='OCOLegId' required='N' />
+   <field name='OCOLeg1AvgPx' required='N' />
+   <field name='OCOLeg1CumQty' required='N' />
+   <field name='OCOLeg2AvgPx' required='N' />
+   <field name='OCOLeg2CumQty' required='N' />
+   <field name='TrailBy' required='N' />
+   <field name='MaxSlippage' required='N' />
+   <field name='InitialTriggerRate' required='N' />
   </message>
   <message name='OrderCancelReject' msgtype='9' msgcat='app'>
    <field name='OrderID' required='Y' />
@@ -268,6 +294,7 @@
    <field name='CxlRejResponseTo' required='Y' />
    <field name='CxlRejReason' required='N' />
    <field name='Text' required='N' />
+   <component name='Parties' required='N' />
    <field name='EncodedTextLen' required='N' />
    <field name='EncodedText' required='N' />
   </message>
@@ -396,6 +423,24 @@
    <field name='MoneyLaunderingStatus' required='N' />
    <field name='RegistID' required='N' />
    <field name='Designation' required='N' />
+   <field name='ExpireSeconds' required='N' />
+   <field name='StopSide' required='N' />
+   <field name='IFDIfType' required='N' />
+   <field name='IFDThenType' required='N' />
+   <field name='IFDThenSide' required='N' />
+   <field name='IFDIfStopRate' required='N' />
+   <field name='IFDThenPrStopRate' required='N' />
+   <field name='IFDThenPrLimitRate' required='N' />
+   <field name='IFDThenPrStopSide' required='N' />
+   <field name='OCOLeg1LimitRate' required='N' />
+   <field name='OCOLeg2Type' required='N' />
+   <field name='OCOLeg2Side' required='N' />
+   <field name='OCOLeg2StopRate' required='N' />
+   <field name='OCOLeg2StopSide' required='N' />
+   <field name='OCOLeg2StopLimitRate' required='N' />
+   <field name='TrailBy' required='N' />
+   <field name='MaxSlippage' required='N' />
+   <field name='InitialTriggerRate' required='N' />
   </message>
   <message name='NewOrderList' msgtype='E' msgcat='app'>
    <field name='ListID' required='Y' />
@@ -434,12 +479,15 @@
    <component name='FinancingDetails' required='N' />
    <component name='UndInstrmtGrp' required='N' />
    <field name='Side' required='Y' />
+   <field name='OrdType' required='Y' />
    <field name='TransactTime' required='Y' />
    <component name='OrderQtyData' required='Y' />
    <field name='ComplianceID' required='N' />
    <field name='Text' required='N' />
    <field name='EncodedTextLen' required='N' />
    <field name='EncodedText' required='N' />
+   <field name='IFDCancelType' required='N' />
+   <field name='OpenOrders' required='N' />
   </message>
   <message name='OrderCancelReplaceRequest' msgtype='G' msgcat='app'>
    <field name='OrderID' required='N' />
@@ -517,6 +565,8 @@
    <field name='MoneyLaunderingStatus' required='N' />
    <field name='RegistID' required='N' />
    <field name='Designation' required='N' />
+   <field name='TrailBy' required='N' />
+   <field name='MaxSlippage' required='N' />
   </message>
   <message name='OrderStatusRequest' msgtype='H' msgcat='app'>
    <field name='OrderID' required='N' />
@@ -531,6 +581,8 @@
    <component name='FinancingDetails' required='N' />
    <component name='UndInstrmtGrp' required='N' />
    <field name='Side' required='Y' />
+   <field name='OrdType' required='N' />
+   <field name='OpenOrders' required='N' />
   </message>
   <message name='AllocationInstruction' msgtype='J' msgcat='app'>
    <field name='AllocID' required='Y' />
@@ -1498,6 +1550,7 @@
    <component name='Instrument' required='N' />
    <component name='UnderlyingInstrument' required='N' />
    <field name='Side' required='N' />
+   <field name='TransactTime' required='N' />
   </message>
   <message name='QuoteRequestReject' msgtype='AG' msgcat='app'>
    <field name='QuoteReqID' required='Y' />
@@ -1812,6 +1865,7 @@
    <field name='PosMaintRptID' required='Y' />
    <field name='PosReqID' required='N' />
    <field name='PosReqType' required='N' />
+   <field name='ExecID' required='N' />
    <field name='SubscriptionRequestType' required='N' />
    <field name='TotalNumPosReports' required='N' />
    <field name='UnsolicitedIndicator' required='N' />
@@ -1835,6 +1889,7 @@
    <field name='RegistStatus' required='N' />
    <field name='DeliveryDate' required='N' />
    <field name='Text' required='N' />
+   <field name='TradeRealizedPL' required='N' />
    <field name='EncodedTextLen' required='N' />
    <field name='EncodedText' required='N' />
   </message>
@@ -2346,6 +2401,24 @@
    <field name='EncodedTextLen' required='N' />
    <field name='EncodedText' required='N' />
   </message>
+  <message name='PartyDetailsListReport' msgtype='CG' msgcat='app'>
+   <field name='PartyDetailsListReportID' required='Y' />
+   <field name='PartyDetailsListRequestID' required='Y' />
+   <field name='PartyDetailsRequestResult' required='Y' />
+   <field name='TotNumReports' required='Y' />
+   <field name='PartyDetailsType' required='Y' />
+   <field name='TransactTime' required='Y' />
+   <field name='Text' required='Y' />
+   <component name='PartyListGroup' required='N' />
+  </message>
+  <message name='OrderRateUpdate' msgtype='PU' msgcat='app'>
+   <field name='OrderID' required='Y' />
+   <field name='ClOrdID' required='Y' />
+   <field name='OrigClOrdID' required='Y' />
+   <field name='OrdType' required='Y' />
+   <field name='StopPx' required='N' />
+   <component name='Parties' required='N' />
+  </message>
  </messages>
  <trailer>
   <field name='SignatureLength' required='N' />
@@ -3144,6 +3217,21 @@
     <field name='Text' required='N' />
     <field name='EncodedTextLen' required='N' />
     <field name='EncodedText' required='N' />
+    <field name='TimeInForce' required='Y' />
+    <field name='ExpireDate' required='N' />
+    <field name='ExpireTime' required='N' />
+    <field name='OrderID' required='Y' />
+    <field name='Symbol' required='Y' />
+    <field name='Side' required='Y' />
+    <field name='OrdType' required='Y' />
+    <field name='IFDIfOrdStatus' required='N' />
+    <field name='IFDThenAvgPx' required='N' />
+    <field name='IFDThenCumQty' required='N' />
+    <field name='IFDThenPrLeavesQty' required='N' />
+    <field name='OCOLeg1AvgPx' required='N' />
+    <field name='OCOLeg1CumQty' required='N' />
+    <field name='OCOLeg2AvgPx' required='N' />
+    <field name='OCOLeg2CumQty' required='N' />
    </group>
   </component>
   <component name='PosUndInstrmtGrp'>
@@ -3725,6 +3813,13 @@
     <field name='Nested3PartySubIDType' required='N' />
    </group>
   </component>
+  <component name='PartyListGroup'>
+   <group name='NoPartyList' required='N'>
+    <field name='PartyID' required='N' />
+    <field name='PartyIDSource' required='N' />
+    <field name='PartyRole' required='N' />
+   </group>
+  </component>
  </components>
  <fields>
   <field number='1' name='Account' type='STRING' />
@@ -3989,6 +4084,14 @@
    <value enum='L' description='PREVIOUS_FUND_VALUATION_POINT' />
    <value enum='M' description='NEXT_FUND_VALUATION_POINT' />
    <value enum='P' description='PEGGED' />
+   <value enum='C' description='CNEX_MARKET' />
+   <value enum='T' description='CNEX_Market_SLIPPAGE' />
+   <value enum='F' description='CNEX_LIMIT' />
+   <value enum='R' description='CNEX_DISCRETIONARY' />
+   <value enum='V' description='CNEX_TRAILING_STOP' />
+   <value enum='W' description='CNEX_OCO' />
+   <value enum='X' description='CNEX_IFD' />
+   <value enum='Y' description='CNEX_IFD_OCO' />
   </field>
   <field number='41' name='OrigClOrdID' type='STRING' />
   <field number='42' name='OrigTime' type='UTCTIMESTAMP' />
@@ -4034,6 +4137,7 @@
    <value enum='5' description='GOOD_TILL_CROSSING' />
    <value enum='6' description='GOOD_TILL_DATE' />
    <value enum='7' description='AT_THE_CLOSE' />
+   <value enum='X' description='GOOD_zFOZ_SECONDS' />
   </field>
   <field number='60' name='TransactTime' type='UTCTIMESTAMP' />
   <field number='61' name='Urgency' type='CHAR'>
@@ -6334,6 +6438,15 @@
   <field number='854' name='QtyType' type='INT'>
    <value enum='0' description='UNITS' />
    <value enum='1' description='CONTRACTS' />
+   <value enum='10' description='Deposit' />
+   <value enum='11' description='Withdrawal' />
+   <value enum='12' description='Interest' />
+   <value enum='13' description='Roll' />
+   <value enum='14' description='Profit_and_Loss' />
+   <value enum='15' description='House_Commission' />
+   <value enum='16' description='IB_Commission' />
+   <value enum='17' description='MoneyManagerCommission' />
+   <value enum='18' description='Collateral' />
   </field>
   <field number='855' name='SecondaryTrdType' type='INT' />
   <field number='856' name='TradeReportType' type='INT'>
@@ -6592,5 +6705,98 @@
   <field number='954' name='Nested3PartySubIDType' type='INT' />
   <field number='955' name='LegContractSettlMonth' type='MONTHYEAR' />
   <field number='956' name='LegInterestAccrualDate' type='LOCALMKTDATE' />
+
+  <field number='7558' name='ExpireSeconds' type='INT' />
+  <field number='7534' name='StopSide' type='CHAR'>
+   <value enum='1' description='BID' />
+   <value enum='2' description='OFFER' />
+  </field>
+  <field number='7569' name='IFDIfType' type='CHAR'>
+   <value enum='3' description='STOP' />
+   <value enum='4' description='STOP_LIMIT' />
+   <value enum='C' description='CNEX_MARKET' />
+   <value enum='F' description='CNEX_LIMIT' />
+  </field>
+  <field number='7535' name='IFDThenType' type='CHAR'>
+   <value enum='3' description='STOP' />
+   <value enum='4' description='STOP_LIMIT' />
+   <value enum='F' description='CNEX_LIMIT' />
+   <value enum='W' description='CNEX_OCO' />
+  </field>
+  <field number='7536' name='IFDThenSide' type='CHAR'>
+   <value enum='1' description='BUY' />
+   <value enum='2' description='SELL' />
+  </field>
+  <field number='7570' name='IFDIfStopRate' type='FLOAT' />
+  <field number='7537' name='IFDThenPrStopRate' type='FLOAT' />
+  <field number='7538' name='IFDThenPrLimitRate' type='FLOAT' />
+  <field number='7539' name='IFDThenPrStopSide' type='CHAR'>
+   <value enum='1' description='BID' />
+   <value enum='2' description='OFFER' />
+  </field>
+  <field number='7540' name='OCOLeg1LimitRate' type='FLOAT' />
+  <field number='7541' name='OCOLeg2Type' type='CHAR'>
+   <value enum='3' description='STOP' />
+   <value enum='4' description='STOP_LIMIT' />
+  </field>
+  <field number='7553' name='OCOLeg2Side' type='CHAR'>
+   <value enum='1' description='BUY' />
+   <value enum='2' description='SELL' />
+  </field>
+  <field number='7542' name='OCOLeg2StopRate' type='FLOAT' />
+  <field number='7543' name='OCOLeg2StopSide' type='CHAR'>
+   <value enum='1' description='BID' />
+   <value enum='2' description='OFFER' />
+  </field>
+  <field number='7544' name='OCOLeg2StopLimitRate' type='FLOAT' />
+  <field number='7587' name='TrailBy' type='FLOAT' />
+  <field number='7588' name='MaxSlippage' type='FLOAT' />
+  <field number='7589' name='InitialTriggerRate' type='FLOAT' />
+  <field number='7530' name='BelowMin' type='FLOAT' />
+  <field number='7547' name='IFDIfOrdStatus' type='CHAR'>
+   <value enum='0' description='New' />
+   <value enum='1' description='Partial_Fill' />
+   <value enum='2' description='Fill' />
+   <value enum='4' description='Canceled' />
+   <value enum='C' description='Expired' />
+  </field>
+  <field number='7554' name='IFDThenAvgPx' type='FLOAT' />
+  <field number='7555' name='IFDThenCumQty' type='FLOAT' />
+  <field number='7556' name='IFDThenPrLeavesQty' type='FLOAT' />
+  <field number='7545' name='IFDFillSide' type='CHAR'>
+   <value enum='1' description='IF_SIDE' />
+   <value enum='2' description='THEN_SIDE' />
+  </field>
+  <field number='7546' name='OCOLegId' type='CHAR'>
+   <value enum='1' description='Leg1' />
+   <value enum='2' description='Leg2' />
+  </field>
+  <field number='7548' name='OCOLeg1AvgPx' type='FLOAT' />
+  <field number='7549' name='OCOLeg1CumQty' type='FLOAT' />
+  <field number='7550' name='OCOLeg2AvgPx' type='FLOAT' />
+  <field number='7551' name='OCOLeg2CumQty' type='FLOAT' />
+  <field number='7552' name='IFDCancelType' type='CHAR'>
+   <value enum='0' description='PartialCancel' />
+   <value enum='1' description='ComplateOrderCancel' />
+  </field>
+  <field number='7559' name='OpenOrders' type='BOOLEAN'>
+   <value enum='Y' description='YES' />
+   <value enum='N' description='NO' />
+  </field>
+  <field number='8018' name='TradeRealizedPL' type='FLOAT' />
+  <field number='1510' name='PartyDetailsListReportID' type='STRING' />
+  <field number='1505' name='PartyDetailsListRequestID' type='STRING' />
+  <field number='1511' name='PartyDetailsRequestResult' type='CHAR'>
+   <value enum='0' description='ValidRequest' />
+   <value enum='1' description='Invalid_or_Unsupported_Request' />
+  </field>
+  <field number='7593' name='PartyDetailsType' type='CHAR'>
+   <value enum='1' description='AccountUpdate' />
+   <value enum='3' description='SellOutTriggered' />
+   <value enum='4' description='AccountDisabled' />
+   <value enum='5' description='BR_RolloverComplete' />
+   <value enum='8' description='MarginRollerComplete' />
+  </field>
+  <field number='1513' name='NoPartyList' type='NUMINGROUP' />
  </fields>
-</fix>
\ No newline at end of file
+</fix>

コンパイル

ちゃんとコンパイル通ること


<前 【QuickFIX】05 各種メッセージの枠を作成
次> 【QuickFIX】07 セッション開始 TradingSessionStatus


一覧

01 サンプルのコンパイル
02 ログイン時にPassword(554)を送信
03 送受信ログをMySQLに保存
04 情報保存用にMySQLコネクションを保持..他
05 各種メッセージの枠を作成
06 独自メッセージ仕様
07 セッション開始 TradingSessionStatus
08 通貨ペア要求 SecurityListRequest
09 通貨ペア取得 SecurityList
10 デモ環境サーバへ接続
11 ログ出力設定
12 マーケット情報要求 < V > MarketDataRequest
13 マーケット情報受信 < X > MarketDataIncrementalRefresh
14 口座情報要求 < AN > RequestForPositions
15 口座情報取得 < AZ > CollateralResponse


2
3
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?