MT4の取引レポートをCSV出力するツールに不具合があり、修正しました。
X.X0000000000Xとか、X.X9999999999とか
でも、今年の6月の途中から急におかしくなったんですよ。何故か。
事象としては、主にトレード損益のpipsの小数点以下数値がおかしなことに。
例:普通 5.9 (pips) が、5.899999999…(pips)となる
急に発生したよなこれ。
どこかのサンプルを参考に作った箇所でしたが、うーん。
コンピュータの世界では、小数点を含む数値の保持にある程度限界と弱点があります。
ロジック上、ちょっと手抜きをしていて、いままでは小さい数同士の引き算をしたことにより、極小さい誤差が生じて、pipsへ単純変換した際に誤差が増幅されてしまい、あんなことになっていました。(まあ、若干説明に正確でないところがありますが)
今回は、お手軽にpips計算時の誤差を防いだりなんだりかんだりするようにして、5.9pipsとでるように修正しました。
修正のサンプルが良く無いですね。
枠線の下は10倍の結果なのに、枠線内は十倍されて無いですね。
修正結果は、それなりに確認していて、使用に問題はないかと思います。
ダメだったら、”ダメだぞコラー”って連絡を下さい。
そして、あー直ったと思っていた所、単純出力のLotsも、例えば0.070000001の出力が。。。なんでだーーーー。。
今直さなければ、暫く直さないだろうと思い、ついでに直しました。
MT4の取引レポートをCSV出力するツールはこちら(ソースコードを公開しています。ご自由にどうぞ)
追伸:特定のブローカーの特定の通貨で、0除算エラーが発生し、レコードが全て出力されない場合があることが分かりました。
原因は、ブローカー側の設定にあるかと思われる事象です、(M社ではエラー、P社ではエラーにならなかったりします)。
これにはまるとレコード欠損してしまいますが、もう力技のコーディングで回避するしかないです。はい。
このように、ハードコーディングして、0除算エラーを回避します。
Pepperstone口座でテストしてたので気づきませんでしたが、いざ他のブローカーで稼働させたらエラーが発生してしまいました。
今回問題が起きたところでは、レートの小数桁数の取得ができず、参照結果が必ず0になってしまい、うまくない動きをしてしまいます。