エラー、バグ、質問 - ページ 2820 1...281328142815281628172818281928202821282228232824282528262827...3185 新しいコメント Alexey Viktorov 2020.08.10 07:02 #28191 Kira27:証明書で混乱しました))) リファレンスには、インバーテッドコンマなしで書かれています。だから、そこに自分を置くのです。 fxsaber 2020.08.10 07:04 #28192 ヒゲの質問です。しかし、この結果は理解できない。 void OnStart() { Print(NormalizeDouble(1.79435, 5) == 1.79435); // false } Slava 2020.08.10 07:32 #28193 fxsaber: ヒゲの質問です。しかし、この結果は理解できない。 正確なダブり比較をするな、イプシロンを使え」と100回言われました。私たちのドキュメントに含まれています。 0.3や0.7でも、あなたの認識とは比較にならないでしょう。それを受け入れて、乗り越えてください。あるいは、(例えばMTIで)学びに行く。 fxsaber 2020.08.10 07:41 #28194 Slava:正確なダブり比較をするな、イプシロンを使え」と100回言われました。私たちのドキュメントに含まれています。 ダブり比較のやり方はもちろん知っています。 0.3や0.7でも、あなたの認識とは比べものにならないでしょう。それを受け入れて、乗り越えてください。あるいは、(例えばMTIで)学んでくること。 Print(NormalizeDouble(0.3, 5) == 0.3); // true Print(NormalizeDouble(0.7, 5) == 0.7); // true Print(NormalizeDouble(0.12345, 5) == 0.12345); // true 質問を理解していない。 Rorschach 2020.08.10 07:41 #28195 decimalだと楽なんだけど、遅いんだよね( Slava 2020.08.10 08:31 #28196 fxsaber:もちろんダブり比較もできますよ。質問を理解していない。 他にも微妙なところがあります。 実数を0.5倍したものと2.0倍したものでは、比較にならない場合があります。 fxsaber 2020.08.10 08:59 #28197 Slava:他にも微妙なところがあります。実数に0.5を乗じても2.0で割った数値にならない場合がある。 それはそうですね。しかし、問題は、なぜ1.79435という数字が小数点以下5桁まで正規化されていないのか、ということだ。 ZS この質問の背景は。 テスターのSLが起動した。DEAL_PRICE = 1.79435, ORDER_PRICE_OPEN = 0(as in MT5), DEAL_COMMENT = "sl 1.79435". SLを実行したときに滑りがあるかどうか知りたかったのです。そこで、単純にDEAL_PRICEとコメントにあった価格を比較してみました。私の目では価格が同じに見えますが、MQLではそうではないことがわかります。ようやく元の比較にたどり着きました。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム エラー、バグ、質問 fxsaber, 2020.08.10 09:04 void OnStart() { Print(NormalizeDouble(1.79435, 5) == 1.79435); // false } Alexey Viktorov 2020.08.10 09:34 #28198 fxsaber:すべて真実です。しかし、問題は、なぜ1.79435という数字が小数点以下5桁まで正規化されていないのか、ということだった。ZS 質問の背景テスターのSLが起動した。DEAL_PRICE = 1.79435, ORDER_PRICE_OPEN = 0(as in MT5), DEAL_COMMENT = "sl 1.79435".SLを実行したときに滑りがあるかどうか知りたかったのです。そこで、単純にDEAL_PRICEとコメントにあった価格を比較してみました。私の目では価格が同じに見えますが、MQLではそうではないことがわかります。結局、元の比較にたどり着いた。 申し訳ないが、そう言われるとなんだか不思議な気がする。 fxsaber 2020.08.10 09:37 #28199 Alexey Viktorov:申し訳ないが、そんなことを言われると、なんだか変な感じだ。 質問を繰り返す。 fxsaber: 1.79435という数値が小数点以下5桁まで正規化されていないのはなぜですか? void OnStart() { const double Norm = NormalizeDouble(1.79435, 5); Print((double)(string)Norm == Norm); // false Print((double)(string)Norm == 1.79435); // true } Igor Makanu 2020.08.10 09:38 #28200 fxsaber:すべて真実です。しかし、問題は、なぜ1.79435という数字が小数点以下5桁まで正規化されていないのか、ということだった。 正規化は丸めではありません。 @Slava さんは、doubleの内部表現が異なると書いています。 #define PRINT(EX) Print(#EX," = ",EX) //+------------------------------------------------------------------+ void OnStart() { union ULONG_DOUBLE { double d_value; ulong ul_value; }tmp; double NORM_DOUBLE = NormalizeDouble(1.79435, 5); double CONST_DOUBLE = 1.79435; PRINT(NORM_DOUBLE); tmp.d_value = NORM_DOUBLE; PRINT(LongToHex(tmp.ul_value)); tmp.d_value = CONST_DOUBLE; PRINT(CONST_DOUBLE); PRINT(LongToHex(tmp.ul_value)); } //+------------------------------------------------------------------+ string LongToHex(const ulong value) { return(StringFormat("%llX", value)); } //+------------------------------------------------------------------+ 2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) NORM_DOUBLE = 1.79435 2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) LongToHex(tmp.ul_value) = 3FFCB5A858793DDA 2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) CONST_DOUBLE = 1.79435 2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) LongToHex(tmp.ul_value) = 3FFCB5A858793DD9 SZS: どこかに@Nikolai Semkoの 良い投稿がありました。彼はdoubleを使った作業方法についてとても良い説明をしていました。 UPD:https://www.mql5.com/ru/forum/1111/page2623#comment_14473837 1...281328142815281628172818281928202821282228232824282528262827...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
証明書で混乱しました)))
リファレンスには、インバーテッドコンマなしで書かれています。だから、そこに自分を置くのです。
ヒゲの質問です。しかし、この結果は理解できない。
正確なダブり比較をするな、イプシロンを使え」と100回言われました。私たちのドキュメントに含まれています。
0.3や0.7でも、あなたの認識とは比較にならないでしょう。それを受け入れて、乗り越えてください。あるいは、(例えばMTIで)学びに行く。
正確なダブり比較をするな、イプシロンを使え」と100回言われました。私たちのドキュメントに含まれています。
ダブり比較のやり方はもちろん知っています。
0.3や0.7でも、あなたの認識とは比べものにならないでしょう。それを受け入れて、乗り越えてください。あるいは、(例えばMTIで)学んでくること。
質問を理解していない。
もちろんダブり比較もできますよ。
質問を理解していない。
他にも微妙なところがあります。
実数を0.5倍したものと2.0倍したものでは、比較にならない場合があります。
他にも微妙なところがあります。
実数に0.5を乗じても2.0で割った数値にならない場合がある。
それはそうですね。しかし、問題は、なぜ1.79435という数字が小数点以下5桁まで正規化されていないのか、ということだ。
ZS この質問の背景は。
テスターのSLが起動した。DEAL_PRICE = 1.79435, ORDER_PRICE_OPEN = 0(as in MT5), DEAL_COMMENT = "sl 1.79435".
SLを実行したときに滑りがあるかどうか知りたかったのです。そこで、単純にDEAL_PRICEとコメントにあった価格を比較してみました。私の目では価格が同じに見えますが、MQLではそうではないことがわかります。ようやく元の比較にたどり着きました。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
エラー、バグ、質問
fxsaber, 2020.08.10 09:04
すべて真実です。しかし、問題は、なぜ1.79435という数字が小数点以下5桁まで正規化されていないのか、ということだった。
ZS 質問の背景
テスターのSLが起動した。DEAL_PRICE = 1.79435, ORDER_PRICE_OPEN = 0(as in MT5), DEAL_COMMENT = "sl 1.79435".
SLを実行したときに滑りがあるかどうか知りたかったのです。そこで、単純にDEAL_PRICEとコメントにあった価格を比較してみました。私の目では価格が同じに見えますが、MQLではそうではないことがわかります。結局、元の比較にたどり着いた。
申し訳ないが、そう言われるとなんだか不思議な気がする。
申し訳ないが、そんなことを言われると、なんだか変な感じだ。
質問を繰り返す。
1.79435という数値が小数点以下5桁まで正規化されていないのはなぜですか?
すべて真実です。しかし、問題は、なぜ1.79435という数字が小数点以下5桁まで正規化されていないのか、ということだった。
正規化は丸めではありません。
@Slava さんは、doubleの内部表現が異なると書いています。
2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) NORM_DOUBLE = 1.79435
2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) LongToHex(tmp.ul_value) = 3FFCB5A858793DDA
2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) CONST_DOUBLE = 1.79435
2020.08.10 13:33:37.737 tst_normalize (EURUSD,H1) LongToHex(tmp.ul_value) = 3FFCB5A858793DD9
SZS: どこかに@Nikolai Semkoの 良い投稿がありました。彼はdoubleを使った作業方法についてとても良い説明をしていました。
UPD:https://www.mql5.com/ru/forum/1111/page2623#comment_14473837