OE 0 Tester 15:35:25 Experts\Ye00-01-0 Event.ex5 on USDRUR,M1 from2010.08.0100:00 to 2010.08.0900:00 CH 0 Tester 15:35:25 complete optimization started
LO 0 Core 115:35:25 agent process started
HK 0 Core 115:35:25 connecting to 127.0.0.1:3000
OK 0 Core 215:35:25 agent process started
DO 0 Core 215:35:25 connecting to 127.0.0.1:3001
DG 0 Core 215:35:26 connected
EK 0 Core 115:35:26 connected
NQ 0 Core 115:35:26 authorized (agent build 384)
QK 0 Core 215:35:26 authorized (agent build 384)
DI 0 Core 115:35:26 pass 0 started
LM 0 Core 215:35:26 pass 1 started
QK 0 Core 115:35:27 common synchronization completed
FD 0 Core 215:35:27 common synchronization completed
GR 0 Core 215:36:08 pass 1 returned result 10000.00in42 sec
RH 0 Core 215:36:08 pass 2 started
ON 0 Core 115:36:09 pass 0 returned result 10000.00in43 sec
ID 0 Core 115:36:09 pass 3 started
GK 0 Core 215:36:21 pass 2 returned result 10000.00in13 sec
QQ 0 Core 215:36:21 pass 4 started
PH 0 Core 115:36:21 pass 3 returned result 10000.00in12 sec
IR 0 Core 115:36:21 pass 5 started
ED 0 Core 215:36:34 pass 4 returned result 10000.00in13 sec
ON 0 Core 215:36:34 pass 6 started
MQ 0 Core 115:36:34 pass 5 returned result 10000.00in13 sec
GK 0 Core 115:36:34 pass 7 started
KN 0 Core 215:36:46 pass 6 returned result 10000.00in12 sec
ND 0 Core 215:36:46 pass 8 started
CJ 0 Core 115:36:47 pass 7 returned result 10000.00in13 sec
EP 0 Core 115:36:47 pass 9 started
PG 0 Core 215:36:59 pass 8 returned result 10000.00in13 sec
QO 0 Core 115:36:59 pass 9 returned result 10000.00in12 sec
MD 0 Tester 15:36:59 optimization finished, total passes 10
HS 0 Tester 15:36:59 optimization passed in1 minutes 34 seconds
CE 0 Core 115:36:59 connect closed
PI 0 Core 215: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 from2010.08.0100:00 to 2010.08.0900:00 FL 0 Tester 15:37:20 complete optimization started
QM 0 Core 115:37:20 connecting to 127.0.0.1:3000
MG 0 Core 215:37:20 connecting to 127.0.0.1:3001
MN 0 Core 115:37:20 connected
LR 0 Core 215:37:20 connected
FH 0 Core 115:37:20 authorized (agent build 384)
QR 0 Core 215:37:20 authorized (agent build 384)
DF 0 Core 115:37:20 pass 0 started
LJ 0 Core 215:37:20 pass 1 started
JR 0 Core 115:37:20 common synchronization completed
EK 0 Core 215:37:20 common synchronization completed
IK 0 Core 115:38:35 pass 0 returned result 10000.00in75 sec
KQ 0 Core 115:38:35 pass 2 started
QG 0 Core 215:38:36 pass 1 returned result 10000.00in76 sec
FM 0 Core 215:38:36 pass 3 started
JD 0 Core 115:39:16 pass 2 returned result 10000.00in41 sec
MN 0 Core 115:39:16 pass 4 started
QP 0 Core 215:39:17 pass 3 returned result 10000.00in41 sec
FJ 0 Core 215:39:17 pass 5 started
KM 0 Core 115:39:56 pass 4 returned result 10000.00in40 sec
CG 0 Core 115:39:56 pass 6 started
DJ 0 Core 215:39:57 pass 5 returned result 10000.00in40 sec
LP 0 Core 215:39:57 pass 7 started
IF 0 Core 115:40:37 pass 6 returned result 10000.00in41 sec
FL 0 Core 115:40:37 pass 8 started
DS 0 Core 215:40:38 pass 7 returned result 10000.00in41 sec
GI 0 Core 215:40:38 pass 9 started
KP 0 Core 115:41:18 pass 8 returned result 10000.00in41 sec
NH 0 Core 215:41:19 pass 9 returned result 10000.00in41 sec
MS 0 Tester 15:41:19 optimization finished, total passes 10
OJ 0 Tester 15:41:19 optimization passed in3 minutes 59 seconds
voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);
if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
}
voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);
if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
}
Yedelkin:
説明する。Expert Advisor がチャートに添付されているシンボルのティックを処理しない場合、このシンボルのNewTick イベントを継続的に生成すると、この EA が処理するイベントのキューがオーバーフローすることになります。
どういうことですか?
Expert Advisor には OnTick() がありませんが、NewTick イベントは キューに入るのでしょうか?
キューを解析したものをどうやって知るのですか?)
Expert Advisor をチャートに装着したシンボルのティックストリーム(NewTick イベント)を、必要に応じて無効にする方法が見つかりませんでした。
日曜日から金曜日まで、休む間もなく働いたという感じです...。:))
どういうことですか?
どうしてわかったの......?
私は2つの方法でそれを学びました。まず、外国のシンボルからインジケータ信号を収集する単純なExpert Advisorの例で、EventChartCustomとOnChartEventの組み合わせについて知りました。同時に、Expert Advisorは自身のシンボルのティックでは動作しないため、Expert Advisorのコード内のOntick()関数がコメントアウトされています。テスターでEAを実行すると、どのシンボルをEAに付けるかによって移動時間が異なることが分かりました。例えば、以下の例をご覧ください。同じ最適化パラメータで、実行時間は顕著に異なっています。
Expert Advisor には OnTick() がなく、NewTick イベントは キューイングされるのですか?
その答え(2つ目の方法)を確認するために、Expert Advisorのコードを次のように修正しました。
つまり、シンボルが新しいティックを受け取ったことを検出するために、黄色い背景の線を挿入しました。その結果、Expert Advisorがアタッチされているシンボルのティックが定期的に受信されていることがわかります。さて、ハンドブックには 「NewTick イベントを発生させる」とあるのでExpert Advisorが接続されているチャートのシンボルで新しいティックが受信されたとき。"であれば、新しいティックを受信したという事実でNewTick イベントを発生させる必要があります。
ご質問の内容から判断すると、OnTick()を無効にするとNewTick イベントが発生しないとお考えでしょうか?しかし、ハンドブックにはそのような情報はありませんでした。
日曜日から金曜日まで休みなく働いた感じ...。:))
つまり、シンボルで新しいティックが入ってきたことを検出するために、黄色い背景でハイライトされたラインを挿入しました。による刻みがあることが、結果からわかります。
を定期的に受信しています。
カスタムイベントを呼び出す前に、どのイベントでOnChartEventが 呼び出されるかを確認しましたか?
-------------
もし
簡単なEAを入れてテスターで動かしても、起動しない。
OnChartEventを呼び出す他の関数はありますか?
OnChartEventを呼び出す他の関数はありますか?
はい、もちろんです。Expert AdvisorはEventChartCustom - OnChartEventバインディングを使用してサードパーティーのシンボルからインジケータ信号を収集するので、そのようなインジケータはそれぞれEventChartCustom()関数の 独自のインスタンスを持っています。EventChartCustom()関数の各インスタンスの最初のパラメータは、私たちのEAが接続されているチャートの識別子を含んでいます; 2番目のパラメータはゼロです。
どのExpert Advisorに挿入しても、有効にはなりません。
これはコードの一部でしかありません。 - 他のシンボルからインジケータ信号を収集するExpert Advisorから。インジケータがない場合、コードのこの部分(OnChartEvent 関数)は、カスタムイベントがないため処理されません。
カスタムイベントを呼び出す前に、どのイベントによってOnChartEventが呼び出されるかを確認しましたか?
いや、ちょっと違うか。OnChartEvent()関数が他のシンボルのインジケータから来るカスタムイベントを処理するとき、Expert Advisorが接続されているチャートのシンボルでティックが受信されるかどうかを確認したかったのです。EURGBPのティックを受信していることがわかる。参考までに、シンボルに新しいティックが来ると、 NewTick イベントが発生すると結論付けています。
どの機能を使ったからタイミングが違ったのか、把握することはできません。完全なコードがなければ、コーヒーのかすで推測しているに過ぎません。
NewTickはOnChartEventと 直接的には 何ら関係ありません。だから、あなたが提案するキュー・トラッキングの仕組みは、むしろ人工的なものなのです。正しいかどうかはわかりません。
この場合、テストの遅れを作っているのはNewTickであるとは言い切れないでしょう。それに、イベントそのものではなく、縛りの仕組みが悪いのだと思います。
どの機能を使ったからタイミングが違ったのか、把握することはできません。完全なコードがなければ、コーヒーのかすで推測しているに過ぎません。
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に書き込む。
それ以外は、風車と戦っているようなものです。
なぜ、推測や仮説を練るのか?
それ以外は、すべて風車との闘いです。
言わないんですね :)やみくもに作業することに慣れている人もいれば、抑制すべき現象についてより深く知ろうとする人もいます。仮説は、あれこれ情報がない中で生まれるものです。議論に参加していただき、ありがとうございます。
SDに書きました。提案がそこで取り上げられるとは知りませんでした。