奇妙なMT4の出力 – mqlのバグ?

こんにちは、
移動平均と現在の価格の間の距離(ピップ)を計算することになっている簡単なスクリプトを書きました。
int start()
{
アラート( " ");
アラート( "数字:"、数字)。
アラート( "入札:" (入札));
Alert( "MA:"、 (iMA(NULL、0、3、1、MODE_LWMA、PRICE_CLOSE、0)));
if(入札> iMA(NULL、0、3、1、MODE_LWMA、PRICE_CLOSE、0))
{
x =入札 – iMA(NULL、0、3、1、MODE_LWMA、PRICE_CLOSE、0)。
アラート( "入札 – MA ="、x);
}
if(入札<iMA $B!JNULL、0、3、1、MODE_LWMA、PRICE_CLOSE、0))
{
x = iMA(NULL、0、3、1、MODE_LWMA、PRICE_CLOSE、0) – 入札。
アラート( "MA – 入札="、x);
}
y = MathPow(10、Digits);
アラート( "10のべき乗"、数字、 "="、y)。
z = x * y。
Alert(x、 "*"、y、 "="、z);
(0)を返します。
}
出力例
桁数:4
入札:1.08420000
MA:1.0749
MA – 入札= 0.0093
10の4乗= 10000

0.0093 * 10000 = 92.8333

数字:5
入札:1.53059000
MA:1.53
入札 – MA = 0.000 6
10の5乗= 100000

0.0006 * 100000 = 59

0.0093 * 10000はどうして92.8333になりますか? 93になるはずです。
0.0006 * 100000は59になりますか。
これは単一のケースではありません、ほとんどの場合、計算は間違っています…

誰かがそれが起こることを説明できますか?それはmql4エラーですか、それとも私は何かが足りないのですか?


これは、double値を含む算術演算に関係する問題のように思えます – この問題に関するこれまでの数多くの議論の1つについては、https://www.mql5.com/en/forum/117138を参照してください。本質的には、MT4はあなたがあなたの警告で見ているよりもより 正確な桁数を使用しています。


私はまたあなたがこれを読むことを勧めます – >記事 – >機能 – > MQL4で倍精度浮動小数点数を使った作業



5259: https://www.mql5.com/en/forum/124160


Originally posted 2019-08-04 03:47:54.

Translate »