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

 
Artyom Trishkin:

複数のインスタンスがある場合、同じクラスの他のインスタンスで同じ計算を重複して行うのはなぜですか?

計算が1つしかないのに、なぜ他のインスタンスが必要なのですか?


アルチョム・トリシキン
アンドレイ、もう少し具体的に教えてください。よくわからないんです。

より詳細な説明をすれば、より具体的な回答が得られるでしょう。

 
Artyom Trishkin:

もし、複数のインスタンスがあるのなら、同じクラスの他のインスタンスに同じ計算を重複して行う必要はないでしょう?リソースが必要なのです。

同時に、このデータそのものを計算するために親クラスで別の長いサイクルを作ることも最適とは言えず(すでに長いサイクルが2つある)、子クラスは自己充足感が得られない。

必要なことを重複なく行う方法を提案しました。子孫の話ではないのです。
 

こんにちは。

4年後、あるEA(2013年に購入し、忘れていた)に戻ってきた。もう一度やってみることにした。しかし、現在、システムはコード行の1つでエラーを出しています。以前は問題なく使えていたのに、メタトレーダーの4年間で何かが変わってしまったのでしょうか。プログラミングは全く分からないので、Expert Advisorを購入しました)。どのようなエラーが発生するのか、教えてください。

以下はコードの一部です。

extern int Bperiod = 20; // メインインジケーターラインの平均化期間。

extern int Bdeviation = 2; // ベースラインからの偏差。

extern int Bshift = 0; // 価格チャートに対するインジケータの 相対的な移動 量。

extern int Baprice = 0; // CLOSE=0, OPEN=1, HIGH=2, LOW=3, MEDIAN=4, TYPICAL=5, WEIGHTED=6 .

extern 文字列 _6 = "==========";

extern bool UseAutoDig = true; // If=true->ポイントの外部変数が10倍される。

extern boolUseECNNDD= true; // If=true->order is set without stops, then modified.

UseECN∕NDD

コマンドの最終行にエラーが表示されます。

このコマンドはEA内で何度も繰り返され、このコマンドがある行ごとにエラーが発生しますExamples of

errors

'\' - illegal escape sequence e_plat2.mq4 49 22

'NDD' - semicolon expected e_plat2.mq4 49 23

'UseECN' - 非宣言識別子 e_plat2.mq4 144 6

'NDD' - 非宣言識別子 e_plat2.mq4 144 13

'NDD' - some operator expected e_plat2.mq4 144 13

'UseECN' - 未宣言の識別子 e_plat2.mq4 172 6

'4206' - case value already used e_plat2.mq4 643 8


差し支えなければ、何が原因

でしょうか?


 
platoshkasexy:

UseECN⇄ このコマンドはExpert Advisor内で何度も繰り返され、それが存在する各行でエラーがポップアップ表示されます。

コード中のUseECN_NDDをUseECN_NDDに置き換える(Ctrl+H)

 
Andrey Khatimlianskii:

コード中のUseECN_NDDをUseECN_NDDに置き換える(Ctrl+H)


本当にありがとうございました。コンパイルしたようです!

テストする...

 
Andrey Khatimlianskii:

計算が1つしかないのに、なぜ他のインスタンスが必要なのですか?


もっと詳しく説明した方が、より具体的な答えになりますよ。

このクラスは、1) 口座内のすべての注文とポジション、2) m_symbol と m_magic フィルターに一致するもののみについてデータを収集するループを備えています。

その結果、ループが完了すると、1)口座全体のデータ、2)EAに属する注文とポジションのみのデータが得られます。

しかし、EAが複数のシンボルやマジックを使用する場合、それぞれのシンボルやマジックの統計情報を収集するためにクラスのインスタンスを作成する必要があります。ここで疑問が生じます。なぜ、クラスの一番最初のインスタンスで既に収集されている統計(1)を、これらの新しいインスタンスで収集する必要があるのでしょうか?

