価格 != 価格 ? - ページ 3 12345678 新しいコメント Simon Gniadkowski 2013.03.30 13:31 #21 WHRoeder:シンプルな解決 策ではなく、多くの計算が必要な場合 単純かどうかは,実装するコードによって決まる ... ... GreenMoney 2013.03.30 17:13 #22 RaptorUK:そこで、doubleをint型に変換してdoubleを比較するという解決策にたどり着きました。. . 私も、価格を比較するために、創造的な解決策を思いつきました(今のところ)。int ConvertToPoints (double _price) { double price_double = _price / Point; int price_int = MathRound(price_double); return (price_int); }価格を整数で表すint型にアップスケールするのです。 このように。ConvertToPoints(price) != ConvertToPoints(price)は絶対に成り立たない。 Ex Ovo Omnia 2013.04.03 08:18 #23 stdlib.mq4 のCompareDoubles() はこの議論から失格でしょうか?価格に使用する場合は、私のためによく動作します。 Simon Gniadkowski 2013.04.03 08:34 #24 Ovo: stdlib.mq4 のCompareDoubles() はこの議論から失格でしょうか?それは価格のために使用される場合、私のためによく働きます。 しかし、この関数が行うのは等価性の比較だけです。 William Roeder 2013.04.03 14:04 #25 Thirteen:ConvertToPoints(price) != ConvertToPoints(price)浮動小数点演算の除算、浮動小数点演算の加算、int型への変換、関数 呼び出し(コピー、ジャンプ、リターン=3、) * 2はすべて2の倍数です。(18) これは、除算と変換が他の演算と同等であると仮定した場合ですが、そうではありません。対if (MathAbs(a - b) > Point / 2.)引き算1回、テスト1回、否定1/2回(平均)、比較1回。(ポイント/2がinitで行われ、ABSがIFで置き換えられると3/2)物事を複雑にし過ぎない丸め誤魔化して等しい時にトリガーされる可能性があるif (a > b)aはbより確実に大きいif (a - b > Point / 2.)丸め誤差により、aがbより小さいときにトリガーされる可能性ありif (a >= b)aは間違いなくbより≧であるif (a - b > -Point/2.) if (a > b -Point/2.) if (a +Point/2. > b) 丸め誤差があればトリガがかかるif (a != b)間違いなく等しくないif (MathAbs(a - b) > Point / 2.) Simon Gniadkowski 2013.04.03 16:48 #26 WHRoeder:浮動小数点演算、浮動小数点加算、int型への変換、関数呼び出し(コピー、ジャンプ、リターン=3、)*2がすべて2回。(18) これは除算と変換が他の演算と同等であると仮定した場合ですが、そうではありません。対引き算1回、テスト1回、否定1/2回(平均)、比較1回。(ポイント/2がinitで行われ、ABSがIFで置き換えられると3/2)複雑にしすぎないで 2013.04.03 17:39:12 TestSpeed-CompareDbls USDJPY,M5: MathAbs(a - b) 9000000 times in 266 ms. 2013.04.03 17:39:11 TestSpeed-CompareDbls USDJPY,M5: ConvertToPoints 9000000 times in 1887 ms.2013.04.03 17:46:02 TestSpeed-CompareDbls USDJPY,M5: Flat(price) 9000000 times in 3604 ms.「MathAbs(a-b)メソッドはConvertToPoints()メソッドの約7倍、私のFlat()メソッドの約14倍の速さです。 Can price != price PREDICT time period FOREX - Trends, Forecasts Alain Verleyen 2013.04.04 10:07 #27 ちなみに、MQL5では、標準的な演算子をオーバーロード することで 、 非常に エレガントな ソリューションを 実現 することができます。 RFB 2013.04.04 12:41 #28 (intRecord > price / point)をテストしてみました。 intCheck = price /point; if (intRecord > intCheck) continue; 2013.04.04 14:27:38 TestSpeed-CompareDbls EURUSD,H4: MathAbs(a - b) HalfAPoint 99999999 times in 3403 ms.2013.04.04 14:27:42 TestSpeed-CompareDbls EURUSD,H4: (intRecord > intCheck) 99999999 times in 2505 ms.2013.04.04 14:27:40 TestSpeed-CompareDbls EURUSD,H4: intRecord > price /point 99999999 times in 1712 ms.しかし、3番目は実用に耐えないし、2番目(intRecord > intCheck)は比較前のintCheckのために1回多く代入されていました。 Can price != price PREDICT time period New MetaTrader 4 Client Simon Gniadkowski 2013.04.04 12:46 #29 rfb:(intRecord > price / point)をテストしてみました。2013.04.04 14:27:38 TestSpeed-CompareDbls EURUSD,H4: MathAbs(a - b) HalfAPoint 99999999 times in 3403 ms.2013.04.04 14:27:42 TestSpeed-CompareDbls EURUSD,H4: (intRecord > intCheck) 99999999 times in 2505 ms.2013.04.04 14:27:40 TestSpeed-CompareDbls EURUSD,H4: intRecord > price /point 99999999 times in 1712 ms.しかし、3rdは、intRecord > price /point 99999999 times in 1712 ms.しかし、3番目は実用に耐えないし、2番目(intRecord > intCheck)は比較前のintCheckのために1回多く代入されていました。 intRecord とは何ですか? RFB 2013.04.04 13:18 #30 int intCheck "と同じだが、他の変数と同様、関数の 前に値を割り当てる。 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
シンプルな解決 策ではなく、多くの計算が必要な場合
そこで、doubleをint型に変換してdoubleを比較するという解決策にたどり着きました。. .
私も、価格を比較するために、創造的な解決策を思いつきました(今のところ)。
価格を整数で表すint型にアップスケールするのです。 このように。
は絶対に成り立たない。
stdlib.mq4 のCompareDoubles() はこの議論から失格でしょうか?それは価格のために使用される場合、私のためによく働きます。
浮動小数点演算の除算、浮動小数点演算の加算、int型への変換、関数 呼び出し(コピー、ジャンプ、リターン=3、) * 2はすべて2の倍数です。(18) これは、除算と変換が他の演算と同等であると仮定した場合ですが、そうではありません。
対
引き算1回、テスト1回、否定1/2回(平均)、比較1回。(ポイント/2がinitで行われ、ABSがIFで置き換えられると3/2)
物事を複雑にし過ぎない
if (a > b)
if (a >= b)
if (a != b)
浮動小数点演算、浮動小数点加算、int型への変換、関数呼び出し(コピー、ジャンプ、リターン=3、)*2がすべて2回。(18) これは除算と変換が他の演算と同等であると仮定した場合ですが、そうではありません。
対
引き算1回、テスト1回、否定1/2回(平均)、比較1回。(ポイント/2がinitで行われ、ABSがIFで置き換えられると3/2)
複雑にしすぎないで
2013.04.03 17:39:11 TestSpeed-CompareDbls USDJPY,M5: ConvertToPoints 9000000 times in 1887 ms.
2013.04.03 17:46:02 TestSpeed-CompareDbls USDJPY,M5: Flat(price) 9000000 times in 3604 ms.
「MathAbs(a-b)メソッドはConvertToPoints()メソッドの約7倍、私のFlat()メソッドの約14倍の速さです。
2013.04.04 14:27:38 TestSpeed-CompareDbls EURUSD,H4: MathAbs(a - b) HalfAPoint 99999999 times in 3403 ms.
2013.04.04 14:27:42 TestSpeed-CompareDbls EURUSD,H4: (intRecord > intCheck) 99999999 times in 2505 ms.
しかし、3番目は実用に耐えないし、2番目(intRecord > intCheck)は比較前のintCheckのために1回多く代入されていました。
(intRecord > price / point)をテストしてみました。
2013.04.04 14:27:38 TestSpeed-CompareDbls EURUSD,H4: MathAbs(a - b) HalfAPoint 99999999 times in 3403 ms.
2013.04.04 14:27:42 TestSpeed-CompareDbls EURUSD,H4: (intRecord > intCheck) 99999999 times in 2505 ms.
しかし、3番目は実用に耐えないし、2番目(intRecord > intCheck)は比較前のintCheckのために1回多く代入されていました。