プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

FIXプロトコル入門

こんなにマーケットが激動している中、シストレするためだけの
準備(勉強)しかできないことにだいぶ苛立ちを覚えます。
色々と知識が足りな過ぎて、無知は罪だとすら思い始めている次第です。


FIXプロトコルに関しても、理解を進めて行きます。

FIXプロトコルとは
f:id:tos5511:20160211064734p:plain
technodeal.co.jp

国内で採用しているのはOANDA、YJFX(C-NEX)が有名どころで
あと楽天とかもやってたかな。まあ探せば他にもあると思いますが
そんなにやってないし、日本語の情報も少ない事はたしかです。


MT4に依存せずに自作のシステムと直接業者のシステムを
FIXエンジンを介して直接接続することができ、FIXプロトコル
FIXエンジン間の通信仕様というわけです。


FIXのメッセージはヘッダフィールドで始まりトレーラフィールドで終わるルール。

例 クライアント・アウトバウンド・リクエスト(有効なログオン):
HEADER
  8 BeginString = FIX.4.4
  35 MsgType = Logon (A)
  34 MsgSeqNum = 1
  49 SenderCompID = testusr4109
  52 SendingTime = 20101124-20:27:25.000
  56 TargetCompID = OANDA
BODY
  98 EncryptMethod = NONE_OTHER (0)
 108 HeartBtInt = 300
 141 ResetSeqNumFlag = Y
 554 Password = Passw0rd
TRAILER
  10 CheckSum = 133


以下、個人的メモの為にタグ情報載せておきます。
CompIDのみ
 →企業名、システム名のみ判別可能。
CompID+SubID+SenderLocationID
 →だいたいわかる。でも任意だしわざわざここまで設定しない。

タグ名 タグ番号 説明
BeginString 8 FIXのバージョンとメッセージの始まり。常に暗号化されない
BodyLength 9 Checksum <10> フィールドに転送されるメッセージの長さ(バイト)。メッセージでは常に 2 番目のフィールドで、常に暗号化されない。
MsgType 35 具体的なメッセージタイプ(MsgType)を定義。メッセージでは常に 3 番目のフィールドで、常に暗号化されない。
SenderCompID 49 送信元の企業名やシステム名を入力
SenderSubID 50 送信元の部署など入力
SenderLocationID 142 送信元の地理的な情報
TargetCompID 56 送信先の企業名やシステム名を入力
TargetSubID 57 送信先の部署など入力
TargetLocationID 143 送信先の地理的な情報
MsgSeqNum 34 整数のメッセージ・シーケンス番号。
SendingTime 52 メッセージ送信の時刻(常に UTC協定世界時、または ‘GMT’ )で表示
CheckSum 10 3 バイトの単純チェックサムがメッセージの終りの区切り文字として(トレーリングとともに)機能する。常に3 文字で定義される。




最後におそらく国内の書籍でFIXプロトコルについて触れているのは
この1冊と思われます。興味ある方はどうぞ

FIX入門