MT5への願い - ページ 48

 

Yedelkin:

説明する。Expert Advisor がチャートに添付されているシンボルのティックを処理しない場合、このシンボルのNewTick イベントを継続的に生成すると、この EA が処理するイベントのキューがオーバーフローすることになります。

どういうことですか?

Expert Advisor には OnTick() がありませんが、NewTick イベントは キューに入るのでしょうか?

キューを解析したものをどうやって知るのですか?)

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin:

Expert Advisor をチャートに装着したシンボルのティックストリーム(NewTick イベント)を、必要に応じて無効にする方法が見つかりませんでした。


日曜日から金曜日まで、休む間もなく働いたという感じです...。:))

 
komposter:

どういうことですか?

どうしてわかったの......?

私は2つの方法でそれを学びました。まず、外国のシンボルからインジケータ信号を収集する単純なExpert Advisorの例で、EventChartCustomとOnChartEventの組み合わせについて知りました。同時に、Expert Advisorは自身のシンボルのティックでは動作しないため、Expert Advisorのコード内のOntick()関数がコメントアウトされています。テスターでEAを実行すると、どのシンボルをEAに付けるかによって移動時間が異なることが分かりました。例えば、以下の例をご覧ください。同じ最適化パラメータで、実行時間は顕著に異なっています。

OE      0       Tester  15:35:25        Experts\Ye00-01-0 Event.ex5 on USDRUR,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 CH      0       Tester  15:35:25        complete optimization started
LO      0       Core 1  15:35:25        agent process started
HK      0       Core 1  15:35:25        connecting to 127.0.0.1:3000
OK      0       Core 2  15:35:25        agent process started
DO      0       Core 2  15:35:25        connecting to 127.0.0.1:3001
DG      0       Core 2  15:35:26        connected
EK      0       Core 1  15:35:26        connected
NQ      0       Core 1  15:35:26        authorized (agent build 384)
QK      0       Core 2  15:35:26        authorized (agent build 384)
DI      0       Core 1  15:35:26        pass 0 started
LM      0       Core 2  15:35:26        pass 1 started
QK      0       Core 1  15:35:27        common synchronization completed
FD      0       Core 2  15:35:27        common synchronization completed
GR      0       Core 2  15:36:08        pass 1 returned result 10000.00 in 42 sec
RH      0       Core 2  15:36:08        pass 2 started
ON      0       Core 1  15:36:09        pass 0 returned result 10000.00 in 43 sec
ID      0       Core 1  15:36:09        pass 3 started
GK      0       Core 2  15:36:21        pass 2 returned result 10000.00 in 13 sec
QQ      0       Core 2  15:36:21        pass 4 started
PH      0       Core 1  15:36:21        pass 3 returned result 10000.00 in 12 sec
IR      0       Core 1  15:36:21        pass 5 started
ED      0       Core 2  15:36:34        pass 4 returned result 10000.00 in 13 sec
ON      0       Core 2  15:36:34        pass 6 started
MQ      0       Core 1  15:36:34        pass 5 returned result 10000.00 in 13 sec
GK      0       Core 1  15:36:34        pass 7 started
KN      0       Core 2  15:36:46        pass 6 returned result 10000.00 in 12 sec
ND      0       Core 2  15:36:46        pass 8 started
CJ      0       Core 1  15:36:47        pass 7 returned result 10000.00 in 13 sec
EP      0       Core 1  15:36:47        pass 9 started
PG      0       Core 2  15:36:59        pass 8 returned result 10000.00 in 13 sec
QO      0       Core 1  15:36:59        pass 9 returned result 10000.00 in 12 sec
MD      0       Tester  15:36:59        optimization finished, total passes 10
HS      0       Tester  15:36:59        optimization passed in 1 minutes 34 seconds
CE      0       Core 1  15:36:59        connect closed
PI      0       Core 2  15:36:59        connect closed
ON      1       Tester  15:37:20        genetics turned off because 10 passes, to use genetics increase amount of optimized parameters
RQ      0       Tester  15:37:20        Experts\Ye00-01-0 Event.ex5 on EURGBP,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 FL      0       Tester  15:37:20        complete optimization started
QM      0       Core 1  15:37:20        connecting to 127.0.0.1:3000
MG      0       Core 2  15:37:20        connecting to 127.0.0.1:3001
MN      0       Core 1  15:37:20        connected
LR      0       Core 2  15:37:20        connected
FH      0       Core 1  15:37:20        authorized (agent build 384)
QR      0       Core 2  15:37:20        authorized (agent build 384)
DF      0       Core 1  15:37:20        pass 0 started
LJ      0       Core 2  15:37:20        pass 1 started
JR      0       Core 1  15:37:20        common synchronization completed
EK      0       Core 2  15:37:20        common synchronization completed
IK      0       Core 1  15:38:35        pass 0 returned result 10000.00 in 75 sec
KQ      0       Core 1  15:38:35        pass 2 started
QG      0       Core 2  15:38:36        pass 1 returned result 10000.00 in 76 sec
FM      0       Core 2  15:38:36        pass 3 started
JD      0       Core 1  15:39:16        pass 2 returned result 10000.00 in 41 sec
MN      0       Core 1  15:39:16        pass 4 started
QP      0       Core 2  15:39:17        pass 3 returned result 10000.00 in 41 sec
FJ      0       Core 2  15:39:17        pass 5 started
KM      0       Core 1  15:39:56        pass 4 returned result 10000.00 in 40 sec
CG      0       Core 1  15:39:56        pass 6 started
DJ      0       Core 2  15:39:57        pass 5 returned result 10000.00 in 40 sec
LP      0       Core 2  15:39:57        pass 7 started
IF      0       Core 1  15:40:37        pass 6 returned result 10000.00 in 41 sec
FL      0       Core 1  15:40:37        pass 8 started
DS      0       Core 2  15:40:38        pass 7 returned result 10000.00 in 41 sec
GI      0       Core 2  15:40:38        pass 9 started
KP      0       Core 1  15:41:18        pass 8 returned result 10000.00 in 41 sec
NH      0       Core 2  15:41:19        pass 9 returned result 10000.00 in 41 sec
MS      0       Tester  15:41:19        optimization finished, total passes 10
OJ      0       Tester  15:41:19        optimization passed in 3 minutes 59 seconds

