FIX メッセージ ~ Header(ヘッダフィールド) ~ [FIX メッセージ]
こんばんは!!キキです。
今回は長いので前置きなしでいってみよう!!
今日はHeader(ヘッダフィールド)を説明します
いつも説明しているFIX メッセージを見ていきましょう
見やすいようにメッセージフィールド毎に分けています。
本来は1行です。@は0x01(SOH)を表しています
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
98=0@
108=300@
141=Y@
554=Passw0rd@
10=133@
上のFIXメッセージを確認するとHeader(ヘッダフィールド)は
次の7つになります
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
7つのうち順番が決まっているのは
8=FIX.4.4@
9=91@
35=A@
になります
仕様書P12にも書いてありますが簡単に説明していきます
1番目 ・・・ 8=FIX.4.4@
FIXメッセージでは最初に指定しなければなりません。
OANDAではFIX.4.2とFIX.4.4(FIXのバージョン)が指定できますが
私のブログではFIXは4.4のバージョンで実装していきますので
常にFIX.4.4指定します
2番目 ・・・ 9=91@
タグ10、フィールド名Checksumフィールドに転送されるメッセージの長さ(バイト)。
FIXメッセージでは常に2番目のフィールドになります
最初はここの設定する値がわかりませんでした。(;^_^A
最後に設定する値を説明します
3番目 ・・・ 35=A@
具体的なメッセージタイプ
FIXメッセージでは常に3番目のフィールドになります
Aはログオンを意味します。
今のところメッセージタイプごとに記事を書いていく予定です。
たくさん定義されていますがOANDAで使用できるのは割と少ないですね。
仕様書P51でOANDAがサポートしているメッセージタイプが
確認できます。
上記以外はどの順番で指定しても問題ないのかな?と思っていますが
確認はしていません。<(_ _)>
さて、残りの4つも続けて説明していきます
34=1@
整数のメッセージ・シーケンス番号
この値はクライアントからサーバーに送信するたびに
1増やした値を指定すればOKです
初めのFIXメッセージを送信するとき、
すなわちログオンするときは1を指定して、次は2、3と指定します
49=testusr4109@
メッセージの送信者を識別するために付与される値。
ここは常にログインユーザーIDです。
OANDAからもらったユーザーIDを指定してください
52=20101124-20:27:25.000@
メッセージ送信の時刻(常にUTC(協定世界時、または ‘GMT’ )で表示
と書いていますが、ちょっと前はUTCを指定したのですが
現在は日本時間を指定すればいいみたいです
56=OANDA@
メッセージの送信先を識別するために付与される値。
ここは常に"OANDA"を指定します。
さて、仕様書には
タグ57、フィールド名TargetSubIDが残っていますが
こいつもついでに説明しておこうかなと思いましたが
実際に使う時になったら説明します。
自分にとってはこのフィールドが曲者でした・・・。
わかってしまえば、「なんじゃーい。それでいいんかい!」
と簡単なんですけどね。^^
~ 重要 ~
タグ9、フィールド名BodyLengthに設定する値について
この値は簡単に説明すると、
FIXメッセージ3番目のフィールド(タグ35、フィールド名MsgType)
からタグ10、フィールド名CheckSumの1つ前までの文字列の長さを指定すれば
OKです。(≧∇≦)b
わからなかったら下のソースを見ていただいた方が
はやいです。
Header(ヘッダフィールド)をC#で実装してみよう!!
これを実行すれば 9=91@ と出力されます。
※CheckSumメソッドは前回の記事に載せています
前回と似ていますが、タグ9、フィールド名BodyLengthがあるので
少し変更されています。
ログオンに関してはユーザーIDとパスワードを変更すれば
そのまま動作しそうですね ^^
次回はFIXからいったん離れて、
まずはサーバーへ接続してみよう!!です。
少し長いな・・・。ふ~っ、疲れた(。´-д-)
今回は長いので前置きなしでいってみよう!!
今日はHeader(ヘッダフィールド)を説明します
いつも説明しているFIX メッセージを見ていきましょう
見やすいようにメッセージフィールド毎に分けています。
本来は1行です。@は0x01(SOH)を表しています
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
98=0@
108=300@
141=Y@
554=Passw0rd@
10=133@
上のFIXメッセージを確認するとHeader(ヘッダフィールド)は
次の7つになります
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
7つのうち順番が決まっているのは
8=FIX.4.4@
9=91@
35=A@
になります
仕様書P12にも書いてありますが簡単に説明していきます
1番目 ・・・ 8=FIX.4.4@
FIXメッセージでは最初に指定しなければなりません。
OANDAではFIX.4.2とFIX.4.4(FIXのバージョン)が指定できますが
私のブログではFIXは4.4のバージョンで実装していきますので
常にFIX.4.4指定します
2番目 ・・・ 9=91@
タグ10、フィールド名Checksumフィールドに転送されるメッセージの長さ(バイト)。
FIXメッセージでは常に2番目のフィールドになります
最初はここの設定する値がわかりませんでした。(;^_^A
最後に設定する値を説明します
3番目 ・・・ 35=A@
具体的なメッセージタイプ
FIXメッセージでは常に3番目のフィールドになります
Aはログオンを意味します。
今のところメッセージタイプごとに記事を書いていく予定です。
たくさん定義されていますがOANDAで使用できるのは割と少ないですね。
仕様書P51でOANDAがサポートしているメッセージタイプが
確認できます。
上記以外はどの順番で指定しても問題ないのかな?と思っていますが
確認はしていません。<(_ _)>
さて、残りの4つも続けて説明していきます
34=1@
整数のメッセージ・シーケンス番号
この値はクライアントからサーバーに送信するたびに
1増やした値を指定すればOKです
初めのFIXメッセージを送信するとき、
すなわちログオンするときは1を指定して、次は2、3と指定します
49=testusr4109@
メッセージの送信者を識別するために付与される値。
ここは常にログインユーザーIDです。
OANDAからもらったユーザーIDを指定してください
52=20101124-20:27:25.000@
メッセージ送信の時刻(常にUTC(協定世界時、または ‘GMT’ )で表示
と書いていますが、ちょっと前はUTCを指定したのですが
現在は日本時間を指定すればいいみたいです
56=OANDA@
メッセージの送信先を識別するために付与される値。
ここは常に"OANDA"を指定します。
さて、仕様書には
タグ57、フィールド名TargetSubIDが残っていますが
こいつもついでに説明しておこうかなと思いましたが
実際に使う時になったら説明します。
自分にとってはこのフィールドが曲者でした・・・。
わかってしまえば、「なんじゃーい。それでいいんかい!」
と簡単なんですけどね。^^
スポンサーリンク
~ 重要 ~
タグ9、フィールド名BodyLengthに設定する値について
この値は簡単に説明すると、
FIXメッセージ3番目のフィールド(タグ35、フィールド名MsgType)
からタグ10、フィールド名CheckSumの1つ前までの文字列の長さを指定すれば
OKです。(≧∇≦)b
わからなかったら下のソースを見ていただいた方が
はやいです。
Header(ヘッダフィールド)をC#で実装してみよう!!
private void button1_Click(object sender, EventArgs e)
{
var sb = new StringBuilder();
// 3番目のフィールドから作成するのがポイントです
sb.Append("35=A" + Convert.ToChar(0x01));
sb.Append("34=1" + Convert.ToChar(0x01));
sb.Append("49=testusr4109" + Convert.ToChar(0x01));
sb.Append("52=" + DateTime.Now.ToString("yyyyMMdd-HH:mm:ss.fff") + Convert.ToChar(0x01));
sb.Append("56=OANDA" + Convert.ToChar(0x01));
sb.Append("98=0" + Convert.ToChar(0x01));
sb.Append("108=300" + Convert.ToChar(0x01));
sb.Append("141=Y" + Convert.ToChar(0x01));
sb.Append("554=Passw0rd" + Convert.ToChar(0x01));
// ここまでのsbの文字列の長さをタグ9に設定します
sb.Insert(0, "9=" + sb.Length.ToString() + Convert.ToChar(0x01));
sb.Insert(0, "8=FIX.4.4" + Convert.ToChar(0x01));
// 先頭に追加することで
// 1番目 タグ8、フィールド名BeginString
// 2番目 タグ9、フィールド名BodyLength
// 3番目 タグ35、フィールド名MsgType
// と順番になりました
// チェックサムの計算は最初から最後までのフィールド
// が対象です
sb.Append("10=" + CheckSum(sb).ToString("000") + Convert.ToChar(0x01));
using (var fs = new FileStream(@"result.bin", FileMode.Create))
{
fs.Write(Encoding.ASCII.GetBytes(sb.ToString()), 0, sb.Length);
}
}
これを実行すれば 9=91@ と出力されます。
※CheckSumメソッドは前回の記事に載せています
前回と似ていますが、タグ9、フィールド名BodyLengthがあるので
少し変更されています。
ログオンに関してはユーザーIDとパスワードを変更すれば
そのまま動作しそうですね ^^
次回はFIXからいったん離れて、
まずはサーバーへ接続してみよう!!です。
少し長いな・・・。ふ~っ、疲れた(。´-д-)
FIX メッセージ ~ Trailer(トレーラフィールド) ~ [FIX メッセージ]
こんばんわ!!キキです。
FXの取引勝ってますか?
私はダウ理論で少し勝つことができたのですが
2か月経てば負けてしまったので
ダウ理論を使うのも諦めようと思っていたのですが
1か月間は勝つことができたんだ!!
と、いうことに自信を持って
ダウ理論とインジケーターを組み合わせた手法で
やっていくことにしました!!
そして、この3日間の成績は
なんと!!
+8.7pips
-0.1pips
+14.1pips
といい感じの結果になりました!!v(≧∇≦)v イェェ~イ♪
最終目標は1日+10pipsで考えています!!
もうこれ以上は望みません。
メンタル崩壊しないように、ただただ同じことを
延々としていくだけでいいのだ!!
FXがつまらなくなった時が1人前の証だ!!
うぉー!!w( ▼o▼ )w オオォォ!!
(1人気合いが入ってます…)
え~、さて、気を取り直してと・・・。
それでは、Trailer(トレーラフィールド)について説明します
Trailer(トレーラフィールド)はFIX メッセージの終わりに
出てこなければなりません。
タグの値は10、フィールド名はCheckSumです
※いつも説明しているFIX メッセージ
見やすいようにメッセージフィールド毎に分けています。
本来は1行です。@は0x01(SOH)を表しています
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
98=0@
108=300@
141=Y@
554=Passw0rd@
10=133@
OANDAの仕様書を確認すると
「3バイトの単純チェックサムがメッセージの終りの区切り文字
として(トレーリング(SOH)とともに)機能する。
常に3文字で定義される。」
と書いてあります。
難しいことはよくわかりませんがチェックサムの値を設定すると
言うことです
ところで、チェックサムとは?
私が説明するよりもググってもらった方が詳しい説明が
載っていますので各自で調べてみてください(^ ^)
~ 重要 ~
チェックサム計算対象はFIX メッセージのうち
Trailer(トレーラフィールド)を除いたメッセージで計算します
この時点ではチェックサムの値がわからないから当たり前か。f(^_^)
CheckSum(チェックサム)をC#で計算してみよう!!
端が切れているかもしれませんがコピーはちゃんと
できるみたいです。
コピペして実行してみてください。
これを実行すると 10=133@ と出力されます。
期待どおりの結果になりましたね。
よかった、よかった。ε-(^∇^;)ホッ
次回はFIX メッセージのHeader(ヘッダフィールド)について説明します
FXの取引勝ってますか?
私はダウ理論で少し勝つことができたのですが
2か月経てば負けてしまったので
ダウ理論を使うのも諦めようと思っていたのですが
1か月間は勝つことができたんだ!!
と、いうことに自信を持って
ダウ理論とインジケーターを組み合わせた手法で
やっていくことにしました!!
そして、この3日間の成績は
なんと!!
+8.7pips
-0.1pips
+14.1pips
といい感じの結果になりました!!v(≧∇≦)v イェェ~イ♪
最終目標は1日+10pipsで考えています!!
もうこれ以上は望みません。
メンタル崩壊しないように、ただただ同じことを
延々としていくだけでいいのだ!!
FXがつまらなくなった時が1人前の証だ!!
うぉー!!w( ▼o▼ )w オオォォ!!
(1人気合いが入ってます…)
え~、さて、気を取り直してと・・・。
それでは、Trailer(トレーラフィールド)について説明します
Trailer(トレーラフィールド)はFIX メッセージの終わりに
出てこなければなりません。
タグの値は10、フィールド名はCheckSumです
※いつも説明しているFIX メッセージ
見やすいようにメッセージフィールド毎に分けています。
本来は1行です。@は0x01(SOH)を表しています
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
98=0@
108=300@
141=Y@
554=Passw0rd@
10=133@
OANDAの仕様書を確認すると
「3バイトの単純チェックサムがメッセージの終りの区切り文字
として(トレーリング(SOH)とともに)機能する。
常に3文字で定義される。」
と書いてあります。
難しいことはよくわかりませんがチェックサムの値を設定すると
言うことです
ところで、チェックサムとは?
私が説明するよりもググってもらった方が詳しい説明が
載っていますので各自で調べてみてください(^ ^)
~ 重要 ~
チェックサム計算対象はFIX メッセージのうち
Trailer(トレーラフィールド)を除いたメッセージで計算します
この時点ではチェックサムの値がわからないから当たり前か。f(^_^)
CheckSum(チェックサム)をC#で計算してみよう!!
端が切れているかもしれませんがコピーはちゃんと
できるみたいです。
コピペして実行してみてください。
private int CheckSum(StringBuilder sb)
{
var sum = 0;
for (var i = 0; i < sb.Length; i++)
{
sum += Convert.ToInt32(sb[i]);
}
return sum % 256;
}
private void button1_Click(object sender, EventArgs e)
{
var sb = new StringBuilder();
sb.Append("8=FIX.4.4" + Convert.ToChar(0x01));
sb.Append("9=91" + Convert.ToChar(0x01));
sb.Append("35=A" + Convert.ToChar(0x01));
sb.Append("34=1" + Convert.ToChar(0x01));
sb.Append("49=testusr4109" + Convert.ToChar(0x01));
sb.Append("52=20101124-20:27:25.000" + Convert.ToChar(0x01));
sb.Append("56=OANDA" + Convert.ToChar(0x01));
sb.Append("98=0" + Convert.ToChar(0x01));
sb.Append("108=300" + Convert.ToChar(0x01));
sb.Append("141=Y" + Convert.ToChar(0x01));
sb.Append("554=Passw0rd" + Convert.ToChar(0x01));
sb.Append("10=" + CheckSum(sb).ToString("000") + Convert.ToChar(0x01));
using (var fs = new FileStream(@"result.bin", FileMode.Create))
{
fs.Write(Encoding.ASCII.GetBytes(sb.ToString()), 0, sb.Length);
}
}
これを実行すると 10=133@ と出力されます。
期待どおりの結果になりましたね。
よかった、よかった。ε-(^∇^;)ホッ
次回はFIX メッセージのHeader(ヘッダフィールド)について説明します
FIX メッセージ② [FIX メッセージ]
おはようございます。キキです
突然ですが、最近のFXの成績はどうですか?
いろいろと試行錯誤して頑張ってるけど
一向によくならん!!
順調に負け続けてます。
最初は、インジケーターをいじくりまわして
聖杯探しの旅に出かけ、聖杯はないってことに気づき
じゃ、どうする?ってなった時にダウ理論に出会いました
ダウ理論自体は前から知っていたけれどそれをトレードに
使ったことはなかったので、
「もう、これしかない!!」ってことで最近はダウ理論
メインで取引していました。
すると日単位でだんだんと勝てるようになってきて
月単位で初めてプラスになり、「やっと、きたのか?」
と思っていたら、次の月はマイナスになってしまいました…。
ダウ理論もダメなのか~。
と、現在はまたインジケーターでの取引に戻そうかなと考えています
早く俺の時代こないかな~。(T T)
皆さん、前回の続きは覚えていますか?
FIX メッセージは複数個のメッセージフィールドからできている
ということです
まだの人はこちらから前回の記事を読んでください
さて、ここからが前回の続きになります
FIX メッセージは
・ヘッダー(header)
・ボディ(body)
・トレーラー(trailer)
からできており
FIX メッセージ = header + body + trailerという順番で構成されています
これを前回使用したFIX メッセージで説明すると
※前回のFIX メッセージ
8=FIX.4.4@9=91@35=A@34=1@49=testusr4109@52=20101124-20:27:25.000@56=OANDA@98=0@108=300@141=Y@554=Passw0rd@10=133@
・ヘッダー(header)
8=FIX.4.4@9=91@35=A@34=1@49=testusr4109@52=20101124-20:27:25.000@56=OANDA@
・ボディ(body)
98=0@108=300@141=Y@554=Passw0rd@
・トレーラー(trailer)
10=133@
上記の3つに分かれます
詳細はオアンダのFIX仕様書P12、P14を参照してください
サーバーに送信するFIX メッセージは
FIX メッセージ = header + body + trailerとなっており
bodyの内容はheader内のタグ35(フィールド名はMsgType)の値に
よって変わります。
前回のFIX メッセージでは35=A@の部分ですね。
これはAはログオンメッセージと定義されています
タグ、メッセージ一覧はサイドバーのマイカテゴリー
から見ることができます
今後必要になるので1度確認してください
次回はtrailerについて説明する予定です。
なぜ、header、body、trailerの順に説明しないのか?と言うと
trailerはメッセージフィールドが1つだけで説明しやすいので
先にtrailerから説明して、次にheaderを説明する予定です。
突然ですが、最近のFXの成績はどうですか?
いろいろと試行錯誤して頑張ってるけど
一向によくならん!!
順調に負け続けてます。
最初は、インジケーターをいじくりまわして
聖杯探しの旅に出かけ、聖杯はないってことに気づき
じゃ、どうする?ってなった時にダウ理論に出会いました
ダウ理論自体は前から知っていたけれどそれをトレードに
使ったことはなかったので、
「もう、これしかない!!」ってことで最近はダウ理論
メインで取引していました。
すると日単位でだんだんと勝てるようになってきて
月単位で初めてプラスになり、「やっと、きたのか?」
と思っていたら、次の月はマイナスになってしまいました…。
ダウ理論もダメなのか~。
と、現在はまたインジケーターでの取引に戻そうかなと考えています
早く俺の時代こないかな~。(T T)
スポンサーリンク
皆さん、前回の続きは覚えていますか?
FIX メッセージは複数個のメッセージフィールドからできている
ということです
まだの人はこちらから前回の記事を読んでください
さて、ここからが前回の続きになります
FIX メッセージは
・ヘッダー(header)
・ボディ(body)
・トレーラー(trailer)
からできており
FIX メッセージ = header + body + trailerという順番で構成されています
これを前回使用したFIX メッセージで説明すると
※前回のFIX メッセージ
8=FIX.4.4@9=91@35=A@34=1@49=testusr4109@52=20101124-20:27:25.000@56=OANDA@98=0@108=300@141=Y@554=Passw0rd@10=133@
・ヘッダー(header)
8=FIX.4.4@9=91@35=A@34=1@49=testusr4109@52=20101124-20:27:25.000@56=OANDA@
・ボディ(body)
98=0@108=300@141=Y@554=Passw0rd@
・トレーラー(trailer)
10=133@
上記の3つに分かれます
詳細はオアンダのFIX仕様書P12、P14を参照してください
サーバーに送信するFIX メッセージは
FIX メッセージ = header + body + trailerとなっており
bodyの内容はheader内のタグ35(フィールド名はMsgType)の値に
よって変わります。
前回のFIX メッセージでは35=A@の部分ですね。
これはAはログオンメッセージと定義されています
タグ、メッセージ一覧はサイドバーのマイカテゴリー
から見ることができます
今後必要になるので1度確認してください
次回はtrailerについて説明する予定です。
なぜ、header、body、trailerの順に説明しないのか?と言うと
trailerはメッセージフィールドが1つだけで説明しやすいので
先にtrailerから説明して、次にheaderを説明する予定です。
FIX メッセージ① [FIX メッセージ]
こんにちは!!キキです。
雨ばかり続いて、晴れたと思ったら少し寒くなってきましたね
季節の変わり目は体調を崩しやすいので皆さん気をつけましょう
まぁ、言ってる本人が少し風邪気味なんですが…
さて、FIX メッセージの説明をしていきます
OANDA FIX 仕様説明書(日本語ドキュメント 最終更新日:2015年1月8日)の
6ページ目にのっているFIX メッセージを例として説明します
※OANDAではスペースとなっているところをわかりやすくするため
@に置き換えています。
8=FIX.4.4@9=91@35=A@34=1@49=testusr4109@52=20101124-20:27:25.000@56=OANDA@98=0@108=300@141=Y@554=Passw0rd@10=133@
※もしかしたら折り返されて表示されているかもしれませんが1行表示です
1つずつ順番に説明していきます。
FIX メッセージは複数のメッセージフィールドからできています。
メッセージフィールドは、8=FIX.4.4@や9=91@のことです。
簡単に言えば@の次から、次の@までです。下で詳しく説明します。
メッセージフィールドの終わりは 0x01となっています。
例では0x01を表すのに@を使用しています。
他のサイトを見ると、|(パイプ)やスペースを指定しているものも見られます
OANDAの仕様書にはSOHと説明されている部分ですね。
SOHはstart of headerの略です。
FIX メッセージを分解すると
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
98=0@
108=300@
141=Y@
554=Passw0rd@
10=133@
と、12個のメッセージフィールドからできていることがわかります
さらにメッセージフィールドの中身を詳しく見てみましょう
メッセージフィールドの中身は「=」で区切られていて
TAG=VALUE@となっています
例として、8=FIX.4.4@を分解すると
TAGは8
VALUEはFIX.4.4
@はSOH(メッセージフィールドの終わりを表します)
になります。
~おまけ~
メッセージフィールド9=91@をC#で表してみよう!!
var messageField = new byte[] { 0x39, 0x3D,0x39, 0x31, 0x01};
になります。
次回も続けてFIX メッセージの説明をしていきます
雨ばかり続いて、晴れたと思ったら少し寒くなってきましたね
季節の変わり目は体調を崩しやすいので皆さん気をつけましょう
まぁ、言ってる本人が少し風邪気味なんですが…
さて、FIX メッセージの説明をしていきます
OANDA FIX 仕様説明書(日本語ドキュメント 最終更新日:2015年1月8日)の
6ページ目にのっているFIX メッセージを例として説明します
※OANDAではスペースとなっているところをわかりやすくするため
@に置き換えています。
8=FIX.4.4@9=91@35=A@34=1@49=testusr4109@52=20101124-20:27:25.000@56=OANDA@98=0@108=300@141=Y@554=Passw0rd@10=133@
※もしかしたら折り返されて表示されているかもしれませんが1行表示です
1つずつ順番に説明していきます。
FIX メッセージは複数のメッセージフィールドからできています。
メッセージフィールドは、8=FIX.4.4@や9=91@のことです。
簡単に言えば@の次から、次の@までです。下で詳しく説明します。
メッセージフィールドの終わりは 0x01となっています。
例では0x01を表すのに@を使用しています。
他のサイトを見ると、|(パイプ)やスペースを指定しているものも見られます
OANDAの仕様書にはSOHと説明されている部分ですね。
SOHはstart of headerの略です。
FIX メッセージを分解すると
8=FIX.4.4@
9=91@
35=A@
34=1@
49=testusr4109@
52=20101124-20:27:25.000@
56=OANDA@
98=0@
108=300@
141=Y@
554=Passw0rd@
10=133@
と、12個のメッセージフィールドからできていることがわかります
スポンサーリンク
さらにメッセージフィールドの中身を詳しく見てみましょう
メッセージフィールドの中身は「=」で区切られていて
TAG=VALUE@となっています
例として、8=FIX.4.4@を分解すると
TAGは8
VALUEはFIX.4.4
@はSOH(メッセージフィールドの終わりを表します)
になります。
~おまけ~
メッセージフィールド9=91@をC#で表してみよう!!
var messageField = new byte[] { 0x39, 0x3D,0x39, 0x31, 0x01};
になります。
次回も続けてFIX メッセージの説明をしていきます