そのため、クラスの内部で、そのインスタンスが唯一のもの であり、したがって統計1を収集する必要があるのか、あるいは、そのインスタンスが唯一のものでない場合、統計1を収集せず、最初のインスタンスから与える必要があるのかを知る方法は不明です(ここでも、そのインスタンスが唯一のものではないとき、統計1を与えるためにクラスの最初のインスタンスに要求をリダイレクトする方法は不明です)。

 
Artyom Trishkin:

このクラスは、1) 口座内のすべての注文とポジション、2) m_symbol と m_magic フィルターに一致するもののみについてデータを収集するループを備えています。

その結果、ループが完了すると、1)口座全体のデータ、2)EAに属する注文とポジションのみのデータが得られます。

しかし、EAが複数のシンボルやマジックを使用する場合、それぞれのシンボルやマジックの統計情報を収集するためにクラスのインスタンスを作成する必要があります。ここで疑問が生じます。クラスの最初のインスタンスで既に収集されている統計量(1)を、なぜこれらの新しいインスタンスで収集する必要があるのでしょうか?

そのため、クラス内部でどのようにそのインスタンスが唯一 であり、それゆえ統計1を収集する必要があるのか、あるいは、そのインスタンスが唯一でない場合、統計1を収集せず、一番最初のインスタンスから統計1を発行するのかを知ることができます(また、そのインスタンスが唯一でない場合、統計1を発行するためにクラスの一番最初のインスタンスに要求をリダイレクトする方法もまだ明らかではありません)。

1) 1つのクラス内のすべての魔道士/道具の統計を取る。魔導師のリストは、初期化時に指定し、配列に入れる必要があります。

2) すでにアドバイスしたように、統計#1の結果を静的にして、それが利用可能であれば、再計算を開始しないようにする。

 
Artyom Trishkin:

このクラスは、1) 口座内のすべての注文とポジション、2) m_symbol と m_magic フィルターに一致するもののみについてデータを収集するループを備えています。

その結果、ループが完了すると、1)口座全体のデータ、2)EAに属する注文とポジションのみのデータが得られます。

しかし、EAが複数のシンボルやマジックを使用する場合、それぞれのシンボルやマジックの統計情報を収集するためにクラスのインスタンスを作成する必要があります。ここで疑問が生じます。すでにクラスの最初のインスタンスで収集された統計量(1)を、なぜこれらの新しいインスタンスで収集しなければならないのでしょうか?

そのため、クラスの内部で、そのインスタンスが唯一のもの であり、したがって統計1を収集する必要があるのか、あるいは、そのインスタンスが唯一のものでない場合、統計1を収集せず、最初のインスタンスから与える必要があるのかを知る方法は不明です(ここでも、そのインスタンスが唯一のものではないとき、統計1を与えるためにクラスの最初のインスタンスに要求をリダイレクトする方法は不明です)。

英語が問題なければ-私のブログでハイパーキューブ解析の 例を公開しています。履歴を一通り見てから、目的の(異なる)スライスでハイパーキューブに情報を要求する。もちろん、マジシャン別、シンボル別のセレクターもある。
 
Artyom Trishkin:

そのインスタンスが唯一のものであることをクラス内部でどうやって知る ことができるか、つまり統計1を収集する必要があるか、もしそのインスタンスが唯一のものでなければ統計1を収集せず、最初のインスタンスから与えるかです。

すでに言われていることですね。

いっそのこと、独自の計算はすべて別のクラスにして、シングルトンにすればいい。

シングルトンが最初にアクセスされたとき、統計情報を読み、その後、取得するだけにします。


 

開発者の皆さん、8.6e+18より大きいバリアント数を最適化する場合OnTesterPass タイプのイベントが、新しい世代を作成するときだけ呼び出さ れるのはなぜですか。

また、この機能については、なぜヘルプファイルには一言も書かれていないのでしょうか?

なぜ、Expert Advisorの半分を掘り下げて答えを探さなければならないのでしょうか。この機能は、あるEAでは適切に動作しますが、他のEAでは新しい世代のファイルに最適化結果を 書き込むだけです。


この制限を回避するにはどうしたらよいですか?