DoubleToString関数で小数点以下を全て表示する

レートの小数点を3/5桁でログ出力する方法

Print()関数を使うことで、任意の情報をログファイルに出力できます。デバッグ目的で使うことが多いと思います。

if文等の条件判断が正しく行われているかを確認する際に、特に力を発揮してくれます。

先日、ある読者の方からの依頼でEAを作成していたのですが、その際、ティックごとのレートを確認する必要があり、Print()関数を使いました。

以下がその時に使ったコードです。

Print("Ask = ", Ask, " Bid = ", Bid);

説明は…不要ですよね。AskとBidのレートを表示するだけです。実行結果は以下の通りでした。

0	14:36:54	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.1314 Bid = 1.1311
0	14:36:54	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.1313 Bid = 1.131
0	14:36:54	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.1313 Bid = 1.131
0	14:36:54	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.1312 Bid = 1.1309
0	14:36:54	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.1311 Bid = 1.1308
0	14:36:54	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.1312 Bid = 1.1309
0	14:36:54	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.1311 Bid = 1.1308

問題ないように見えますが、FxProのEURUSDは小数点以下5桁まで存在します。でも、4桁目までしか出力されていません。

2行目と3行目のAskはどちらも1.1313ですが、恐らく5桁目は違うと思われます。3行目でif文の条件が成立したので、そう考えました。もし、完全に同一値なら、2行目で成立するはずですから。

NormalizeDouble()関数なんかも使ってみましたが、現象変わらず。

困ったなーと色々ググっていたら、DoubleToString()関数を発見。こいつの存在をすっかり失念していました。

で、DoubleToString()関数を使って改良したコードが以下です。

Print("Ask = ", DoubleToString(Ask, Digits), " Bid = ", DoubleToString(Bid, Digits));

こいつで再実行したところ、以下の期待通りの結果を得られました!

0	14:48:04	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.13142 Bid = 1.13112
0	14:48:04	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.13126 Bid = 1.13096
0	14:48:04	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.13130 Bid = 1.13100
0	14:48:04	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.13123 Bid = 1.13093
0	14:48:04	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.13115 Bid = 1.13085
0	14:48:04	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.13119 Bid = 1.13089
0	14:48:04	2015.02.02 00:00  EA-name EURUSD,M1: Ask = 1.13109 Bid = 1.13079

やっぱり、2行目と3行目のAskは異なる値でしたね。これできちんとアルゴリズムを検証できます♪

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG