MT4の取引レポートをCSV出力するツールをアップデートしました

MT4の取引レポートをCSV出力するツールに不具合があり、修正しました。

0711-is1

 

X.X0000000000Xとか、X.X9999999999とか

 

 

でも、今年の6月の途中から急におかしくなったんですよ。何故か。

 

事象としては、主にトレード損益のpipsの小数点以下数値がおかしなことに。

例:普通 5.9 (pips)   が、5.899999999…(pips)となる

急に発生したよなこれ。

どこかのサンプルを参考に作った箇所でしたが、うーん。

 

コンピュータの世界では、小数点を含む数値の保持にある程度限界と弱点があります。

ロジック上、ちょっと手抜きをしていて、いままでは小さい数同士の引き算をしたことにより、極小さい誤差が生じて、pipsへ単純変換した際に誤差が増幅されてしまい、あんなことになっていました。(まあ、若干説明に正確でないところがありますが)

 

今回は、お手軽にpips計算時の誤差を防いだりなんだりかんだりするようにして、5.9pipsとでるように修正しました。

0711-is2

 

 

 

 

0711-is25

 

 

修正のサンプルが良く無いですね。

枠線の下は10倍の結果なのに、枠線内は十倍されて無いですね。

 

修正結果は、それなりに確認していて、使用に問題はないかと思います。

ダメだったら、”ダメだぞコラー”って連絡を下さい。

 

 

 

そして、あー直ったと思っていた所、単純出力のLotsも、例えば0.070000001の出力が。。。なんでだーーーー。。

0711-is3

 

 

 

 

今直さなければ、暫く直さないだろうと思い、ついでに直しました。

0711-is4

 

 

 

 

MT4の取引レポートをCSV出力するツールはこちら(ソースコードを公開しています。ご自由にどうぞ)

 

追伸:特定のブローカーの特定の通貨で、0除算エラーが発生し、レコードが全て出力されない場合があることが分かりました。

原因は、ブローカー側の設定にあるかと思われる事象です、(M社ではエラー、P社ではエラーにならなかったりします)。

これにはまるとレコード欠損してしまいますが、もう力技のコーディングで回避するしかないです。はい。

0711-ise

 

このように、ハードコーディングして、0除算エラーを回避します。

Pepperstone口座でテストしてたので気づきませんでしたが、いざ他のブローカーで稼働させたらエラーが発生してしまいました。

 

今回問題が起きたところでは、レートの小数桁数の取得ができず、参照結果が必ず0になってしまい、うまくない動きをしてしまいます。

 

 

 

 

コメントを残す