FORTSの見積もりに関する質問 - ページ 3

 

コンピュータの時刻は正確にしておくと、ログを間違える可能性が低くなります。

スクリプトに感謝:以下は、このスクリプトの1分17:36の結果です。

CollectTicks (ED-12.14,M1)      2014.11.10 17:36:06; Bid = 1.2474; Ask = 1.2475; Last = 1.2476; Vol = 3
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:06; Bid = 1.2474; Ask = 1.2476; Last = 1.2476; Vol = 3
 CollectTicks (ED-12.14,M1)      2014.11.10 17:36:12; Bid = 1.2474; Ask = 1.2476; Last = 1.2476; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:26; Bid = 1.2474; Ask = 1.2475; Last = 1.2476; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:28; Bid = 1.2474; Ask = 1.2476; Last = 1.2476; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:29; Bid = 1.2474; Ask = 1.2476; Last = 1.2474; Vol = 8
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:29; Bid = 1.2473; Ask = 1.2475; Last = 1.2474; Vol = 8
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:30; Bid = 1.2473; Ask = 1.2474; Last = 1.2473; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:30; Bid = 1.2472; Ask = 1.2474; Last = 1.2473; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:43; Bid = 1.2472; Ask = 1.2474; Last = 1.2474; Vol = 2

OnTickの特徴は、Bid/Askの変化(情報フロー)とLast(取引フロー)の両方に反応することです。

その結果、取引所取引商品のOnTickコールの回数が、取引 回数より多いことを知りながら、取引を行っています。

なぜ、このような方法をとるのでしょうか。

  1. Expert Advisorに取引情報のみを与え、市場の変化に関する情報を与えないことはできません(5回呼ぶのと15回呼ぶのは別物です)。
  2. ライブマーケットレビューでlastとlast_volumeをゼロにすることは不可能です、なぜなら一部のトレーダーは爆発してしまうからです。


もうひとつ、一括更新の場合、ある楽器の2つ以上のティックが同時に到着すると、OnTickが1回呼ばれるという事実があります。これにより、受信するクォートのフローを遅くすることなく、また、遅いExpert Advisorのためにティックの巨大なキューを作ることもありません。

まもなくTime & Salesフローを有効にし、取引フィードを正確に分析できるようにします。

 
Renat:

コンピュータの時刻は正確にしておくと、ログを間違える可能性が低くなります。

スクリプトに感謝:以下は、このスクリプトの1分17:36の結果です。

OnTickの特徴は、Bid/Askの変化(情報フロー)とLast(取引フロー)の両方に反応することです。

その結果、取引所取引商品のOnTickコールの回数が、取引回数より多いことを知りながら、取引を行っています。

なぜ、このような方法をとるのでしょうか。

  1. Expert Advisorに取引情報のみを与え、市場の変化に関する情報を与えないことはできません(5回呼ぶのと15回呼ぶのは別物です)。
  2. ライブマーケットレビューでlastとlast_volumeをゼロにすることは不可能です、なぜなら一部のトレーダーは爆発してしまうからです。


もうひとつ、一括更新の場合、ツールによるtickが2つ以上同時に届くと、OnTickが1回呼ばれてしまうということがあります。これにより、受信するクォートの流れを遅くすることなく、また、スローダウンするEAのためにティックの巨大なキューを作ることもありません。

近々、Time & Salesのストリームを搭載し、トレードのテープを正確に分析できるようにする予定です。

もちろん、これは素晴らしいことですが、スタックがあるFORTSの場合、MqlTick構造 体に引用フラグを追加するべきだったのです。

トレードの「掛け算」は酷くない。最悪なのは、本当のトレードが失われてしまうことだ。

P.S. 私のBANは、私のIPアドレスに関連しています。

 

Есть еще один момент с тем, что на пакетных обновлениях, когда одновременно приходят два и более тика по инструменту, то OnTick вызывается однократно. Это позволяет не тормозить поток входящих котировок и не делать огромную очередь тиков для тормозящих экспертов.

このアプローチにより、以下のような結果が得られます。

当然のことですが。

紙面時間(mcs) 価格 個数

317922.000000 rts-12.14 [forts] 18:44:54 199000.000000 104140.000000 1.000000

317923.000000 rts-12.14 [forts] 18:44:54 261000.000000 104130.000000 1.000000
317924.000000 rts-12.14 [forts] 18:44:54 587000.000000 104140.000000 1.000000
317925.000000 rts-12.14 [forts] 18:44:54 589000.000000 104140.000000 1.000000
317926.000000 rts-12.14 [forts] 18:44:54 691000.000000 104140.000000 1.000000
317927.000000 rts-12.14 [forts] 18:44:54 691000.000000 104140.000000 1.000000
317928.000000 rts-12.14 [forts] 18:44:54 842000.000000 104130.000000 2.000000
317929.000000 rts-12.14 [forts] 18:44:54 919000.000000 104150.000000 1.000000
317930.000000 rts-12.14 [forts] 18:44:55 337000.000000 104150.000000 1.000000
317931.000000 rts-12.14 [forts] 18:44:55 337000.000000 104150.000000 1.000000
317932.000000 rts-12.14 [forts] 18:44:55 337000.000000 104160.000000 1.000000
317933.000000 rts-12.14 [forts] 18:44:55 337000.000000 104160.000000 1.000000
317934.000000 rts-12.14 [forts] 18:44:55 337000.000000 104160.000000 3.000000
317935.000000 rts-12.14 [forts] 18:44:55 375000.000000 104140.000000 1.000000
317936.000000 rts-12.14 [forts] 18:44:55 375000.000000 104130.000000 5.000000
317937.000000 rts-12.14 [forts] 18:44:55 796000.000000 104130.000000 1.000000
317938.000000 rts-12.14 [forts] 18:44:55 799000.000000 104130.000000 2.000000
317939.000000 rts-12.14 [forts] 18:44:56 54000.000000 104160.000000 1.000000
317940.000000 rts-12.14 [forts] 18:44:57 235000.000000 104160.000000 1.000000
317941.000000 rts-12.14 [forts] 18:44:57 451000.000000 104140.000000 2.000000
317942.000000 rts-12.14 [forts] 18:44:57 487000.000000 104140.000000 6.000000
317943.000000 rts-12.14 [forts] 18:44:57 521000.000000 104160.000000 1.000000
317944.000000 rts-12.14 [forts] 18:44:57 621000.000000 104160.000000 1.000000
317945.000000 rts-12.14 [forts] 18:44:58 38000.000000 104160.000000 3.000000
317946.000000 rts-12.14 [forts] 18:44:58 695000.000000 104160.000000 13.000000
317947.000000 RTS-12.14 [forts] 18:44:58 883000.000000 104140.000000 2.000000

317948.000000 rts-12.14 [forts] 18:44:58 986000.000000 104160.000000 1.000000
317949.000000 rts-12.14 [forts] 18:44:58 993000.000000 104160.000000 5.000000
317950.000000 rts-12.14 [forts] 18:44:58 993000.000000 104160.000000 5.000000
317951.000000 rts-12.14 [forts] 18:44:58 995000.000000 104160.000000 5.000000
317952.000000 rts-12.14 [forts] 18:44:58 996000.000000 104160.000000 1.000000
317953.000000 rts-12.14 [forts] 18:44:59 56000.000000 104160.000000 1.000000
317954.000000 rts-12.14 [forts] 18:44:59 560000.000000 104140.000000 1.000000
317955.000000 rts-12.14 [forts] 18:44:59 604000.000000 104140.000000 1.000000
317956.000000 rts-12.14 [forts] 18:44:59 647000.000000 104160.000000 1.000000


MT5で取得するように。

