ダニの話 - ページ 18

 
Alexander:

今、再生していますか?

あなたの説明によると、そうではないようです。

治療」後。

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

ダニ歴

カルプトフ ウラジミール, 2015.10.21 09:24

...

今、「治療法」を試しています。MetaQuotes-Demoサーバーの「history」と「ticks」フォルダーから履歴を完全に削除します。


500ティックの深さの履歴はほぼ瞬時に出され、全体のバーの履歴は入れ替わります。ティックファイルのサイズは10ヶ月で200〜400Kbです。

 

そして、テスターで刻みを入れたかったのですが、何でも出ますね :)

void OnTick()
  {
//---
 MqlTick ExTicks[];
 CopyTicks(_Symbol,ExTicks,COPY_TICKS_ALL,D'2015.10.16 23:59',1);

 

ミリ秒とフラグが追加された1194ビルドで、ティックがどのように機能するかをご覧ください。

テスターでは、次のリリースで取引戦略のテスターへの ティックの完全統合が完了するまで、ティックは表示されません。

 
MetaTrader 5 build 1194 started (MetaQuotes Software Corp.)
Windows 10 Home (X86 based PC), IE 11.00, UAC, Intel Atom  Z3740 @ 1.33GHz, RAM: 218 / 1931 Mb, HDD: 20039 / 50235 Mb, GMT+02:00
authorized on MetaQuotes-Demo through Access Point EU (ping: 139.57 ms)

インターネット接続が切断された場合のティックページングをテストしています。以下、テストインジケータ。

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version    "1.1"
#property indicator_chart_window
#property indicator_plots 0
//--- input parameter
input int   InpShowTicks=50;    // клубина истории тиков
//--- parameters
MqlTick     arr_mql_tick[];      // массив структур хранящий тики
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print(__FUNCTION__);
   Comment("");
   ResetLastError();
//--- новый размер массива структур тиков
   if(ArrayResize(arr_mql_tick,InpShowTicks)==-1)
     {
      Print("Error OnInit #1",GetLastError());
      return(INIT_FAILED);
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static int count;
   string text  =IntegerToString(count)+"; ";
   int copied=CopyTicks(_Symbol,arr_mql_tick,COPY_TICKS_INFO,0,InpShowTicks);
   text+="Запрошено "+IntegerToString(InpShowTicks)+" тиков, скачано "+IntegerToString(copied);
   Comment(text);
   count++;
   return(rates_total);
  }
//+------------------------------------------------------------------+

アルゴリズムは以下の通りです。

インジケーターを起動します。ダウンロードしたティック数が要求された量と等しくなるまで待つ。

インターネットとの接続を解除する(端末がビープ音を発するはず)。同時に

  1. test #1, "count" =40,
  2. test #2、"count"=47。
  3. test #3, "count" =12.

インターネットを起動する。

インジケータがティックをダウンロードしようとし、50個を要求していますが、21~23個がダウンロードされています。これは、"count "が100より大きくなるまで続く。

3回以上確認し、再現性は良好。

ファイル:
test.mq5  3 kb
 
Karputov Vladimir:

インターネット接続が途切れたときのティックページングをテストしています。テストしたインジケーターは以下の通りです。


インジケーターのティック要求は、Expert Advisorのティック要求と若干異なる動作をすることに留意してください。

インジケータにはブレーキがかからないので、要求に対して利用可能なティック数を一度に与える。

Expert Advisor は独自のフローで動作するため、少し待つことができます。Expert Advisor では、リクエストごとにティックを交換する試みがいくつか行われています。

 
Slawa:

インジケーターのティック要求は、Expert Advisorのティック要求と若干異なる動作をすることにご注意ください。

インジケータにはブレーキがかからないので、要求に対して利用可能なティック数を一度に与える。

Expert Advisor は独自のスレッドで動作しているため、少し待つことができます。Expert Advisorがクエリごとにティックを交換する試みが複数回行われます。

これは理解できる。でも、どれくらいで積もるんだろう?上記の例では、50ティックのリクエストですが、すぐに読み込むティックがない場合は、30秒かかります。

さらに悪いことに500ティックのリクエストを出す→ほぼ瞬時にティックが補充される(先にこの量をリクエストしたからこそだと思う)→5000ティックのリクエストを出す→すでに4分経過しているが、5000のうち2000ティックしかロードされておらず量が増えない。

 
Renat Fatkhullin:

ミリ秒とフラグが追加された1194ビルドで、ティックがどのように機能するかをご覧ください。

テスターでは、次のリリースで取引戦略のテスターへのティックの完全統合が完了するまで、ティックは表示されません。

MT4でも同様の変更があるのでしょうか?
 

夕方、別のパソコンで確認。

MetaTrader 5 x64 build 1194 started (MetaQuotes Software Corp.)
Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120 M  @ 2.50 GHz, RAM: 1129 / 3981 Mb, HDD: 75614 / 234136 Mb, GMT+02:00
authorized on MetaQuotes-Demo through Access Point EU2 (ping: 59.54 ms)

スクリプトで200000000ティックをプリロード - 約6秒でティックがロードされました。違いが分かりませんでした。

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

ダニ歴

カルプトフ ウラジミール さん 2015.10.22 15:07

...500ティックのリクエストを出す→ほぼ瞬時にティックが読み込まれ(以前そのような数をリクエストしたことが原因だと思う)、次に5000のリクエストを出す→4分経過、5000のうち2000弱が読み込まれこの数が伸びない。

 
MT4では、残念ながらありません。
 
MetaTrader 5 build 1196 started (MetaQuotes Software Corp.)
authorized on MetaQuotes-Demo through Access Point EU1 (ping: 296.87 ms)

MqlTicks構造体の flagsフィールドには、しばしば "24"(表示モード "all ticks")の値が格納される。

1

- この値は何を意味するのでしょうか?

ファイル: