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

 
Simca:
SK.は(a)を書いた。

新規ユーザーに対して1000回も 同じことを説明しなければならない開発者の方々には、心からお悔やみを申し上げます...。



これはもう、あからさまな攻撃ですね...。
私もそう思います。SK. さんは掲示板の権威ですが、「特定のコンピュータ技術」というのは私も疑ってしまいます。
実数をメモリに格納することは教科書に書いてあるし、変数が勝手に変化することは書いていない。 この掲示板のSK さんに限らず、聞いたことがあるが。
だから、もしあなたがすべての新規ユーザーを1000回誤解させたのなら、今すぐ彼らを見つけて、自分の言葉について謝罪すべきです

私はシムカに 同意します。演算 処理ではエラーが発生する可能性がありますが、保存、書き込み、読み出しではエラーは発生しません。

だから、NormalizeDouble()関数のアルゴリズムを聞いてみたのですが、もしかして、これも算術演算でエラーが発生するのでしょうか?
シムカは どう思う?
 

OKです。あまりに自信満々に言うので、何を言っているのか疑わしくなってきた。

私は少し前まで256MB RAMの古いPCで仕事をしていました。いくつかのプログラムをググると、OSはデータの一部をディスクにアンロードし、再びロードするのです。コードを修正(比較演算子に正規化を指定)してからは、エラーが出なくなりました。でも、先生の言葉を聞いて、実は間違いに気づいていなかったらどうしよう、と疑い始めました。

今は謝るか謝らないか迷っています。もし私が間違っていたら、1000人のユーザーに許してもらいましょう。

(ただし、比較演算の際に直接正規化を行った方が良い:)

 
gravity001:
実数をメモリに格納することは教科書に書いてあるし、変数が勝手に変化することは書いてない。この掲示板で聞いたのはSKだけ ではありませんけど。
保存中にそれ自体は何も変化 しない。しかし、コンピュータのメモリ上で実数を表現する方法は、格納される値の精度(ビット深度)に影響を与える。実数に対して演算を行う場合、その結果は(人間から見て)「十分な精度ではない」ことが多いため、演算結果を正規化する必要がある場合が ある。その後の等価 比較(多くの場合,>,<)の ために,演算結果を正規化することは必ず 必要である。また厳密に設定された桁数が 必要な値(例えば価格など)で運用する場合は、結果を正規化する必要がある。実数を用いた中間計算では、通常、正規化の必要はない。
しかし、これはすべて計算の話であって、メモリに保存されている値は正規化してもしなくても変わりません。
gravity001:
だから、NormalizeDouble()関数のアルゴリズムを聞いていたのですが、もしかして、これも算術演算でエラーが発生するのでしょうか?
シムカは どう思う?
まあ、NormalizeDouble関数のアルゴリズムについては、私が所属していない開発者に聞くのが一番でしょう。:)また、両コードのNormalizeDouble関数は全く同じ方法で使用されているため、論争の対象にはなりません。2つの正規化の結果を直接比較し、その結果を変数に書き込んで、その値を比較するという違いだけであった。そして、NormalizeDouble関数が返す値の型と、格納に使う変数の型が一致しているので、引用したフラグメントに違いはないだろうということに気づきました。しかし、NormalizeDouble関数が、それが格納されている変数よりも大きな次元の値を返す場合、差が生じる可能性があり、同一で あることを確認することはできない。しかし、MetaEditorのHELPによると、どちらの場合もデータ型はdouble なので、NormalizeDouble関数をどのように実装 しても、違いはないはずです。
 
SK. писал (а):

(ただし、比較演算の際に直接正規化を行った方が良い:)

そして、このことは、新しいユーザー一人ひとりに適用されるものであり、私もまったく同感 です。何がどのように動くのかがはっきりしないのであれば、より安全で確実な方法で行く方が合理的です! しかし、それはあなたや私に関係ありません。:)
また、私としては(質問の本質を理解しきれていない方に)お勧めできることがあります。

(ただし、やはり比較演算(c)SKの計算時に直接正規化を行った方が良い。

 
SK. писал (а):

(を計算するときに直接正規化したほうがまだましです)。
比較演算が計算されます:)





