打勾的故事 - 页 18

 
Alexander:

现在正在播放吗?

我们没有,我们根据你的描述尝试过。

在 "治疗 "之后。

关于交易、自动交易系统和交易策略测试的论坛

打勾历史

Karputov Vladimir, 2015.10.21 09:24

...

我现在正在测试 "疗法"--我将彻底删除MetaQuotes-Demo服务器的 "历史 "和 "ticks "文件夹中的历史记录。


500点的深度历史几乎是即时给出的,整体的条形历史被调换了。10个月的蜱虫文件大小为200-400 Kb。

 

而我想在测试器中得到蜱虫,它发出的东西是什么:)

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

 

请看1194版本中的ticks是如何工作的,其中加入了毫秒和标志。

在测试器中,直到我们在下一个版本中完成将刻度线完全整合到交易策略测试器中,才会给出刻度线。

 
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. 测试#1,"计数"=40。
  2. 测试#2,"计数"=47。
  3. 测试#3,"计数"=12。

开启互联网。

该指标试图下载ticks,要求下载50个,但只下载了21-23个。这将持续到 "计数 "大于100为止。

重复性很好,检查了三次以上。

附加的文件:
test.mq5  3 kb
 
Karputov Vladimir:

测试互联网连接中断时的嘀嘀寻呼。经测试的指标如下。


请记住,指标中的ticks请求与专家顾问中的ticks请求工作方式略有不同。

指示器没有刹车权,所以指示器被一次性给予请求的可用点数。

专家顾问在自己的流程中工作,所以它可以等待一下。对于专家顾问来说,在每个请求中都会有几次尝试来交换点位。

 
Slawa:

请注意,指标中的tick请求与专家顾问中的tick请求工作方式略有不同。

指示器没有刹车权,所以指示器被一次性给予请求的可用点数。

专家顾问在自己的线程中工作,所以它可以等待一下。专家顾问在每次查询时都会多次尝试调换点位。

这是可以理解的。但它需要多长时间才能堆积起来?在上面的例子中,请求的是50个ticks,如果没有ticks需要立即加载,将需要30秒。

情况越来越糟。我提出了500点的请求--点子几乎立即得到了补充(我认为这只是因为我早些时候提出了这个数量的请求),然后我又提出了5000点的请求--四分钟已经过去了,但5000点中只有2000点被加载,而且数量没有增加。

 
Renat Fatkhullin:

请看1194版本中的ticks是如何工作的,其中加入了毫秒和标志。

在测试器中,直到我们在下一个版本中完成将刻度线完全整合到交易策略测试器中,才会给出刻度线。

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秒内加载完毕。我看不出有什么不同。

关于交易、自动交易系统和测试交易策略的论坛

打勾历史

Karputov Vladimir, 2015.10.22 15:07

...我提出了一个500点的请求--点子几乎立即就被加载了(我想这只是因为我之前提出了这样一个数字),然后我又提出了一个5000点的请求--四分钟过去了,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 "的值(显示模式为 "所有刻度")。

1

- 这个值是什么意思?

附加的文件: