ロット数の正規化

ロット数を小数第何位で四捨五入すればいいか?という話

ロット数の単位はFX業者ごとに異なります。

多くの場合は0.01単位だと思いますが、0.1単位の業者もあるでしょう。中には0.001単位もあるかもしれません。

複利等の計算式で算出したロット数が0.5472みたいな時、小数第何位で四捨五入すれば良いでしょうか?

自分専用であれば自分が使うFX業者に対応した桁数を直接指定すればOKですが、第三者に提供する場合はそうもいきません。

そのままOrderSend関数に渡してもMT4が上手いこと処理してくれるので、何もしないという選択もアリですが、できれば正確に渡したいもの。

たまに必要になるんですよね、これ。

というわけで、備忘録がてらロット数を正規化する方法を記載します。

double lots = 0.5472; // 複利計算などで算出した汚い数値
double lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
lots = NormalizeDouble(lots, (int)MathAbs(MathLog10(lotstep)));

MODE_LOTSTEPはロット数の単位です。多くの場合、0.01ですね。

MathLog10関数はMQL4の組込関数で、10の対数でlog10を計算してくれます。

log10(0.01)=log10(10の-2乗)=-2*log10(10)=-2

MathAbs関数もMQL4の組込関数で絶対値を返してくれます。

-2の絶対値は2ですね。

というわけで、NormalizeDouble関数で0.5472を小数第2位で四捨五入せよということになり、lots=0.55となります。

対数、覚えてますか?

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

LINE公式アカウントを友だち追加して、MT4のプログラミング講座を無料で受けちゃおう!

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

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

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

アイキャッチ

>

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

CTR IMG