CopyTicks」のテスト - ページ 21

 
Network 'xxx': authorized on Alpari-MT5 through mt5.nl.3 (ping: 64.15 ms)

ほとんど人がいないアルパリのマーケットウォッチでは、BCSと同じようにコピペがブレーキになっています。

Roboでは、すべてが1桁以上速くなりました。

 

USDCHF M1、CalcLengthのインジケータ(https://www.mql5.com/ru/code/16537)での結果です。

  • RoboForexEU - 23 ms (ブロードキャストにカップはありません。bid/askのみ)
  • MetaQuotes-Demo-15-30ms(放送中にボリュームがあるカップがあります。)


結果は常に変動しており、シングルスレッド・ルールは観察されていません - CopyTicksのピックとミックスなしのストリームとピックありのストリームの一方では。BCSではデモが開かれていませんが、RoboForexではスタックがないのが大きな特徴です。

測定コードがおかしい。不要なものも多く計測されましたが、CopyTicksのリクエスト時間は計測されませんでした。

virtual void Visual( void ) const
  {
    const ulong StartTime = ::GetMicrosecondCount();

    int X0;
    int Y0;

    BARS bars(this.Chart);

    TICKSPICTURE TicksPicture(this.Chart, &bars, X0, Y0);

    this.SetProperty(::OBJPROP_XDISTANCE, X0);
    this.SetProperty(::OBJPROP_YDISTANCE, Y0);

    TicksPicture.Fill(ColorBid, ::BID);
    TicksPicture.Fill(ColorAsk, ::ASK);
    TicksPicture.Fill(ColorSpread, ::AVG);

    TicksPicture.SendToResource(this.Resource);

    ::Comment("LastCalcTime = " + (string)::TimeLocal() +
              ", Ticks = " + (string)bars.GetAmountTicks() +
              ", CalcLength = " + (string)((::GetMicrosecondCount() - StartTime) / THOUSAND) + " ms.");

    ::ChartRedraw(this.Chart);

    return;
  }

いずれにせよ、ティックをコピーする呼び出しを最適化します。たくさん必要です。
Тиковый индикатор Ticks
Тиковый индикатор Ticks
  • 投票: 15
  • 2016.10.14
  • //www.mql5.com/ru/users/fxsaber">
  • www.mql5.com
Показывает тиковую ценовую историю (Bid/Ask) внутри всех видимых баров.
 
Renat Fatkhullin:

USDCHF M1、CalcLengthのインジケータ(https://www.mql5.com/ru/code/16537)での結果です。

  • RoboForexEU - 23 ms (ブロードキャストでスタックなし、ビッド/アスクのみ)
  • MetaQuotes-Demo-15-30ms(放送中にボリュームがあるカップがあります。)

アルパリ・リアルとBCSレアルに関する問題です。実物を開封するのはとても簡単です。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

取引所における指値注文のスリッページ統計

ピボモエ さん 2016.08.25 15:15

bxでmt5のデモ口座を作り始める。配信へのリンクが記載されたメールが届きます。サーバーを選択する段階で、デモ用サーバーではなく、実際の取引用のサーバーを選択してください。任意のデータでアカウントを作成します。証明書を作成する。あなたが持っているのは、実際の 相場と履歴を持つ残高ゼロのリアルアカウントだけ です。


結果は常に浮遊しており、シングルスレッドのルールが尊重されていません - 一方ではスレッドをスタックせずに(CopyTicksの選択とマージを行う必要がない)、他方ではスタックしています。BCSではデモが開かないが、Roboforexではストリームがないことが大きな特徴である

変な測定コード余分なものをたくさん測定したが、決してCopyTicksのリクエストのタイミングではない。

それは私が決めることではありません。全部一緒に測ってるんですよ。違いは、トレードサーバーだけです。つまり、ブレーキはコピーチックにしか関係ないのです。

いずれにせよ、copyTicksの呼び出しは最適化されています。たくさん必要です。

現状のCopyixは非常に不便です。例えば、以前あったティックをどのように取得するかは、全く不明です。

なぜ、ベースとなる配列のインデックスを返し、配列と同じようにベースを扱うことができないのでしょうか?データベースに新しいデータを追加する際の問題は、完全にユーザーに任せましょう。何かあったら、自分で解決させる。今、Copyixでの作業は、まあ、とても不便です。私は積極的に使っている数少ない人間の一人のようです。そして、このことについて、私はかなり責任を持って言うことができます。

 
Renat Fatkhullin:

USDCHF M1、CalcLengthのインジケータ(https://www.mql5.com/ru/code/16537)での結果です。

  • RoboForexEU - 23 ms (ブロードキャストで統計なし、ビッド/アスクのみ)
  • MetaQuotes-Demo-15-30ms(放送中にボリュームがあるカップがあります。)


結果は常に変動しており、シングルスレッド・ルールは守られていません。ピックのないスレッドがあり、そのうちの1つではCopyTicksをマージし、もう1つではピックが あります。BCSではデモは開きませんが、Roboforexではストリームがないことが主な点です。

測定コードがおかしい。不必要なものをたくさん測定したが、決してCopyTicksの要求時間ではない。

virtual void Visual( void ) const
  {
    const ulong StartTime = ::GetMicrosecondCount();

    int X0;
    int Y0;

    BARS bars(this.Chart);

    TICKSPICTURE TicksPicture(this.Chart, &bars, X0, Y0);

    this.SetProperty(::OBJPROP_XDISTANCE, X0);
    this.SetProperty(::OBJPROP_YDISTANCE, Y0);

    TicksPicture.Fill(ColorBid, ::BID);
    TicksPicture.Fill(ColorAsk, ::ASK);
    TicksPicture.Fill(ColorSpread, ::AVG);

    TicksPicture.SendToResource(this.Resource);

    ::Comment("LastCalcTime = " + (string)::TimeLocal() +
              ", Ticks = " + (string)bars.GetAmountTicks() +
              ", CalcLength = " + (string)((::GetMicrosecondCount() - StartTime) / THOUSAND) + " ms.");

    ::ChartRedraw(this.Chart);

    return;
  }

いずれにせよ、ティックをコピーする呼び出しを最適化します。たくさん必要です。

単糸の意味を明確にしてください。

もう一つの質問ですが、ティックができるだけ早く来るためには、ターミナルでカップが開いておらず、EA/インジケータからのカップ更新イベントの購読がないことが必要なのでしょうか?

参考資料より

出力速度: ターミナルは各シンボルに対して、クイックアクセスキャッシュに最近の4096ティック(スタックが動作しているシンボルに対しては65536ティック)を保存し、このデータに対するクエリーが最も速く なります。

繰り返しになりますが、クイックアクセスのために、ベットは非表示にし、シンボルによるベット更新の購読はしない方が良いでしょうか?それとも、スタック(隠し/開き)を持つことは、すでにスローダウンを保証するものなのでしょうか?
 
Alexey Kozitsyn:

シングルフローとはどういうことか、明確に教えてください。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

CopyTicks」のテスト

fxsaber さん 2016.10.13 10:18

ティックについては、受信したティックのソースが複数あるため、ティックの履歴そのものが遡って上書きされるというMTのニュアンスが あります。


 
fxsaber:
ありがとうございます。しかし、ガラスと受取りのスピードについてご存知ですか?
 
Alexey Kozitsyn:
ありがとうございます。しかし、ガラスと受取りのスピードについてご存知ですか?
いいえ、残念ながら。レナートは、タンブラーがマーケットウォッチ全体のために常にストリーミングされていると主張した。しかし、それはほとんどの場面で都合の良い(無駄のない)解決策ではありません。
 
fxsaber:
いいえ、残念ながら。レナートは、マーケットウォッチ全体のために、ガラスを恒久的に合理化することを主張した。しかし、それはほとんどの状況において適切な解決策ではありません。
シンボルごとに自分のカップを 持つ方が合理的でしょう。
 

これがCopyTicksをテストする方法です。

MqlTick ExtArr[2048];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   ulong from   =(TimeTradeServer()-1200)*1000;
   ulong ticks  =GetMicrosecondCount();
   int   records=CopyTicks(_Symbol,ExtArr,COPY_TICKS_INFO,from,2048);

   ticks=GetMicrosecondCount()-ticks;
   Print("Time: ",ticks," msc for ",records," records");
  }

以下はマイクロ秒での出力です。過去20分間に2048回のINFOティックのサンプルごとに95マイクロ秒を出力します。

2016.10.18 14:15:38.673 TEST (USDCHF,M1)        Time: 95 msc for 1206 records
これは、あなたが主張する数十ミリ秒とは全く異なるものです。それは、CopyTicksを測定していないからです。
 
Alexey Kozitsyn:

単糸の意味を明確にしてください。

ビッド/アスクのフローと、出来高と最終/取引価格を含むフルティックのフローは、2つの大きな違いです。

カーディナルに大きな違い。


もう一つの質問ですが、ティックができるだけ早く来るためには、ターミナルでグラスを開いていないこと、Expert Advisor/Indicatorからグラスを更新するイベントの購読がないことが必要でしょうか。

端末のオープン化、EAのサブスクリプションは関係ない。

シンボルがマーケットウォッチにある場合、端末は無条件ですべてのフルティックストリームを賭け金とともに受け取ります。


しかし、最も重要なことは、上記のサンプルレートの計算は無関係であるということです。あまりに不器用なので(CopyTicksの時間以外は計測されている)、驚きすら覚えます。