エラー、バグ、質問 - ページ 1998

 
Stanislav Korotky:

これは、(MQが提唱した当時)私が理解できなかった議論であり、今も理解できていない。初期化が進まない。今はアプリケーションのプログラマーに任されて、彼はとにかくやっているが、練習の結果、時にはエラーになることもある。カーネルで行うのであれば、性能に影響はなく、エラーも発生しない。

例えば、インジケータ・バッファの配列を考えてみましょう。インジケータを初期化するとき、バッファの長さはゼロです。ゼロで初期化することがあるのか?別のインデックスが追加された場合、強制的にゼロにされ、その後何らかの値で埋められるのでしょうか?EMPTY_VALUEで ゼロ埋めするのは何のためですか?また、0や EMPTY_VALUEではなく 、PLOT_EMPTY_VALUEを 割り当てる必要がある場合、あるいは、1つを強制的に割り当てるが、もう1つが必要な 場合...。どう考えても、時間を無駄にしたことになる...。

そして、カスタムアレイ...配列はゼロとは異なる何らかのデータに対して宣言され、 EMPTY_VALUE。では、なぜ強制的に何かで初期化する必要があるのでしょうか?

つまり、ほとんどの場合、性能に影響を与えることが判明したわけです。

 
Alexey Viktorov:

しかし、カスタムアレイは...配列はゼロとEMPTY_VALUE以外の何らかのデータに対して宣言されています。では、強制的に何かで初期化する目的は何なのでしょうか?

テスターの結果が一致しない」を少なくすること。

 
fxsaber:

テスターの結果が一致しない」ことを少なくするために。

誰が必要としているのか?

誰にでもEAを発注してはいけないと全段落に書いてある記事を書いてください。EAを正しく書かなければならない。

 
Alexey Viktorov:

誰が必要としているのか?

私と、そして確か、開発者の方々。

 
fxsaber:

私にも、そして間違いなく開発者にも。

そんな些細なことで窮地に陥るとは、とても思えません。それか、別の理由があるのか。

 
Alexey Viktorov:

そんな些細なことでつまずくとはとても思えません。理由が他にあるのか、どちらかです。

たとえ私が完璧に(間違えずに)書いたとしても、誰かのライブラリ(ソースコードなしの場合もある-マーケットプレイスで)を、有能に書かれていることを期待して、使うのが普通です。そして、その後にテスターで異なる結果に遭遇するという保険はありません。そして、本当の原因を見つけることは非常に難しいでしょう。そして、それを修正することは時に不可能です。

目標は、実行から実行への結果が再現可能であること、つまりエラーがあっても同じであることです。

 
fxsaber:

おそらく理想的な解決策は、デフォルトですべてのプログラムに初期化を強制し、さらにコンパイルスイッチでそれを無効にすることでしょう(自信のある人、数パーセントのスピードアップを望む人向けです)。

 

初期化には本当に多くのリソースが必要です。強制的に初期化するコードの一部を捨てたところ、最適化で2倍近く速くなった)

そして、面白いことに出くわしたのです。ドローダウンが120%で、同時に結果がトップとプラスになるのはどうしてでしょうか?

ストラテジーをテストすると、ドローダウンが109%になり、マージンコールは発生せず、残高は増え続けています。
 
Anton Ohmat:

初期化には本当に多くのリソースが必要です。強制的に初期化するコードの一部を捨ててみたところ、最適化が2倍近く加速された)

何か間違えて書いている。

 
Andrey Khatimlianskii:

完全な初期化は必ずしも必要ではありません。例えば、ループ内の各バーに対してバッファの値を埋める(そして、インジケータバッファが 初期化されているかどうかに関係なくそれを行う)インジケータの場合。

この場合、強制的にゼロにしない方が経済的です。

また、なぜそのような非現実的なシナリオを作るのか、実はMQLプログラマーのミスなのです。当然ながら、完全な初期化は一度だけ、あるいはデータのポンピングが検出されたときに行われる。この場合、カーネルで行うのが効率的でしょう。

理由: