
MQL4MQL5 数学
NormalizeDouble()
- できること
- 小数を指定した桁数に四捨五入する
- 対応
- MQL4・MQL5
NormalizeDouble() とは
小数を指定した桁数で四捨五入する関数です。注文の価格・損切り・利確は、銘柄の桁数(_Digits)に合わせて NormalizeDouble() で丸めてから渡すのが基本です。
NormalizeDouble() の書式と引数
double NormalizeDouble(double value, int digits)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
value | double | 必須 | 丸める値。 |
digits | int | 必須 | 小数点以下の桁数(0〜8)。価格なら _Digits。 |
戻り値
丸めた値。
NormalizeDouble() の使い方(コード例)
MQL4・MQL5 共通
double pip = (_Digits == 3 || _Digits == 5) ? _Point * 10 : _Point;
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl = NormalizeDouble(bid - 15.5 * pip, _Digits); // 銘柄の桁数に丸める
Print("損切り価格:", DoubleToString(sl, _Digits));OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
NormalizeDouble() の注意点
- 丸めても、double の内部表現の都合で Print() すると 1.23450000001 のように見えることがあります。表示用の文字列が欲しいときは DoubleToString() を使います。
- ロット数を丸めるときは、NormalizeDouble() だけでなく、刻み幅(SYMBOL_VOLUME_STEP)の倍数に切り捨てる処理も必要です。












