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

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

本体側で３ファイル


## 1/3 FixFieldNumbers.h(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```cpp: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(差分)
```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 各種メッセージの枠を作成](https://qiita.com/nobu-maple/items/770d8da8c50c4f5a5a54)
次＞ [【QuickFIX】07 セッション開始 <h> TradingSessionStatus](https://qiita.com/nobu-maple/items/98369bad8351cb662740)

---
# 一覧
[01 サンプルのコンパイル](https://qiita.com/nobu-maple/items/051188f21efc59429808)
[02 ログイン時にPassword(554)を送信](https://qiita.com/nobu-maple/items/649f1fd2525523f12064)
[03 送受信ログをMySQLに保存](https://qiita.com/nobu-maple/items/cc943f0c1028f21161c0)
[04 情報保存用にMySQLコネクションを保持..他](https://qiita.com/nobu-maple/items/cfe505ad984e16d46af9)
[05 各種メッセージの枠を作成](https://qiita.com/nobu-maple/items/770d8da8c50c4f5a5a54)
[06 独自メッセージ仕様](https://qiita.com/nobu-maple/items/580815f3c304d96bde31)
[07 セッション開始 <h> TradingSessionStatus](https://qiita.com/nobu-maple/items/98369bad8351cb662740)
[08 通貨ペア要求 <x> SecurityListRequest](https://qiita.com/nobu-maple/items/ba0fb7175c378bc4c608)
[09 通貨ペア取得 <y> SecurityList](https://qiita.com/nobu-maple/items/66feda02d9a717bd31b9)
[10 デモ環境サーバへ接続](https://qiita.com/nobu-maple/items/52de92892a03f59c7368)
[11 ログ出力設定](https://qiita.com/nobu-maple/items/828d3859ebf2ab2237f8)
[12 マーケット情報要求 < V > MarketDataRequest](https://qiita.com/nobu-maple/items/1c4f2d27cabde8eff713)
[13 マーケット情報受信 < X > MarketDataIncrementalRefresh](https://qiita.com/nobu-maple/items/eb7855841000eb2b0f04)
[14 口座情報要求 < AN > RequestForPositions](https://qiita.com/nobu-maple/items/30c286f8dbf1e9b0e173)
[15 口座情報取得 < AZ > CollateralResponse](https://qiita.com/nobu-maple/items/a16e3c787ef5e83f3971)

---