MT5への願い - ページ 50

 

Yedelkin:

まあ、マニュアルにNewTick イベントが発生する 」と書いてあるので EAがアタッチされているシンボルで新しいティックが受信されたとき"であれば、新しいティックを受信した時点でNewTick イベントを発生させる必要があります。

質問から判断すると、OnTick()が無効の場合、NewTick イベントは発生しないとお考えでしょうか?しかし、リファレンスマニュアルには、そのような情報はありませんでした。

ハンドラがない場合、イベントはキューに入れられないということですね。これは論理的なことで、ヘルプに書いても意味がないと思います。

Expert Advisor は膨大な数のイベント(取引イベント、チャートからのイベントなど)を生成するため、それらすべてを処理する必要はありません。

もし、すべてのイベント(未処理のものも含む)がキューに入れられたら、いくつかのEAは動作しないでしょう - そのイベントはキューに入らないでしょう(例えば、1日に1度だけタイマーで動作する場合)。

 
komposter:

このように、ハンドラがない場合は、イベントはキューに入れられないと私は考えています。これは論理的なことで、ヘルプに書く意味はないと思います。

Expert Advisor は膨大な数のイベント(取引イベント、チャートイベントなど)を生成するため、それらすべてを処理する必要はありません。

もし、すべてのイベント(未処理のものも含む)が同じキューに入れられたら、エキスパート・アドバイザーの中には、イベントがキューに入らず、動作しないものが出てくるでしょう(例えば、タイマーだけが1日に1回動作する場合など)。

私見ですが、2種類のイベント(NewTickとTimer)は、他のイベントとは別に処理する必要があると思います。

おそらく、取引イベント(Trade)とDepth of Marketの処理に関するイベント(BookEvent)も分けるべきでしょう。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 

ライザップ面白いですね

テスター動作の結論を勘違いしていた。どうやら、デモのログとテスターのログを見間違えてしまったようです。のデザインです。

void OnChartEvent(const int id,           
                const long& lparam,   
                const double& dparam, 
                const string& sparam  
                )
  {
   if(id==CHARTEVENT_CUSTOM) TesterWithdrawal(1);
  }

がまだ機能していないんです。外国人マークのインジケータからのユーザーイベントCHARTEVENT_CUSTOMが 受信されないか、処理されないことを示唆しています。

 
komposter:

ハンドラがない場合、イベントはキューに入らないということだと思います。

このバージョンが確認されると嬉しいですね。しかし、テスターにとっては、とにかく刻みが発生する。絶対に不要なものであっても。

komposter:

これは論理的なことであり、ヘルプに書く理由はないと思います。

おそらく論理的にはそうなのでしょうが、すべての人に当てはまるわけではありません。開発者は、考えすぎるユーザーを何度も叱責してきました。ですから、私の結論は、現時点で入手可能な情報のみに基づいて出すようにしています。また、現時点では、前述のとおり、マニュアルにはNewTick イベントは、Expert Advisor がアタッチされているチャートのシンボルの新しいティックを受信 したときに生成さ れます」と記載されています。例外条項が見つからなかったので、新しいティック受信の事実がNewTick イベントの発生を引き起こすに違いないという結論に達しました。

komposter:

Expert Advisor は膨大な数のイベント(取引イベント、チャートからのイベントなど)を生成するため、それらすべてを処理する必要はありません。

NewTick イベントを処理しないようにするために、switch関数を作ることを提案します。Expert Advisor は、端末によるNewTick イベントの生成を必要とするかどうかを自分で決めることができます。 Expert Advisor は「エイリアン」シグナルでのみ動作するはずですが、それでも何らかのチャートに接続する必要があります。そして、例えば、テスト/最適化中に、Expert Advisor がアタッチされているシンボルのティックの生成に 一定の時間が費やされ、Expert Advisor はこれらのティック(およびNewTick イベント)を全く必要としないことが判明しました。
 
Yedelkin:

しかし、テスターにとっては、とにかく刻みが発生する。まったく不要なものであっても。

どのような意味ですか?そして、どのような価格で注文(保留、SL、TP)がトリガーされるかをチェックするのでしょうか?

テスターでは、EAが取引するすべてのシンボルについてティックが必要です。もちろん、機器の数が多く、モデリングの質が高ければ高いほど、動作は遅くなります。


イェデルキン

そして、現時点では、上記の通り、マニュアルには「Expert Advisorがアタッチされているチャートのシンボルに新しいティックが到着すると NewTick イベントが発生する」と書かれています。 このルールに対する例外条項は見つからなかったので、新しいティックの到着がNewTick イベントを発生させると結論づけたのですが、いかがでしょうか?

しかし、このロジックに従えば、他のすべてのイベントも同じようにキューに入れられるはずです。それはやりすぎでしょう。

 
komposter:

どうしてですか?そして、どのような価格で注文(保留、SL、TP)がトリガーされるかをチェックします。

さて、繰り返しになりますが、このEAはシンボルを付けたままでは全く動きません。また、このシンボルのSLとTPを追跡する必要はない。つまり、EAがこのシンボルのティックを必要としないのです。EAは必要なときだけシンボルに添付されますが、これは少なくともどこかに添付されないとトリガーされないからです。

komposter


