私のアプローチコアはエンジンです。 - ページ 146

 

Реter Konow:

...

悪いことではありません。

しかし、それは私たちに何を与えてくれるのでしょうか?

CPUの負荷を減らし、スレッドを解放するのかもしれません。10組のEAが動作しているとして、それぞれのエンジンにGUIを搭載すると、トータルのCPU負荷が高くなりすぎる可能性があります。なぜなら、GUIのたびに要素の再描画が必要で、それはCPUに大きな負荷を与えるからです。しかし、実際には1コマの具体的なGUIを見ることができるだけです。他は隠して います。

だから、それが正解なのでしょう。共通のエンジンを作る。

MT5では、チャートを切り離すことができます。そして、またコンセプトを考えなければならない。

 
コノウレジ

各EAはパラメータカーネルの独自のコピーを持っています。共通GUIから一時的に切り離し、別のEAをエンジンに接続することも可能です。同じEAのコピーであることが重要です。

しかし、私自身、まだ十分に理解できていない難点もあります。

理屈で言うと、こんな感じの質問です。

共通のGUIを持つエンジンを1つ作り、それをすべてのEAコピーに接続できるのであれば、なぜEAコピーの各チャートにGUIを持つエンジンを追加する必要があるのでしょうか?

実際には、技術的な問題に遭遇することもあるでしょう。

Expert Advisor のコピーは、パラメータカーネルのコピーに新しい値を書き込むことができます。片方のコピーがエンジンに接続されていない場合、カーネルはコピー側のみ変更されます。そのため、再接続時にはカーネル全体をエンジンに渡す必要があり、エンジンはすべてのウィンドウのすべての要素を必要な場所に再描画します。これは原理的に可能です。

あるいは、パラメータカーネルそのものをリソースにしてやり直す。その場合、エンジンはすべての変更を一度に取得し、エレメントを再描画するだけです。これは、決して悪いことではありません。

しかし、それは私たちに何を与えてくれるのでしょうか?

おそらく、CPUの負荷を減らし、スレッドを解放しているのでしょう。10組のEAが動いていて、それぞれのエンジンにGUIを搭載すると、トータルのCPU負荷が大きくなりすぎることがあります。なぜなら、GUIのたびに要素の再描画が必要となり、CPUに大きな負荷がかかるからです。しかし、実際には1コマの具体的なGUIを見ることができるだけです。他は隠しています。

だから、それが正解なのでしょう。共通のエンジンを作る。

EAコピーは、エンジンに頻度高くアドレスを伝えましょう。短い文字列です。エンジンは、現在のコピーと同じアドレスを持つコピーに反応し、「会話」します。標準的な交換が行われます。エンジン内でアドレスが変更されると、一致するアドレスを設定したコピーと「交換」を開始します。標準的な取引所に'イーサー'は、その短いアドレスを公開するために、アドバイザーやインジケータを追加します。数バイト。また、エンジンGUI上で「再設定」ボタンを押すと、「エンジンアドレスを聞く」機能が起動します。たぶん、こんな感じなんでしょうね。

 
Artyom Trishkin:

MT5では、チャートをデタッチすることができます。そして、またコンセプトを考えなければならない。

意識していないだけなんです。チャートは純粋に "領土的 "に切り離され、メインターミナルウィンドウの座標から自由になるのでしょうか?端末との交換フローでは、やはりフルで接続されているのでしょうか?

 
Oleg Papkov:

意識していないだけなんです。チャートは純粋に "領土的 "に切り離され、メインターミナルウィンドウの座標から自由になるのでしょうか?また、端末との交換フローでは、やはりフルで接続されるのでしょうか。

チャートは切り離されていますが、本質を変えるものではありません。(無駄に騒いでいる)。EAのコピーごとにGUIのコピーを作る意味がない。とにかく、目に見えない。しかし、コピーのチャート間で1つのGUIを移動させることができれば最高です。

エンジンと メインGUIが 配置されたEAコピーのコントロールセンター チャートがあれば便利なのですが。

EAのGUIは、EAが様々な機器に多数配置されることを想定して作成する必要があります。


SZY:チャートは同じウィンドウに表示されたままですが、ウィンドウだけをターミナルから「取り出す」ことができます。

 
Oleg Papkov:

アドバイザーのコピーで、エンジンに頻度よくアドレスを伝えましょう。短い文字列です。エンジンは、現在のコピーと同じアドレスを持つコピーに反応し、「会話」します。標準的な交換が行われます。エンジン内でアドレスが変わると、一致するアドレスを設定したコピーと「交換」を開始します。標準的な取引所に'イーサー'は、その短いアドレスを公開するために、アドバイザーやインジケータを追加します。数バイト。また、エンジンGUI上で「再設定」ボタンを押すと、「エンジンアドレスを聞く」機能が起動します。たぶん、こんな感じなんでしょうね。

本質を正しく見抜いているのですね。ただ、細部は正確ではありません。

通信」そのものを切り替えても、問題ない。しかし、切り替えの際には、GUI全体を再初期化する必要があります。結局のところ、異なるコピーのウィンドウと要素で、異なる値。そのため、ほとんどすべてを描き直す必要があります。

