MQL4マスターに質問です。ダブルコンペアについてもう一度。 - ページ 4 1234567891011 新しいコメント Владимир 2007.09.10 03:41 #31 Integer: VBAGは、このスクリプトを見てみましょう。 そして、夜勤もあるんですね!応援ありがとうございます!あとは、全部消化することですね。 Glaswegian 2007.09.10 03:46 #32 Integer: 価格=1.1111 マ=1.11110001 8桁に正規化した場合、価格は正しく表示されます。桁数を少なくして正規化すると、等倍-不正解になります。 このようにして、最大限の精度を得ることができます。 ジョークでしょう?:) 一般的には、マ>価格を正規化しないことも正しいことです。すでに存在し、達成可能な範囲を超えていることが分かっているのに、なぜ最大限の精度を実現するのか。 9桁に正規化してもうまくいきません。印象としては、価格が9桁でインジケーターが8桁、あるいはその逆(覚えていない)、要するに未知の謎に覆われている感じです。 NormalizeDouble 自体が 8 桁までしかカウントしないので、そのせいだと思われます。どう転んでもおかしい機能だと言っているのです。 Glaswegian 2007.09.10 03:54 #33 komposter: そして、簡略化された形では、ComparePriceと同じように高速に動作する。 2007.09.10 03:19:24 CheckCompareDoubleSpeed GBPUSD,Daily: ComparePrice:20922, equal:20453. そして、原型はただの歌なんです :) int start() { double a, b; int start1, start2, end, c; a = 1.23450001; b = 1.23449999; start1 = GetTickCount(); for (c = 100000000; c > 0; c--) ComparePrice(a, b); start2 = GetTickCount(); for (c = 100000000; c > 0; c--) equal(a, b); end = GetTickCount(); Print("ComparePrice: ", start2 - start1, ", equal: ", end - start2); return(0); } int ComparePrice(double a, double b) { a -= b; b = Point / 2.; if (a > b) return (1); if (a < -b) return (-1); return (0); } bool equal(double value1, double value2, int precision = 8) { return (NormalizeDouble(MathAbs(NormalizeDouble(value1, precision) - NormalizeDouble(value2, precision)), precision) < NormalizeDouble(MathPow(0.1, precision), precision)); } 2007.09.10 02:39:57 testScript USDJPYm,H4: ComparePrice:23843, equal:178704. えー、でもこんぺいとうの 方がいい車持ってるよー。 Andrey Khatimlianskii 2007.09.10 04:41 #34 Irtron: そして、原型はただの歌です :) そうですね......汎用性にはお金をかけないといけませんね。 またはComparePriceはまた、任意の精度で任意の数字を比較するために適している? Glaswegian 2007.09.10 04:56 #35 komposter: それとも、ComparePriceは、任意の精度で任意の数値を比較するのにも適しているのでしょうか? 。 もちろん、そうです。精度が分かっている場合、それは取引値を扱う場合である。定点 観測。 Andrey Khatimlianskii 2007.09.10 05:28 #36 Irtron: もちろんです!(笑精度が分かっている場合、それは取引値の場合である。定点観測。 私もそう思います。 ダブルスの比較について」のトピックの多くの著者に説明すればよいのです。 だから、私は普遍的な(しかし最適とは言い難い)比較方法を提案したのです。 そして、それが功を奏する。ゆっくり、でも確実に。そして、すべてのケースで そして、「倍速比較の最適化について」というトピックが現れたら、それを発展させることができるだろう ;) 削除済み 2007.09.10 12:56 #37 価格の正常化はどこかで必要なのでしょうか? 取引要求の価格は正規化する必要があるとドキュメントに書かれている。 Unnormalized History and Opening Positions」 ブランチで、次のように書かれています。 Renat 2007年02月16日 10:01 不用意に誤った価格をサーバーに送信することを避けるため、取引依頼にはあえて正規化した価格を付加しています。 Владимир 2007.09.10 13:34 #38 プロフェッショナルの皆さんの見識に感謝します Irtron、 あなたのバリアントを選びました。一般的なケースを想定して少し修正し、確認しました。 int ComparePrice(double a, double b, double digit) { a -= b; b=数字。 なら を返す(1)。 if (a < -b) を返します(-1)。 を返します(0)。 } ありがとうございます。 Dmitry Fedoseev 2007.09.11 02:50 #39 digit=0では問題が発生します。また、この関数はNormalizeDouble() を 1 回呼び出すよりも遅いです。 Glaswegian 2007.09.11 11:25 #40 Integer: Digit=0では問題が発生します。 桁が違うと問題が発生します。桁ってなんだろう、改造の意味がわからない。 整数。 また、この関数は、NormalizeDouble()を1回呼び出すよりも遅いです。 また、MathAbsや2+3などよりも遅くなります。:) 機能の違う関数を比較する話題は? 一つは簡略化(実行不可能だが)、今はNormalizeDouble。 何を、誰に、そんなあからさまな...。(自分で言葉を入れる)? 1234567891011 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
VBAGは、このスクリプトを見てみましょう。
価格=1.1111
マ=1.11110001
8桁に正規化した場合、価格は正しく表示されます。桁数を少なくして正規化すると、等倍-不正解になります。 このようにして、最大限の精度を得ることができます。
一般的には、マ>価格を正規化しないことも正しいことです。すでに存在し、達成可能な範囲を超えていることが分かっているのに、なぜ最大限の精度を実現するのか。
9桁に正規化してもうまくいきません。印象としては、価格が9桁でインジケーターが8桁、あるいはその逆(覚えていない)、要するに未知の謎に覆われている感じです。
NormalizeDouble 自体が 8 桁までしかカウントしないので、そのせいだと思われます。どう転んでもおかしい機能だと言っているのです。
そして、簡略化された形では、ComparePriceと同じように高速に動作する。
そして、原型はただの歌です :)
またはComparePriceはまた、任意の精度で任意の数字を比較するために適している?
それとも、ComparePriceは、任意の精度で任意の数値を比較するのにも適しているのでしょうか? 。
もちろんです!(笑精度が分かっている場合、それは取引値の場合である。定点観測。
ダブルスの比較について」のトピックの多くの著者に説明すればよいのです。
だから、私は普遍的な(しかし最適とは言い難い)比較方法を提案したのです。
そして、それが功を奏する。ゆっくり、でも確実に。そして、すべてのケースで
そして、「倍速比較の最適化について」というトピックが現れたら、それを発展させることができるだろう ;)
価格の正常化はどこかで必要なのでしょうか?
取引要求の価格は正規化する必要があるとドキュメントに書かれている。
Unnormalized History and Opening Positions」 ブランチで、次のように書かれています。
Irtron、 あなたのバリアントを選びました。一般的なケースを想定して少し修正し、確認しました。
int ComparePrice(double a, double b, double digit)
{
a -= b;
b=数字。
なら
を返す(1)。
if (a < -b)
を返します(-1)。
を返します(0)。
}
ありがとうございます。
Digit=0では問題が発生します。
桁が違うと問題が発生します。桁ってなんだろう、改造の意味がわからない。
また、この関数は、NormalizeDouble()を1回呼び出すよりも遅いです。
機能の違う関数を比較する話題は? 一つは簡略化(実行不可能だが)、今はNormalizeDouble。
何を、誰に、そんなあからさまな...。(自分で言葉を入れる)?