NE 0 18:44:54.483 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:54 Bid = 104130 Ask = 104150 Last = 104140 Vol = 1
ES 0 18:44:54.639 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:54 Bid = 104130 Ask = 104150 Last = 104130 Vol = 2
OR 0 18:44:54.720 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:54 Bid = 104130 Ask = 104150 Last = 104150 Vol = 1
NQ 0 18:44:54.983 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104140 Ask = 104150 Last = 104150 Vol = 1
FP 0 18:44:55.139 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104140 Ask = 104160 Last = 104160 Vol = 3
JO 0 18:44:55.174 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104140 Ask = 104160 Last = 104130 Vol = 5
GN 0 18:44:55.206 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104130 Ask = 104160 Last = 104130 Vol = 5
RM 0 18:44:55.592 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104130 Ask = 104160 Last = 104130 Vol = 2
IL 0 18:44:55.891 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:56 Bid = 104130 Ask = 104160 Last = 104160 Vol = 1
HJ 0 18:44:55.921 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:56 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
RI 0 18:44:57.032 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:57 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
PH 0 18:44:57.242 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:57 Bid = 104140 Ask = 104160 Last = 104140 Vol = 2
FG 0 18:44:57.297 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:57 Bid = 104140 Ask = 104160 Last = 104140 Vol = 6
PF 0 18:44:57.328 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:57 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
JE 0 18:44:57.436 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:57 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
QD 0 18:44:57.838 FORTSTicksAction(RTS-12.14,M1) Time = 18:44:58 Bid = 104140 Ask = 104160 Last = 104160 Vol = 3
DP 0 18:44:58.514 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:58 Bid = 104140 Ask = 104160 Last = 104160 Vol = 13
RR 0 18:44:58693 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:58 Bid = 104140 Ask = 104160 Last = 104140 Vol = 2
JP 0 18:44:58795 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:58 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
CO 0 18:44:58.852 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:59 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
GN 0 18:44:59.358 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:59 Bid = 104140 Ask = 104160 Last = 104140 Vol = 1
MM 0 18:44:59.406 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:59 Bid = 104140 Ask = 104160 Last = 104140 Vol = 1
IL 0 18:44:59.453 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:59 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
CK 0 18:50:31.437 FORTSTicksAction(RTS-12.14,M1) Time = 18:50:24 Bid = 0 Ask = 0 Last = 104160 Vol = 1
KH 0 18:50:33.357 FORTSTicksAction (RTS-12.14,M1) Time = 18:50:24 Bid = 104080 Ask = 104180 Last = 104160 Vol = 1


これらはすべてセッションクローズ直前のものです(つまり、清算終了まで下値はありません)。

まず、黒く塗られた3本の線を例にとります。質問は2つあります。

1.赤色で表示されているものはどこに行ったのでしょうか?

2.青くハイライトされているのは、どこから来たのでしょうか?


もうひとつの質問(オプション)-「同時到着」とは、どのような時間間隔を指すのでしょうか?

 
Dima_S:

このアプローチにより、以下のような結果が得られます。

317945.000000 rts-12.14 [forts] 18:44:58 38000.000000 104160.000000 3.000000
317946.000000 rts-12.14 [forts] 18:44:58 695000.000000 104160.000000 13.000000
317947.000000 RTS-12.14 [forts] 18:44:58 883000.000000 104140.000000 2.000000

317948.000000 rts-12.14 [forts] 18:44:58 986000.000000 104160.000000 1.000000
317949.000000 rts-12.14 [forts] 18:44:58 993000.000000 104160.000000 5.000000
317950.000000 rts-12.14 [forts] 18:44:58 993000.000000 104160.000000 5.000000
317951.000000 rts-12.14 [forts] 18:44:58 995000.000000 104160.000000 5.000000
317952.000000 rts-12.14 [forts] 18:44:58 996000.000000 104160.000000 1.000000



これらはすべてセッション終了直前のものです(つまり、清算終了まで下値の提示はありません)。

黒く塗られた3本の線を起点に考えてみましょう。質問は2つあります。

1.赤色で表示されているものはどこに行ったのでしょうか?

これらは、おそらく1つのネットワークパケットで来て、1つのOnTickとして呼び出されたのでしょう。1秒間に8回のティックがあり、そのうち3回は単発コールで、最後の5回は最後の引用がLastと表示され1パケットで来た可能性が高いです。


