【QuickFIX】05 各種メッセージの枠を作成

サーバとのやりとりを行う各種メッセージの「枠」をとりあえず作成
組み込んでおきます

CNEXの仕様書にのみあって、quickfix に無いメッセージもあるので
それについてはヘッダーファイルから作成


##受信メッセージ用
16メッセージ
　CG　PartyDetailsListReport　と
　PU　OrderRateUpdate　は標準ではなかったのでヘッダーも作成

```
resp_8__ExecutionReport.cpp
resp_9__OrderCancelReject.cpp
resp_AO_RequestForPositionsAck.cpp
resp_AP_PositionReport.cpp
resp_AZ_CollateralResponse.cpp
resp_BA_CollateralReport.cpp
resp_CG_PartyDetailsListReport.cpp
resp_CG_PartyDetailsListReport.h
resp_C__Email.cpp
resp_N__ListStatus.cpp
resp_PU_OrderRateUpdate.cpp
resp_PU_OrderRateUpdate.h
resp_X__MarketDataIncrementalRefresh.cpp
resp_Y__MarketDataRequestReject.cpp
resp_h__TradingSessionStatus.cpp
resp_j__BusinessMessageReject.cpp
resp_r__OrderMassCancelReport.cpp
resp_y__SecurityList.cpp
```

##送信メッセージ用
10メッセージ

```
send_1__TestRequest.cpp
send_AF_OrderMassStatusRequest.cpp
send_AN_RequestForPositions.cpp
send_D__NewOrderSingle.cpp
send_F__OrderCancelRequest.cpp
send_G__OrderCancelReplaceRequest.cpp
send_H__OrderStatusRequest.cpp
send_V__MarketDataRequest.cpp
send_q__OrderMassCancelRequest.cpp
send_x__SecurityListRequest.cpp
```



##Applicationヘッダーファイル（差分）
```cpp:examples/tradeclient/Application.h
@@ -8,6 +8,35 @@

 #include "quickfix/MySQLConnection.h"

+#include "quickfix/fix44/TestRequest.h"                     // send < 1 >
+#include "quickfix/fix44/OrderMassCancelRequest.h"          // send < q >
+#include "quickfix/fix44/SecurityListRequest.h"             // send < x >
+#include "quickfix/fix44/NewOrderSingle.h"                  // send < D >
+#include "quickfix/fix44/OrderCancelRequest.h"              // send < F >
+#include "quickfix/fix44/OrderCancelReplaceRequest.h"       // send < G >
+#include "quickfix/fix44/OrderStatusRequest.h"              // send < H >
+#include "quickfix/fix44/MarketDataRequest.h"               // send < V >
+#include "quickfix/fix44/OrderMassStatusRequest.h"          // send < AF >
+#include "quickfix/fix44/RequestForPositions.h"             // send < AN >
+
+#include "quickfix/fix44/ExecutionReport.h"                 // resp < 8 >
+#include "quickfix/fix44/OrderCancelReject.h"               // resp < 9 >
+#include "quickfix/fix44/TradingSessionStatus.h"            // resp < h >
+#include "quickfix/fix44/BusinessMessageReject.h"           // resp < j >
+#include "quickfix/fix44/OrderMassCancelReport.h"           // resp < r >
+#include "quickfix/fix44/SecurityList.h"                    // resp < y >
+#include "quickfix/fix44/Email.h"                           // resp < C >
+#include "quickfix/fix44/ListStatus.h"                      // resp < N >
+#include "quickfix/fix44/MarketDataIncrementalRefresh.h"    // resp < X >
+#include "quickfix/fix44/MarketDataRequestReject.h"         // resp < Y >
+#include "quickfix/fix44/RequestForPositionsAck.h"          // resp < AO >
+#include "quickfix/fix44/PositionReport.h"                  // resp < AP >
+#include "quickfix/fix44/CollateralResponse.h"              // resp < AZ >
+#include "quickfix/fix44/CollateralReport.h"                // resp < BA >
+
+#include "resp_CG_PartyDetailsListReport.h"                 // resp < CG >
+#include "resp_PU_OrderRateUpdate.h"                        // resp < PU >
+
 #include <queue>
 #include <vector>
 #include <map>
@@ -68,6 +97,34 @@ private:
   void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
   throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::UnsupportedMessageType );

+  /* 8  */ void onMessage( const FIX44::ExecutionReport&,              const FIX::SessionID& );
+  /* 9  */ void onMessage( const FIX44::OrderCancelReject&,            const FIX::SessionID& );
+  /* h  */ void onMessage( const FIX44::TradingSessionStatus&,         const FIX::SessionID& );
+  /* j  */ void onMessage( const FIX44::BusinessMessageReject&,        const FIX::SessionID& );
+  /* r  */ void onMessage( const FIX44::OrderMassCancelReport&,        const FIX::SessionID& );
+  /* y  */ void onMessage( const FIX44::SecurityList&,                 const FIX::SessionID& );
+  /* C  */ void onMessage( const FIX44::Email&,                        const FIX::SessionID& );
+  /* N  */ void onMessage( const FIX44::ListStatus&,                   const FIX::SessionID& );
+  /* X  */ void onMessage( const FIX44::MarketDataIncrementalRefresh&, const FIX::SessionID& );
+  /* Y  */ void onMessage( const FIX44::MarketDataRequestReject&,      const FIX::SessionID& );
+  /* AO */ void onMessage( const FIX44::RequestForPositionsAck&,       const FIX::SessionID& );
+  /* AP */ void onMessage( const FIX44::PositionReport&,               const FIX::SessionID& );
+  /* AZ */ void onMessage( const FIX44::CollateralResponse&,           const FIX::SessionID& );
+  /* BA */ void onMessage( const FIX44::CollateralReport&,             const FIX::SessionID& );
+  /* CG */ void onMessage( const FIX44::PartyDetailsListReport&,       const FIX::SessionID& );
+  /* PU */ void onMessage( const FIX44::OrderRateUpdate&,              const FIX::SessionID& );
+
+  /* 1  */ void TestRequest( const char* );
+  /* q  */ void OrderMassCancelRequest();
+  /* x  */ void SecurityListRequest();
+  /* D  */ void NewOrderSingle();
+  /* F  */ void OrderCancelRequest();
+  /* G  */ void OrderCancelReplaceRequest();
+  /* H  */ void OrderStatusRequest();
+  /* V  */ void MarketDataRequest();
+  /* AF */ void OrderMassStatusRequest();
+  /* AN */ void RequestForPositions();
+
   void SetMessageHeader( FIX::Message&, const char* = SessionTypeTrade );
   FIX::MySQLConnection *MySQLConnect();
   std::string getSetting( const char* );

```

追加したヘッダーを読み込んで、各命令の呼び出し宣言しときます



##Makefile.am（追加したファイルを追記）
```cpp:examples/tradeclient/Makefile.am
noinst_PROGRAMS = tradeclient

tradeclient_SOURCES = \
        tradeclient.cpp \
        Application.h \
        Application.cpp \
        resp_8__ExecutionReport.cpp \
        resp_9__OrderCancelReject.cpp \
        resp_AO_RequestForPositionsAck.cpp \
        resp_AP_PositionReport.cpp \
        resp_AZ_CollateralResponse.cpp \
        resp_BA_CollateralReport.cpp \
        resp_CG_PartyDetailsListReport.cpp \
        resp_CG_PartyDetailsListReport.h \
        resp_C__Email.cpp \
        resp_N__ListStatus.cpp \
        resp_PU_OrderRateUpdate.cpp \
        resp_PU_OrderRateUpdate.h \
        resp_X__MarketDataIncrementalRefresh.cpp \
        resp_Y__MarketDataRequestReject.cpp \
        resp_h__TradingSessionStatus.cpp \
        resp_j__BusinessMessageReject.cpp \
        resp_r__OrderMassCancelReport.cpp \
        resp_y__SecurityList.cpp \
        send_1__TestRequest.cpp \
        send_AF_OrderMassStatusRequest.cpp \
        send_AN_RequestForPositions.cpp \
        send_D__NewOrderSingle.cpp \
        send_F__OrderCancelRequest.cpp \
        send_G__OrderCancelReplaceRequest.cpp \
        send_H__OrderStatusRequest.cpp \
        send_V__MarketDataRequest.cpp \
        send_q__OrderMassCancelRequest.cpp \
        send_x__SecurityListRequest.cpp

tradeclient_LDADD = $(top_builddir)/src/C++/libquickfix.la

INCLUDES = -I$(top_builddir)/include -I..

all-local:
        rm -f ../../bin/tradeclient
        ln -s ../examples/tradeclient/tradeclient ../../bin/tradeclient

```



##追加メッセージ受信用（枠だけ）

### < 8 > ExecutionReport
```cpp:resp_8__ExecutionReport.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* 8  */
void Application::onMessage(const FIX44::ExecutionReport& message, const FIX::SessionID& sessionID )
{
  std::cout << "<8> ExecutionReport: " << std::endl << message.toXML() << std::endl;
}
```

### < 9 > OrderCancelReject

```cpp:resp_9__OrderCancelReject.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* 9  */
void Application::onMessage(const FIX44::OrderCancelReject& message, const FIX::SessionID& sessionID )
{
  std::cout << "<9> OrderCancelReject: " << std::endl << message.toXML() << std::endl;
}
```


### < AO > RequestForPositionsAck

```cpp:resp_AO_RequestForPositionsAck.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* AO  */
void Application::onMessage(const FIX44::RequestForPositionsAck& message, const FIX::SessionID& sessionID )
{
  std::cout << "<AO> RequestForPositionsAck: " << std::endl << message.toXML() << std::endl;
}
```


### < AP > PositionReport

```cpp:resp_AP_PositionReport.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* AP */
void Application::onMessage(const FIX44::PositionReport& message, const FIX::SessionID& sessionID )
{
  std::cout << "<AP> PositionReport: " << std::endl << message.toXML() << std::endl;
}
```


### < AZ > CollateralResponse

```cpp:resp_AZ_CollateralResponse.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* AZ */
void Application::onMessage(const FIX44::CollateralResponse& message, const FIX::SessionID& sessionID )
{
  std::cout << "<AZ> CollateralResponse: " << std::endl << message.toXML() << std::endl;
}
```


### < BA > CollateralReport

```cpp:resp_BA_CollateralReport.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* BA */
void Application::onMessage(const FIX44::CollateralReport& message, const FIX::SessionID& sessionID )
{
  std::cout << "<BA> CollateralReport: " << std::endl << message.toXML() << std::endl;
}
```


### < CG > PartyDetailsListReport

```cpp:resp_CG_PartyDetailsListReport.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* CG  */
void Application::onMessage(const FIX44::PartyDetailsListReport& message, const FIX::SessionID& sessionID )
{
  std::cout << "<CG> PartyDetailsListReport: " << std::endl << message.toXML() << std::endl;
}
```

```cpp:resp_CG_PartyDetailsListReport.h
#include "quickfix/Message.h"

namespace FIX44
{

  class PartyDetailsListReport : public Message
  {
  public:
    PartyDetailsListReport() : Message(MsgType()) {}
    PartyDetailsListReport(const FIX::Message& m) : Message(m) {}
    PartyDetailsListReport(const Message& m) : Message(m) {}
    PartyDetailsListReport(const PartyDetailsListReport& m) : Message(m) {}
    static FIX::MsgType MsgType() { return FIX::MsgType("CG"); }

    PartyDetailsListReport(
      const FIX::PartyDetailsListReportID& aPartyDetailsListReportID ,
      const FIX::PartyDetailsListRequestID& aPartyDetailsListRequestID ,
      const FIX::PartyDetailsRequestResult& aPartyDetailsRequestResult)
    : Message(MsgType())
    {
      set(aPartyDetailsListReportID);
      set(aPartyDetailsListRequestID);
      set(aPartyDetailsRequestResult);
    }

    FIELD_SET(*this, FIX::PartyDetailsListReportID);
    FIELD_SET(*this, FIX::PartyDetailsListRequestID);
    FIELD_SET(*this, FIX::PartyDetailsRequestResult);
    FIELD_SET(*this, FIX::TotNumReports);
    FIELD_SET(*this, FIX::PartyDetailsType);
    FIELD_SET(*this, FIX::TransactTime);
    FIELD_SET(*this, FIX::Text);
    FIELD_SET(*this, FIX::NoPartyList);
    class NoPartyList: public FIX::Group
    {
    public:
    NoPartyList() : FIX::Group(1513,448,FIX::message_order(448,447,452,0)) {}
      FIELD_SET(*this, FIX::PartyID);
      FIELD_SET(*this, FIX::PartyIDSource);
      FIELD_SET(*this, FIX::PartyRole);
    };
  };

}
```


### < C > Email 

```cpp:resp_C__Email.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* C  */
void Application::onMessage(const FIX44::Email& message, const FIX::SessionID& sessionID )
{
  std::cout << "<C> Email: " << std::endl << message.toXML() << std::endl;
}
```


### < N > ListStatus

```cpp:resp_N__ListStatus.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* N  */
void Application::onMessage(const FIX44::ListStatus& message, const FIX::SessionID& sessionID )
{
  std::cout << "<N> ListStatus: " << std::endl << message.toXML() << std::endl;
}
```


### < PU > OrderRateUpdate

```cpp:resp_PU_OrderRateUpdate.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* PU */
void Application::onMessage(const FIX44::OrderRateUpdate& message, const FIX::SessionID& sessionID )
{
  std::cout << "<PU> OrderRateUpdate: " << std::endl << message.toXML() << std::endl;
}
```

```cpp:resp_PU_OrderRateUpdate.h
#include "quickfix/Message.h"

namespace FIX44
{

  class OrderRateUpdate : public Message
  {
  public:
    OrderRateUpdate() : Message(MsgType()) {}
    OrderRateUpdate(const FIX::Message& m) : Message(m) {}
    OrderRateUpdate(const Message& m) : Message(m) {}
    OrderRateUpdate(const OrderRateUpdate& m) : Message(m) {}
    static FIX::MsgType MsgType() { return FIX::MsgType("PU"); }

    OrderRateUpdate(
      const FIX::OrderID& aOrderID ,
      const FIX::ClOrdID& aClOrdID ,
      const FIX::OrigClOrdID& aOrigClOrdID ,
      const FIX::OrdType& aOrdType )
    : Message(MsgType())
    {
      set(aOrderID);
      set(aClOrdID);
      set(aOrigClOrdID);
      set(aOrdType);
    }

    FIELD_SET(*this, FIX::OrderID);
    FIELD_SET(*this, FIX::ClOrdID);
    FIELD_SET(*this, FIX::OrigClOrdID);
    FIELD_SET(*this, FIX::OrdType);
    FIELD_SET(*this, FIX::StopPx);
    FIELD_SET(*this, FIX::NoPartyIDs);
    class NoPartyIDs: public FIX::Group
    {
    public:
    NoPartyIDs() : FIX::Group(453,448,FIX::message_order(448,452,0)) {}
      FIELD_SET(*this, FIX::PartyID);
      FIELD_SET(*this, FIX::PartyRole);
    };
  };

}
```


### < X > MarketDataIncrementalRefresh

```cpp:resp_X__MarketDataIncrementalRefresh.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* X  */
void Application::onMessage(const FIX44::MarketDataIncrementalRefresh& message, const FIX::SessionID& sessionID )
{
  std::cout << "<X> MarketDataIncrementalRefresh: " << std::endl << message.toXML() << std::endl;
}
```


### < Y > MarketDataRequestReject

```cpp:resp_Y__MarketDataRequestReject.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* Y  */
void Application::onMessage(const FIX44::MarketDataRequestReject& message, const FIX::SessionID& sessionID )
{
  std::cout << "<Y> MarketDataRequestReject: " << std::endl << message.toXML() << std::endl;
}
```


### < h > TradingSessionStatus

```cpp:resp_h__TradingSessionStatus.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* h  */
void Application::onMessage(const FIX44::TradingSessionStatus& message, const FIX::SessionID& sessionID )
{
  std::cout << "<h> TradingSessionStatus: " << std::endl << message.toXML() << std::endl;
}
```


### < j > BusinessMessageReject

```cpp:resp_j__BusinessMessageReject.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* j  */
void Application::onMessage(const FIX44::BusinessMessageReject& message, const FIX::SessionID& sessionID )
{
  std::cout << "<j> BusinessMessageReject: " << std::endl << message.toXML() << std::endl;
}
```


### < r > OrderMassCancelReport

```cpp:resp_r__OrderMassCancelReport.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* r  */
void Application::onMessage(const FIX44::OrderMassCancelReport& message, const FIX::SessionID& sessionID )
{
  std::cout << "<r> OrderMassCancelReport: " << std::endl << message.toXML() << std::endl;
}
```


### < y > SecurityList

```cpp:resp_y__SecurityList.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* y  */
void Application::onMessage(const FIX44::SecurityList& message, const FIX::SessionID& sessionID )
{
  std::cout << "<y> SecurityList: " << std::endl << message.toXML() << std::endl;
}
```


##追加メッセージ送信用（枠だけ）

### < 1 > TestRequest

```cpp:send_1__TestRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* 1  */
void Application::TestRequest( const char* sessionType )
{
  FIX44::TestRequest message;
  SetMessageHeader( message, sessionType );
  FIX::Session::sendToTarget( message );
  std::cout << "<1> TestRequest: " << std::endl << message.toXML() << std::endl;
}
```

TestRequest は唯一 取引用 と レート用の両方で呼ばれる命令のため、セッションタイプを引数にとれるようにしています



### < AF > OrderMassStatusRequest

```cpp:send_AF_OrderMassStatusRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* AF */
void Application::OrderMassStatusRequest()
{
  FIX44::OrderMassStatusRequest message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<AF> OrderMassStatusRequest: " << std::endl << message.toXML() << std::endl;
}
```


### < AN > RequestForPositions

```cpp:send_AN_RequestForPositions.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* AN */
void Application::RequestForPositions()
{
  FIX44::RequestForPositions message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<ANx> RequestforPositions: " << std::endl << message.toXML() << std::endl;
}
```


### < D > NewOrderSingle

```cpp:send_D__NewOrderSingle.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* D  */
void Application::NewOrderSingle()
{
  FIX44::NewOrderSingle message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<D> NewOrderSingle: " << std::endl << message.toXML() << std::endl;
}
```


### < F > OrderCancelRequest

```cpp:send_F__OrderCancelRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* F  */
void Application::OrderCancelRequest()
{
  FIX44::OrderCancelRequest message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<F> OrderCancelRequest: " << std::endl << message.toXML() << std::endl;
}
```


### < G > OrderCancelReplaceRequest

```cpp:send_G__OrderCancelReplaceRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* G  */
void Application::OrderCancelReplaceRequest()
{
  FIX44::OrderCancelReplaceRequest message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<G> OrderCancelReplaceRequest: " << std::endl << message.toXML() << std::endl;
}
```


### < H > OrderStatusRequest
 
```cpp:send_H__OrderStatusRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* H  */
void Application::OrderStatusRequest()
{
  FIX44::OrderStatusRequest message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<H> OrderStatusRequest: " << std::endl << message.toXML() << std::endl;
}
```


### < V > MarketDataRequest

```cpp:send_V__MarketDataRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* V  */
void Application::MarketDataRequest()
{
  FIX44::MarketDataRequest message;
  SetMessageHeader( message, SessionTypeRatefeed );
  FIX::Session::sendToTarget( message );
  std::cout << "<V> MarketDataRequest: " << std::endl << message.toXML() << std::endl;
}

```

<V> MarketDataRequest はレート情報取得なので、メッセージヘッダにレート用のセッションタイプを指定
（デフォルトのセッションタイプは取引用なので）


### < q > OrderMassCancelRequest

```cpp:send_q__OrderMassCancelRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* q  */
void Application::OrderMassCancelRequest()
{
  FIX44::OrderMassCancelRequest message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<q> OrderMassCancelRequest: " << std::endl << message.toXML() << std::endl;
}
```


### < x > SecurityListRequest

```cpp:send_x__SecurityListRequest.cpp
#include "config.h"

#include "Application.h"
#include "quickfix/Session.h"
#include <iostream>

/* x  */
void Application::SecurityListRequest()
{
  FIX44::SecurityListRequest message;
  SetMessageHeader( message );
  FIX::Session::sendToTarget( message );
  std::cout << "<x> SecurityListRequest: " << std::endl << message.toXML() << std::endl;
}
```

---

＜前 [【QuickFIX】04 情報保存用にMySQLコネクションを保持..他](https://qiita.com/nobu-maple/items/cfe505ad984e16d46af9)
次＞ [【QuickFIX】06 独自メッセージ仕様](https://qiita.com/nobu-maple/items/580815f3c304d96bde31)

---
# 一覧
[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)

---