MQL4マスターに質問です。ダブルコンペアについてもう一度。 - ページ 4

 
Integer:
VBAGは、このスクリプトを見てみましょう。
そして、夜勤もあるんですね!応援ありがとうございます!あとは、全部消化することですね。
 
Integer:

価格=1.1111

マ=1.11110001

8桁に正規化した場合、価格は正しく表示されます。桁数を少なくして正規化すると、等倍-不正解になります。 このようにして、最大限の精度を得ることができます。

ジョークでしょう?:)
一般的には、マ>価格を正規化しないことも正しいことです。すでに存在し、達成可能な範囲を超えていることが分かっているのに、なぜ最大限の精度を実現するのか。

9桁に正規化してもうまくいきません。印象としては、価格が9桁でインジケーターが8桁、あるいはその逆(覚えていない)、要するに未知の謎に覆われている感じです。


NormalizeDouble 自体が 8 桁までしかカウントしないので、そのせいだと思われます。どう転んでもおかしい機能だと言っているのです。
 
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.
えー、でもこんぺいとうの 方がいい車持ってるよー。
 
Irtron:
そして、原型はただの歌です :)
そうですね......汎用性にはお金をかけないといけませんね。
またはComparePriceはまた、任意の精度で任意の数字を比較するために適している?
 
komposter:

それとも、ComparePriceは、任意の精度で任意の数値を比較するのにも適しているのでしょうか? 。
もちろん、そうです。精度が分かっている場合、それは取引値を扱う場合である。定点 観測。
 
Irtron:
もちろんです!(笑精度が分かっている場合、それは取引値の場合である。定点観測。
私もそう思います。
ダブルスの比較について」のトピックの多くの著者に説明すればよいのです。
だから、私は普遍的な(しかし最適とは言い難い)比較方法を提案したのです。
そして、それが功を奏する。ゆっくり、でも確実に。そして、すべてのケースで

そして、「倍速比較の最適化について」というトピックが現れたら、それを発展させることができるだろう ;)
 

価格の正常化はどこかで必要なのでしょうか?

取引要求の価格は正規化する必要があるとドキュメントに書かれている。

Unnormalized History and Opening Positions」 ブランチで、次のように書かれています。

Renat 2007年02月16日 10:01
不用意に誤った価格をサーバーに送信することを避けるため、取引依頼にはあえて正規化した価格を付加しています。
 
プロフェッショナルの皆さんの見識に感謝します

Irtron、 あなたのバリアントを選びました。一般的なケースを想定して少し修正し、確認しました。

int ComparePrice(double a, double b, double digit)
{
a -= b;
b=数字。
なら
を返す(1)。
if (a < -b)
を返します(-1)。
を返します(0)。
}
ありがとうございます。
 
digit=0では問題が発生します。また、この関数はNormalizeDouble() を 1 回呼び出すよりも遅いです。
 
Integer:
Digit=0では問題が発生します。

桁が違うと問題が発生します。桁ってなんだろう、改造の意味がわからない。

整数
また、この関数は、NormalizeDouble()を1回呼び出すよりも遅いです。
また、MathAbsや2+3などよりも遅くなります。:)

機能の違う関数を比較する話題は? 一つは簡略化(実行不可能だが)、今はNormalizeDouble。
何を、誰に、そんなあからさまな...。(自分で言葉を入れる)?