komposter

Expert Advisor には OnTick() がなく、NewTick イベントは キューイングされるのですか?

その答え(2つ目の方法)を確認するために、Expert Advisorのコードを次のように修正しました。

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }
つまり、シンボルが新しいティックを受け取ったことを検出するために、黄色い背景の線を挿入しました。その結果、Expert Advisorがアタッチされているシンボルのティックが定期的に受信されていることがわかります。
DS      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
QI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
IG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
LO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
DE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DH      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
EJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
LE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
PP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38

さて、ハンドブックには 「NewTick イベントを発生させる」とあるのでExpert Advisorが接続されているチャートのシンボルで新しいティックが受信されたとき。"であれば、新しいティックを受信したという事実でNewTick イベントを発生させる必要があります。

ご質問の内容から判断すると、OnTick()を無効にするとNewTick イベントが発生しないとお考えでしょうか?しかし、ハンドブックにはそのような情報はありませんでした。

 
sergeev:

日曜日から金曜日まで休みなく働いた感じ...。:))

ラインから判断して、正しい解答がわかるか?- ヒントをくれ!
 
Yedelkin:
つまり、シンボルで新しいティックが入ってきたことを検出するために、黄色い背景でハイライトされたラインを挿入しました。による刻みがあることが、結果からわかります。

を定期的に受信しています。


カスタムイベントを呼び出す前に、どのイベントでOnChartEventが 呼び出されるかを確認しましたか?

-------------

もし

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }


簡単なEAを入れてテスターで動かしても、起動しない。

OnChartEventを呼び出す他の関数はありますか?

 
sergeev:

OnChartEventを呼び出す他の関数はありますか?

はい、もちろんです。Expert AdvisorはEventChartCustom - OnChartEventバインディングを使用してサードパーティーのシンボルからインジケータ信号を収集するので、そのようなインジケータはそれぞれEventChartCustom()関数の 独自のインスタンスを持っています。EventChartCustom()関数の各インスタンスの最初のパラメータは、私たちのEAが接続されているチャートの識別子を含んでいます; 2番目のパラメータはゼロです。

セルゲイ

どのExpert Advisorに挿入しても、有効にはなりません。

これはコードの一部でしかありません。 - 他のシンボルからインジケータ信号を収集するExpert Advisorから。インジケータがない場合、コードのこの部分(OnChartEvent 関数)は、カスタムイベントがないため処理されません。

セルゲイ

カスタムイベントを呼び出す前に、どのイベントによってOnChartEventが呼び出されるかを確認しましたか?

いや、ちょっと違うか。OnChartEvent()関数が他のシンボルのインジケータから来るカスタムイベントを処理するとき、Expert Advisorが接続されているチャートのシンボルでティックが受信されるかどうかを確認したかったのです。EURGBPのティックを受信していることがわかる。参考までに、シンボルに新しいティックが来ると、 NewTick イベントが発生すると結論付けています。

 

どの機能を使ったからタイミングが違ったのか、把握することはできません。完全なコードがなければ、コーヒーのかすで推測しているに過ぎません。

NewTickはOnChartEventと 直接的には 何ら関係ありません。だから、あなたが提案するキュー・トラッキングの仕組みは、むしろ人工的なものなのです。正しいかどうかはわかりません。

この場合、テストの遅れを作っているのはNewTickであるとは言い切れないでしょう。それに、イベントそのものではなく、縛りの仕組みが悪いのだと思います。

 
sergeev:

どの機能を使ったからタイミングが違ったのか、把握することはできません。完全なコードがなければ、コーヒーのかすで推測しているに過ぎません。

NewTickはOnChartEventと直接的には 何ら関係ありません。だから、あなたが提案するキュー・トラッキングの仕組みは、むしろ人工的なものなのです。正しいかどうかはわかりません。

この場合、テストの遅れを作っているのはNewTickであるとは言い切れないでしょう。そして、悪いのはイベントそのものではなく、あなたのバインディングのメカニズムだと思います。

この件は、最初から私の意図するところではありませんでした。最初のメッセージで、Expert Advisor がチャートに接続されているシンボルのティックイベントを無効にする方法が見つからなかったと書きました。そのフレーズに反応しましたが、必要なシンボルのティックのフローを無効にする方法は提供されていません。私だけではなく、あなたもそのような方法を知らないというのが結論です。そこで提案なのですが、プログラム上でイベント発生を無効にできるトグル機能を導入して ください。 ニューチックExpert Advisorがチャートにアタッチされているシンボルに対して

ガントレットを当てる」「キュートラッキングの仕組みが人工的」というコメントについては、コードを調べて「なぜそうなのか」という質問に答えようとは申し上げていません。私の提案からわかるように、私はすでに自分自身で答えを見つけたのです。しかし、特定のExpert Advisorのコードに注目することなく、より抽象的な観点から問題を考えてみましょう。

セルゲイ

NewTickはOnChartEventと直接は 関係ない。

よし、そうだと仮定しよう。つまり、NewTickはOnChartEventと間接的 ではありますが、つながっているのです。すでに説明の 中で述べたことですが、もう一度繰り返します。発生したすべてのイベントが積み重なる「共通のイベントキュー」があることは、事前定義とユーザー定義の両方があることを、私よりよく知っているはずです。これらのイベントは、受信した順に一つずつ処理される。キューにはある程度の大きさの制限があるため、キューがいっぱいになると、古いイベントは処理されずに削除される。そうなんですか?

つまり、Expert Advisor が NewTick イベントを処理しないにもかかわらず、これらのイベントが発生する場合、私のイベントの一般的なキューは不要な NewTick イベントで単に詰まり、Expert Advisor が処理しなければならない陳腐なユーザーイベントを処理しないリスクがあることがわかりました。 この結論に同意していただけると幸いです。だから、上記のような提案をしたのです。

もちろん、イベントキューやNewTickイベントの仕組みの微妙なところをすべて知っているわけではありません。そのため、私の結論に間違いがあるかもしれませんので、説明があれば興味深く検討したいと思います。

セルゲイ

この場合、テストの遅れを作っているのはNewTickであるとは言い切れないでしょう。それに、イベントそのものではなく、縛りの仕組み が悪いのだと思います。

参考までに。Expert Advisorは、同じパラメータと同じ「結合メカニズム」を持つ1つの同じインディケータのインスタンスを、1つの同じ時間間隔に、隣接するシンボル上で保持します。バインディングは、EventChartCustom - OnChartEventと同じです。

Expert Advisor に OnTick() がない場合、NewTick イベントは まったくキューに入れられない」という記述に同意するということでよろしいでしょうか。

 

なぜ推測して仮説を立てるのか?

イベント発生をプログラムで無効にできるスイッチ 機能を導入してほしい」というご要望をいただきました ニューチック は、Expert Advisorがチャートにアタッチされているシンボルの場合 です。" は明確です。

servicedeskに書き込む

それ以外は、風車と戦っているようなものです。

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
sergeev:

なぜ、推測や仮説を練るのか?

それ以外は、すべて風車との闘いです。

言わないんですね :)やみくもに作業することに慣れている人もいれば、抑制すべき現象についてより深く知ろうとする人もいます。仮説は、あれこれ情報がない中で生まれるものです。議論に参加していただき、ありがとうございます。

SDに書きました。提案がそこで取り上げられるとは知りませんでした。