申し訳ありませんが、正規化を必要とするデータの比較には、効率性という点でより優れた実装があります。基本的にはこれがスタンダード(比較アルゴリズム)です。半分のスケール寸法で比較する必要があるのです。どういうことかというと、価格を比較する場合(異なるかどうかは別として)、その差をとって0.5*Royntと比較する必要があります(EA/スクリプト/インジケータの初期化時に一度だけ計算できます)。これは、1つの関数を呼び出すよりもはるかに効率的であり、それがループの中にもある場合はなおさらです) ....そして、このデータがどのように保存され、どのような些細な符号で丸められているかは問題ではないだろう。

頑張ってください。
 
まず、ダブリとの連携は純粋にコンパイラの問題なので、本来は隠れた内在的コンパイラであるmql4に利便性を求めるのは無理があります。開発者は、比較の結果が正しいことを保証する方法を提供しました、私たちはそれを手でチェックしました、それはもちろん、グラフィカルですが、実行可能です!!ドキュメントには、正規化は、"!="または"=="であっても、我々の独立した専門家のテストでは、(a>b)は、aがbと等しいことが判明した場合、正しい結果を保証しない(!)ことが示されています。 たとえあなたが慎重にaとbの両方を正規化しても、結果は予測不可能です。 そして、これは開発者の構造です:。 NormalizeDouble(a-b, Digits)>0は確実に動作する! たぶん、(内部的には)こんな感じで、2つのテーブルを倍精度で割って、切り捨て(または切り上げ)ているのだろうと思います。その後、全体のものを問題なく比較することができます。
 
.FG писал (а):
まず、ダブリとの連携は純粋にコンパイラの問題なので、本来は隠れた内在的コンパイラであるmql4に利便性を求めるのは無理があります。開発者は、比較の結果が正しいことを保証する方法を提供しました、私たちはそれを手でチェックしました、それはもちろん、グラフィカルですが、機能しています!!ドキュメントには、正規化するのは「!」の場合のみと書かれていますが、それは、「!」の場合は、「!」です。="または"=="であっても、我々の独立した専門家のテストでは、(a>b)は、aがbと等しいことが判明した場合、正しい結果を保証しない(!)ことが示されています。 たとえあなたが慎重にaとbの両方を正規化しても、結果は予測不可能です。 そして、これは開発者の構造です:。 NormalizeDouble(a-b, Digits)>0は確実に動作する! たぶん、(内部的には)こんな感じで、2つのテーブルを倍精度で割って、切り捨て(または切り上げ)ているのだろうと思います。そしてその後、整数が問題なく比較される。

正しいロシア語で書いてください。

 
開発者(ロシア語)のサイトへのリンクを教えてくれれば、作者の定義のみを使用することを約束します。:) あなたのポイントは、私の意見では、私よりも正しいが、あなたが個人的に理解したい場合は、私は "ロッシュのスポークスマン "を行います、あなたは専門家の意見からブラブラを区別することはできません。 私はあなたではない、と1001番目の初心者を書いたので。:)
 
.FG писал (а):
あなたのサイトへのリンクをいただければ、著者の定義のみを使用することを約束します。:)あなたのアイデアは、私が思うに、私よりも正しいではありませんが、あなたが個人的に理解したい場合、私は、ブラブラと専門家の鑑定を区別することができない場合は、 "Roshのスポークスマン "を行います。なぜなら、私はあなたではなく、1001人目の新参者に向けて書いていたからです。:)

例えば、www.gramota.ru

フォーラムにアルバニア語のセクションはありません。それでも、次の非ロシアのポスト以降は、そこに送られることになります。頼むから、言葉尻をとらえないでくれ。

 
それなら、stringoさんはCyril and Methodiusでプログラミングのディプロマを取得すべきですね。このような正規化の問題は、私がフリーのDOSコンパイラで遭遇したもので、現在のバージョンではとっくに便利に実装されている。 そのため、プログラマの中には、なぜこのような時代遅れの倍精度チェックが必要なのかを理解しない人もいる。彼らは、最適化などの二次的なものにおんぶにだっこで、自分たちのコードを書き直すとき、ゼロと比較してあらゆるところに正常な分解を詰め込み、自分たちの「C-ロジック」にエラーがないことに驚くだろうし、父親・経営者のRIGHTコメントでもない。しかし、基本的な計算の結果に関する質問は、依然として重要であり、最も注意を払う必要があります。 また、私を追い出すと脅すなら、どこかのCMEに行き、彼らのドキュメントを取って、OLBANICでFIXや他のトリックのあるプログラムを書きましょう。mq6を作り、アルバニア語で製品をテストする人が必要でしょうが、私たちはその場にいません...あなたが私たちのことを黙って禁止したからです...。