しかし、この論理に従えば、他のすべてのイベントもまったく同じようにキューに入れなければならない。やりすぎでしょう。

このロジックに従って、ティックやキューイベントの生成ルールの例外をすべてリファレンスブックに記載する必要があります。(1)OnTick() という関数が あり、この関数が前のイベントNewTick を処理する場合です。この例外は私のケースには当てはまりません。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

Yedelkin:

このロジックに従って、ティックおよび/またはキューイベントの生成ルールのすべての例外は、ハンドブックに記載する必要があります。今のところ、1つだけ例外を見つけました。それは、(1)OnTick() 関数が あり、(2) この関数が前のNewTick イベントを処理する場合です。この例外は、私のケースには当てはまりません。

OnTick()がない場合は、このチャートの(このチャートのシンボルによる)ティックの処理は行われていないと考えるのが自然でしょう。

イベントがキューに入るかどうか、どのキューに入るかは別の問題です。要は、ティックがチャート(のExpert Advisor)で処理されないということですね!?

EAが他のチャートのティックを処理することを考慮すると、EXTERNALティックの処理について検討する必要があります。

したがって、私の意見では、私の Expert Advisor で独自の処理のダニ、入力パラメーターとして渡すに作成する必要があります: シンボル、時間、価格 (カスタム イベントは理論的にこのすべてを行うことができます)。

カスタムイベントポットクとの連携こそ、詳細に研究して最適化する必要があると思います。

 
Interesting:

他のチャートのティックを処理することを考慮すると、EXTERNALティックの処理に対応する必要があります。

したがって、私の意見では、エキスパート ・ アドバイザーで独自の処理のダニ、入力パラメーターとして渡すに作成する必要があります: シンボル、時間、価格 (カスタム イベントは理論的にはこのすべてを行うことができます).

私見ですが、カスタムイベントポットクとの連携だけは、詳細に検討し、最適化する必要があると思います。

おっしゃるとおり、まさに外付けのティックのみを処理することで行っています。ここではまだ質問はありません。

Interesting:

OnTick()がない場合、このチャートの(このチャートのシンボルに従った)ティックの処理は行われないと考えるのが自然でしょう。

イベントがキューに入るかどうか、どのキューに入るかは別問題 です。要は、ティックがチャート(のExpert Advisor)で処理されないということですね!?

だから、私の場合、一般的なキューが「内部」ティックからのイベントで詰まらないように することにこだわっています。もちろん間違っているかもしれませんが、「ティックの タイムリーな生成、適切なイベントキューイング、サーバーとの同期などを確実に行う」よりも「無効にする」方がずっと簡単なはずです・・・ほとんどの人にとっての「デフォルト」は今のままにしておいて、私のように極端な人には、無効化/スイッチ機能を追加してください。副作用の可能性がある場合は、ハンドブックに注意書きがあります。
 
Yedelkin:

そうなんです、まさに外付けのダニを独占的に処理する方法なんです。ここにはまだ質問がありません。

私の場合、一般的なキューが「内部」ティックからのイベントで詰まらないように するために、そこにこだわっています。もちろん間違っているかもしれませんが、「ティックのタイムリーな生成、適切なイベントキューイング、サーバーとの同期などを確実に行う」よりも「無効化」の方がずっと簡単なはずです・・・ほとんどの人のための「デフォルト」は今のままにしておいて、私のような極端な人には無効化/スイッチ機能を追加してください。副作用の可能性がある場合は、ハンドブックに注意書きがあります。

簡単さに関しては、議論の余地がある問題で、あなたが提案するバリエーションも同様に議論の余地があります(私の意見です)。

ティックや一般的なイベントに関する問題は、Expert Advisor にハンドラがない場合、イベントがどうなるかということです。

この点に関する2つ目の質問は、すべてのイベントは同じキューで処理されるのか、特定のイベント(OnTimer、OnTick、OnTrade)には独自のキューがあるのか、ということです。

 
Interesting:

より簡単というのは議論の余地があり、あなたが提案するオプションも議論の余地はない(と私は思う)。

そうですね。知らないことは判断しにくいですから。あとは希望を伝えるだけです :)私のバージョンの無意味さについてですが、ここでのメインは「チックはいらない!」というアイデアであり、それをどう実装するかは開発者次第だと言えます。

面白いですね

ティックや一般的なイベントに関する問題は、Expert Advisor にハンドラがない場合、イベントがどうなるかということです。

まさにその通りです。私にとっての解決策はただ一つ、端を切り落とす(スイッチ機能を導入する)ことで、質問に悩まされないことが保証されているのです :)しかし、原理的に不要なテロップを作成(生成?)して時間を浪費するテスターについても覚えておく必要があります。テスターが強制的に一人のキャラクターにくっつくからに他ならない。

面白いですね

すべてのイベントは1つのキューで処理されるのか、それとも特定のイベント(OnTimer、OnTick、OnTrade)のために別のキューがあるのか。

さて、「発生したすべてのイベント」は、1つの共通の キューに入れられ、受け取った順番に次々と 処理されることがハンドブックから明示されています。唯一の例外は、NewTick に指定される。OnTimerイベントが常に処理されるわけではなく、共通のキューがオーバーフローした結果、削除されることもあることをどうにか証明しました。イベントごとに列を分けるという話は全く出てきませんね。