2.青いハイライトはどこから来たのか?

これはポストマーケットです。また、市販後の事象をキャッチする機能も付与しています。そこで、入札の取り下げが通常機能するのみです。


もうひとつの質問(オプション)-「同時到着」とは、どのような時間間隔を指すのでしょうか?

間隔ではなく、物理的なネットワークパケットです。パケットは2-3-4ティックで到着し、それらはすべてベースに重ねられていますが、OnTickコールは一度だけです。

また、Expert Advisor の動作が遅くなり(ビジー状態)、新しい気配値がデータベースに追加されても、Expert Advisor が動作しているため OnTick が呼ばれない可能性があります。もしこのような仕組みがなければ、Expert Advisor用の相場情報の受信キューを簡単にオーバーフローさせ、古い相場情報を送信し始めることになります。

 

レナート!

詳しい説明をありがとうございました。

そのようなやり方は、FORTSでは受け入れられないと思われます。

引用元-音量、他にはないはずです。

11個の引用があったので、OnTickには11個あるはずです。

そうでしょう?

 

間違っている。

端末に正しく正確なデータストリームを配信することと、エキスパートを呼び出す/通知することを混同しないでください。

すべてのデータは、その根拠である端末に正確かつ正しく届けられる。チャートを見比べてみてください。

一方、Expert Advisorの起動は独立した非同期の通知です。データの受信パケットは、いくつかの遅い専門家を待つことはできませんが、即座に市場環境に適用する必要があり、唯一のオプション(専門家は、前の呼び出しを終了した場合)専門家を実行します。

状況について考える:引用符の流れ2秒と制動されている作業Expert Advisorは、取引を行うが、それはキュー内の新しい待機引用符は、EAがその作業を終了するまで、端末の市場環境に課されないことが必要である。

これがどこにつながるか、おわかりになりますか?端末全体が、処理中の相場の状態について市場のスナップショットを維持するという愚かな考えのために、すべての処理を遅らせるようになるのです。他の楽器のことを考えたら、自分を撃つだけですしね。

そのため、マーケットアップデートのオーバーレイは常に優先され、瞬時に、他のプロセスから独立しています。それ以外は非同期で市場についていかなければならない。

 
Renat:

間違っている。

端末に正しく正確なデータストリームを配信することと、エキスパートを呼び出す/通知することを混同しないでください。

すべてのデータは、その根拠である端末に正確かつ正しく届けられる。チャートを見比べてみてください。

一方、Expert Advisorの起動は独立した非同期の通知です。データの受信パケットは、いくつかの遅い専門家を待つことはできませんが、即座に市場環境に適用する必要があり、唯一のオプション(専門家は、前の呼び出しを終了した場合)専門家を実行します。

状況について考える:引用符の流れ2秒と制動されている作業Expert Advisorは、取引を行うが、それはキュー内の新しい待機引用符は、EAがその作業を終了するまで、端末の市場環境に課されないことが必要である。

これがどこにつながるか、おわかりになりますか?端末全体が、処理中の相場の状態について市場のスナップショットを維持するという愚かな考えのために、すべての処理を遅らせるようになるのです。他の楽器のことを考えたら、自分を撃つだけですしね。

そのため、マーケットアップデートのオーバーレイは常に優先され、瞬時に、他のプロセスから独立しています。それ以外は非同期で市場についていかなければならない。

不一致です。

カップを使わないとします(ビッドとアスクがティックにある)。

相場がわからないのに、FORTSの相場がわかるのか?

と音量は?

確かにFORTSの場合、bidとaskを渡さないこともあります(ティッカーに表示されています)。

コードの変更は最小限にとどめ、bidとaskは市場に渡さない。

 
Mikalas:

私はそうは思いません。

私の説明を何度も読み直してください。

レートブックを使わないとします(ビッドとアスクがティックにある)。

私(専門家)は、明確でない見積もりで FORTSの市場をどのように 見るか

現在の非同期更新の見積もりで、それ以外はありません。

呼ばれたらそれでおしまい、パケットに入った見積書だけが目の前にある。バッチ内に2つの見積書がある場合は、最後の1つだけが表示されます。誰も最初の気配値をExpert Advisorに渡して、Expert Advisorが操作を終えるまで待たないからです。昔の名言が消え、それを解決するのに間に合わなかったということは、列車が通り過ぎたということです。そ の古い引用を使うと、何も実行できなくなる。また,現在/最後の注文は,注文を出した瞬間に相場が変化している可能性があるため,約定するかどうか疑わしい。

bid/askを翻訳しないでください」は役に立ちません。時代遅れのティックは時代遅れのティック - 誰も市場を凍結し、あなたが古いティックで動作させないでください。

望むなら、できる。

  1. 端末をブローカーに近い コロケーションに置き、高速コンピュータでどんどん捕捉する
  2. EAをループさせ、常にマーケットをスキャンし、マーケットウォッチをすることで、より頻繁にすべてを手に入れることができます。
  3. チャートを分析し、市場を分析する

タイム&セールスと一緒に、最新のティック価格のストリームに直接アクセスできるようにすることを考え、連続したティックにアクセスできるようにします。マーケットレビューでは、セッションごとに収集しています。これによって、スキャルパーにチャンスが増える。

 

Renat:

タイム&セールス社とともに、最新のティックプライスのストリームに直接アクセス できるようにし、一貫したティックにアクセスできるようにすることを検討します。Market Watchでは、セッションごとに収集しています。これでは、ダフ屋にチャンスを与えることになる。

それが唯一受け入れられる解決策なのです。願わくば、与えられたシンボルに対してフィフォのキューが存在することを望みます。これにより、このイベント モデルでは解決できない、EAシンボル以外のシンボルのロスレス・クォートを取得するという別の問題が解決されます。
 

まだ疑問があります。

これを実行に移そうと思います。

//+------------------------------------------------------------------+
//|                                                    Kotirovki.mq5 |
//|                                                   Copyright 2014 |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Mikalas"
#property link      "http://www.mql5.com"
#property version   "1.02"
//
MqlTick curr_tick;
double  start_last   = 0;
double  start_bid    = 0;
double  start_ask    = 0; 
ulong   start_volume = 0;  
//  
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit( const int reason )
{

}
//+------------------------------------------------------------------+
//| Expert On Tick event function                                    |
//+------------------------------------------------------------------+  
void OnTick()
{
  if ( SymbolInfoTick( _Symbol, curr_tick ) )
  {
    if ( start_last == curr_tick.last )
    {
      if ( start_volume == curr_tick.volume )
      {
        if ( ( start_ask == curr_tick.ask ) &&
             ( start_bid == curr_tick.bid )  )
        {
          Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                                 "; Ask = ", curr_tick.ask,
                                 "; Last = ", curr_tick.last,
                                 "; Vol = ", curr_tick.volume, "; Новая котировка(Всё одинаковое)" );
        }
        else
        {
          start_ask = curr_tick.ask;
          start_bid = curr_tick.bid;
          Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                                 "; Ask = ", curr_tick.ask,
                                 "; Last = ", curr_tick.last,
                                 "; Vol = ", curr_tick.volume, "; Изменение ask или bid? Или же новая котировка?" );
        }
      }
      else
      {
        start_last = curr_tick.last;
        start_volume = curr_tick.volume;
        start_ask = curr_tick.ask;
        start_bid = curr_tick.bid;
        Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                               "; Ask = ", curr_tick.ask,
                               "; Last = ", curr_tick.last,
                               "; Vol = ", curr_tick.volume, "Новая котировка (Изменён объём)!" );
      }
    }
    else
    {
      start_last = curr_tick.last;
      start_volume = curr_tick.volume;
      start_ask = curr_tick.ask;
      start_bid = curr_tick.bid;
      Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                             "; Ask = ", curr_tick.ask,
                             "; Last = ", curr_tick.last,
                             "; Vol = ", curr_tick.volume, "Новая котировка! (Изменена котировка)" );
    }
  }
}

そして、明日はどうなるか......。

ファイル:
Kotirovki.ex5  5 kb