各コピーのパラメータ値は、パラメータカーネルに格納されます。これは配列です。コピーがエンジンから切り離されている限り、値の変更はパラメータカーネルのExpert Advisorのコピーにのみ発生します。エンジンを接続すると同時に、このカーネルからすべてをエンジンに転送する必要があります。エンジンと接続されているExpert AdvisorのParameter Kernelのコピーを同期させる。そのため、大量の情報(Parameter Core)を転送し、ウィンドウを再描画する必要があります。その後、接続されているExpert Advisorの調整が可能になり、他のExpert Advisorは独立モードになります。そうすれば、彼らとのつながりができ、同じことが起こるでしょう。

こんな感じでしょうか。ただし、技術的なニュアンスはいろいろとあります。

 
ピーターN msの周期で、EAはエンジンから何かを受け取り、その後、準備したものをエンジンに渡す。その後、アドバイザーは、ティックの到着や再質問交換の新しいバッチを待ちます。そうだろ?
 
Oleg Papkov:
ピーターN msの周期で、EAはエンジンから何かを受け取り、その後、準備したものをエンジンに渡す。その後、EAはティックの到着や新しい尋問-交換のバッチを待ちます。そうだろ?

ほぼ正解。コミュニケーションとチックやその他のイベントの予測は非同期的に行われます。

 
Реter Konow:

タイムテーブルは切り離されていますが、ポイントは変わりません。もったいないです)。

...

SZY:チャートは同じウィンドウに表示されたままですが、ウィンドウだけを ターミナルから 取り出す」ことができます。

そして、現在のチャートは一度に1つしか表示されず、それだけが更新されるというあなたの考え方は崩れるでしょう。

確かに悪夢ではないが、良いものでもない - 見えるチャートのうち1つだけが「生きる」、そして残りは?

これが普通だと思いますか?そうだとしたら、バグを解決することに真剣さが欠けていることを改めて確信しました。あるとすれば、それは修正することではなく、隠すことです。

 
Реter Konow:

ほぼ正解。通信やtickなどのイベント待ちは非同期で行われます。

これはどうでしょう。アドバイザーは、それぞれ頻繁にある(OnTimer)、エンジンにそのコード文字列を送信します。コードラインはすべて異なる。エンジンは内部で受信した文字列を分析し、例えばExpert Advisorの3番からの文字列を「認識」します。このEAに呼応して、主伝送を開始する「信号」を送ります。このエンジンは、このExpert Advisorで動作します。
ユーザーが "Switch "ボタンを押すと、エンジンが許可したAdvisorを解析し、番号でインデックス化されます。ワークフローから電源を切るように、現在の EA をアドレス設定状態に切り替え、インデックスを 1 つ多く持つ符号列を選択し、他の EA からの同じ符号列の到着を待つように指示する。アドレスが一致すると、このExpert Advisorにアドレスの公開を停止し、交換を開始する信号を送ります。課金モードでないExpert Advisorとコピーシリーズのみが交換を受けます。要するに、こんな感じ。

エンジンがアドレスを受信した場合、アドレス受信禁止のタイムアウトを行う。アドレスが重ならないように

 
Oleg Papkov:

これはどうでしょう。Expert Advisorsは、それぞれ何らかの周波数(OnTimer)を持ち、独自のコード文字列をエンジンに送信します。コードラインはすべて異なる。エンジンは内部で受信した文字列を分析し、例えばExpert Advisor番号3からの文字列を「認識」する。このEAに呼応して、主伝送を開始する「信号」を送ります。このエンジンは、このExpert Advisorで動作します。
人がSwitchボタンを押すと、エンジンが許可したAdvisorを解析し、番号でインデックス化されます。ワークフローから電源を切るように、現在の EA をアドレス設定状態に切り替え、インデックスを 1 つ多く持つ符号列を選択し、他の EA からの同じ符号列の到着を待つように指示する。アドレスが一致すると、Expert Advisorにアドレスの公開を停止し、交換を開始する信号を送ります。課金モードでないExpert Advisorとコピーシリーズのみが交換を受けます。要するに、こんな感じ。

エンジンがアドレスを受信した場合、アドレス禁止をタイムアウトさせる。アドレスが重ならないように。

これは正しいアプローチではありません。説明しよう。

EAの各コピーは、エンジンへのメッセージをそれぞれ別のリソースに書き込むことを止めない。同時に、EAの各コピーは、 その コピーのカーネルパラメータの中で、自身の要素の値を初期化する。つまり、エンジンから切り離された状態でも、すべてのコピーのEAが正常に動作することです。

EAのコピー間で接続を切り替える場合、エンジンのカーネルパラメータを接続先のEAのカーネルと同期させる必要がある。その後、ウィンドウ内の要素を再描画して、実際の情報を表示するようにします。

選択したExpert Advisorとの通信は、すべてがシンプルです。エンジンからのメッセージを受信するためのリソース(エンジンへのメッセージのリソースでもある)、各EAがそれぞれ持つことになる。つまり、エンジンは自分のメッセージを他のリソースに記録し、他のリソースからメッセージを読み取るだけである。接続された EA に属するリソース。

理由: