ローカルコンピュータの時刻と新しいティックtime_msc(受信したばかり)の時刻の最大差を表示する小さなExpert Advisorを書きました。
大雑把に言うと、TimeLocal()をミリ秒単位で最後の刻みの時間を引いた時間だけ計測している Tick.teme_msc .ティックは SymbolInfoTick を用いて受信する。
あまりバカにしなかった。市場概要の24文字。OnTimer()で呼び出し周期1ミリ秒。 SymbolInfoTickで全シンボルをポーリングしています。新しいダニの場合、私は計測を行います。
イブニングでExpert Advisorをテストしてみました。以下はその結果である。
新規に捕獲したティック数 46800
ローカルコンピュータの時刻とティックの時刻の間の最小時間 -7048ミリ秒(マイナス記号付き)
ローカルコンピュータの時刻とティックタイムとの平均時間 -6819ミリ秒(マイナス付き)
ローカルコンピュータの時刻とティックタイム間の最大時間 -97082 ミリ秒 ( プラス付き )
どうすればいいのでしょうか?
あなたのコードを見てみると...
全然、ちゃんとしてないじゃないですか。
最も流動性の高い金融商品をMarket Watchに追加する必要があります。
そして、彼らのマネーポットを追加します。
そして、OnBookEvent()が起動したときに、1ティック(最後の)時間をコピーして、すぐにローカル タイムを取って比較します。
また、なぜローカルタイムとティックの時間を比較する必要があるのでしょうか?
取引可能かどうかを知る必要がある場合は、以下のような機能があります。
//+------------------------------------------------------------------+ //| Expert Check Market Time function | //+------------------------------------------------------------------+ bool CheckMarketTime() { MqlDateTime cur_time, sv_time; cur_time.year = 0; TimeTradeServer(cur_time); //Возвращает расчетное текущее время торгового сервера. if(cur_time.year > 0) { sv_time.year = 0; TimeCurrent(sv_time); //Возвращает последнее известное время сервера if(sv_time.year > 0) { // if((cur_time.day_of_week == int(FirstDay)) || // (cur_time.day_of_week == int(SecondDay))) return(false); //Проверка на выходные if(cur_time.day_of_week == sv_time.day_of_week) { ulong tr_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec; if(((tr_time >= time_st_mon) && (tr_time < 50370)) || //10:00:01 - 13:59:30 ((tr_time >= time_st_day) && (tr_time < 67470)) || //14:05:01 - 19:44:30 ((tr_time >= time_st_evn) && (tr_time < 85770))) //19:05:01 - 23:49:30 { return(true); } } } } return(false); }
ティックの関連性については、こちらの指標を コメント付きでご覧ください。
- www.mql5.com
あなたのコードを見てみると...
全然、やり方が違うじゃないですか。
最も流動性の高い金融商品をMarket Watchに追加する必要があります。
そして、これらの金融商品の市場深度を加えます。
そして、OnBookEvent()が起動したときに、1ティック(最後の)時間をコピーして、すぐにローカルタイムを取って比較します。
また、一般的に、なぜローカルタイムとティックタイムを比較する必要があるのでしょうか?
なぜ、すべてをスタックで行う必要があるのですか?ただ、コードの見栄えをよくするために?Market Overviewにシンボルがある場合、常に同期がとれ、キャッシュから直接(つまり瞬時に)シンボルの最後の4096ティックにアクセスできることを意味しないのでしょうか?いずれにせよ、あなたのアイデアを検証する必要があります。ただひとつわからないのは、カップを変えてティックを計算する「1ティック(最後)コピー」とはどういう意味なのでしょうか?
また、一般的に、なぜローカルタイムと ティックタイムを比較する必要があるのでしょうか?
昨日の価格に基づいて取引を決定するのは良い考えとは言えません。昨日SBERを100で売ったのはアルゴリズム的にはいいかもしれないが、今日は80で売った方がいい。
なぜ、すべてをガラス越しにするのか?ただ、コードの見栄えをよくするために?もし私がマーケットオーバービューにシンボルを持っているならば、それは一定の同期があることを意味し、私はシンボルの最後の4096ティックをキャッシュから直接(すなわち即座に)アクセスできるのではないでしょうか?いずれにせよ、あなたのアイデアを検証する必要があります。ただひとつわからないのは、カップを変えてティックを計算する「1ティック(最後)コピー」とはどういう意味なのでしょうか?
また、一般的に、なぜローカルタイムとティックタイムを比較する必要があるのでしょうか?
昨日の価格に基づいて取引を決定するのは良い考えとは言えません。昨日SBERを100で売ったのはアルゴリズム的にはいいかもしれないが、今日は80で売った方がいい。
自分で何でも知っているのに、なぜ質問するのでしょう。
自分の好きなようにやってください。
自分で何でも知っているのなら、なぜ質問するのですか?
好きなようにやってください。
真面目に聞いているのです。MQLでプログラミングをしていると、ヘルプも端末が提供する情報も信用してはいけないということに気づきました。反省のための情報提供以上のものではありません。SymbolInfoTickよりも 早く(安定して)情報を与えることができる可能性があります。
ちなみに、1分半の遅れで来たティックはこちら。
新MA 最大差97082 SBPR-3.19ローカルタイム 2019.03.15 21:05:31.842 ティックタイム 2019.03.15 21:03:54.760
この分の刻歴には、何も犯罪的なものはなかった。1分間で2回刻む。
真面目に聞いているのです。MQLでプログラミングをしていたとき、ヘルプもターミナルから提供される情報も信用してはいけないことに気づきました。それは情報の断片に過ぎない。SymbolInfoTickよりも 早く(安定して)情報を与えることができる可能性があります。
ちなみに、1分半の遅れで来たティックはこちら。
新MA 最大差97082 SBPR-3.19 ローカルタイム 2019.03.15 21:05:31.842 ティックタイム 2019.03.15 21:03:54.760
この分の刻歴には、何も犯罪的なものはなかった。1分間で2回刻む。
あなたは、完全にポイントがずれていますよ。
現地時間は全く気にしないでください。
TRADINGサーバーの時間だけが重要です!
取引セッションが あり、この間に取引することができます。
取引時間は、お客様の現地時間によって決定されるものではありません。
とトレードサーバーの時刻が表示されます。
完全に論点がずれている!
自分のローカルタイムを全く気にしない。
TRADINGサーバーの時間だけが重要です!
取引セッションが あり、この間に取引することができます。
取引時間は、お客様の現地時間によって決定されるものではありません。
とトレードサーバーの時刻が表示されます。
fxsaberは、新しいティックを遅滞なく取得することの重要性を理解しており、私のコードと同じことを行うがグラフ形式の彼の指標へのリンクを与えたので、私はポイントをうまく説明することができなかったに違いない。交換時期とは関係ありません。
指をくわえて説明してみる。
現地時間16:39.59.999にExpert Advisorはマーケット概要から各シンボルの最初のティックを受信し、それを保存します。
16:40.00.000 に、Expert Advisor は各シンボルの最後のティックを再度ポーリングします。そのうちのいくつかは、新しいダニが発生します。
新しいティックのほとんどは、16:39.59.000程度の時間(time_msc )で表示されます。しかし、1つは16分38秒30.335というタイムで来た。
16時39分59秒999(現地時間)には刻みはなかったが、1ミリ秒後に突然現れ、通常は1秒しか違わないのに16時38分30秒にもなっていたことが分かった。
このようなダニが発生した後では、良いことはありません。実取引において、流動性の低いシンボルから最後のティックを要求したとする。ティックの時間(time_msc)を求める。
となり、現地とは2分ほど異なる。すぐに90秒前、60秒前、30秒前に発生したティックを誰かが既に知っていて、我々のEAはそれを知らないという前提があり、例えば指値注文にヒットして罰せられる可能性があります。
この問題は解決しなければならない。
fxsaberは、新しいティックを遅滞なく取得することの重要性を理解しているので、私を理解し、私のコードに似たことをする彼のインジケータへのリンクを、グラフィカルな形で与えてくれました。交換時期とは関係ありません。
指をくわえて説明してみる。
現地時間16:39.59.999にExpert Advisorはマーケット概要から各シンボルの最初のティックを受信し、それを保存します。
16:40.00.000 に、Expert Advisor は各シンボルの最後のティックを再度ポーリングします。そのうちのいくつかは、新しいダニが発生します。
新しいティックのほとんどは、16:39.59.000程度の時間(time_msc )で表示されます。しかし、1つは16分38秒30.335というタイムで来た。
16時39分59秒999(現地時間)には刻みはなかったが、1ミリ秒後に突然現れ、通常は1秒しか違わないのに16時38分30秒にもなっていたことが分かった。
このようなダニが発生した後では、良いことはありません。実取引において、流動性の低いシンボルから最後のティックを要求したとする。ティックの時間(time_msc)を求める。
となり、現地とは2分ほど異なる。すぐに90秒前、60秒前、30秒前に発生したティックを誰かが既に知っていて、我々のEAはそれを知らないという前提があり、例えば指値注文にヒットして罰せられる可能性があります。
この問題は解決しなければならない。
何も「戦う」必要はありません。 ターミナルでのティックの受け取り方を理解し、正しく
を正しく処理してください。
- www.mql5.com
何も「戦う」必要はなく、端末に入ってくるダニの仕組みを理解し、正しく処理することが大切なのです
を正しく扱うために!
最後にこの知識を教えてください。たとえ、あなたの方法によって、新しいティックイベントを早く手に入れることができたとしても、あなたは私に魚を与え、釣竿を与えないことが判明した、すなわち、なぜこれがそうであるかを説明しない。
あなたの方法が私の方法より速いという自信はどこから来るのですか? ドキュメントに何か見落としがありましたか?もしかして、グラスを契約した方が端末が新しいティックを出しやすいと実験的に判断したのでしょうか?
私はこのEAで、新しいティックをキャッチする私の方法からあなたの方法への切り替えを実行します。
最後にこの知識を教えてください。この方法によって、新しいティックイベントを早く入手できたとしても、私に釣竿ではなく魚を与えていることがわかります。
あなたの方法が私の方法より速いという自信はどこから来るのですか? ドキュメントに何か見落としがありましたか?もしかして、グラスを契約した方が端末が新しいティックを出しやすいと実験的に判断したのでしょうか?
このEAでは、新しいティックをキャッチする私の方法から、あなたの方法への切り替えを実施する予定です。
コメント付きのソースコードもあります。
目を通すのが億劫になりませんか?あるいは、何かが明確でないのでしょうか?
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
ローカルコンピュータの時刻と 新しいティックtime_msc(受信したばかり)の時刻の最大差を表示する小さなExpert Advisorを書きました。
大雑把に言うと、TimeLocal()をミリ秒から最後の刻みの時間を引いた時間だけ計測している Tick.teme_msc .ティックは SymbolInfoTick を用いて受信する。
あまりバカにしなかった。市場概要の24文字。OnTimer()で呼び出し周期1ミリ秒。 SymbolInfoTickで全シンボルをポーリングしています。新しいダニの場合、私は計測を行います。
イブニングでExpert Advisorをテストしてみました。以下はその結果である。
新規に捕獲したティック数 46800
ローカルコンピュータの時刻とティックの時刻の間の最小時間 -7048ミリ秒(マイナス記号付き)
ローカルコンピュータの時刻とティックタイムとの平均時間 -6819ミリ秒 ( マイナス付き )
ローカルコンピュータの時刻とティックタイム間の最大時間 -97082 ミリ秒 ( プラス付き )
どうすればいいのでしょうか?