打勾的故事 - 页 16

 
Karputov Vladimir:

以下是要求的内容。

24小时后的过渡期是正确的。
测试方法:在终端打开的情况下,我删除了tick历史 文件。然后运行了两次脚本(因为没有历史记录,所以第一次运行的脚本初始化了历史加载)。

是的,谢谢,我也是这么做的--有帮助。然而,非常奇怪的行为。
 

事实是,这种奇怪的行为并没有结束。我决定比较同一个故事的两个查询时刻。

第一个时刻是昨天,我写了关于周五到周一抵达的错误。

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

打勾的故事

Tapochun, 2015.10.19 08:48

稍后--画面是这样的。所有3000次的模式。

2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2774 2015.10.16 23:59:05: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54356
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2775 2015.10.16 23:59:05: spread = 72, ask = 1.54428, bid = 1.54356, last = 0.00000
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2776 2015.10.16 23:59:06: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54356
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2777 2015.10.16 23:59:06: spread = 75, ask = 1.54431, bid = 1.54356, last = 0.00000
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2778 2015.10.16 23:59:07: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54357
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2779 2015.10.16 23:59:07: spread = 74, ask = 1.54431, bid = 1.54357, last = 0.00000
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2780 2015.10.16 23:59:10: spread = 0, ask = 0.00000, bid = 0.00000, last = 0.00000
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2781 2015.10.19 09:44:41: spread = 18, ask = 1.54498, bid = 1.54480, last = 1.54480
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2782 2015.10.19 09:44:41: spread = 19, ask = 1.54499, bid = 1.54480, last = 0.00000
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2783 2015.10.19 09:44:42: spread = 19, ask = 1.54499, bid = 1.54480, last = 1.54480
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2784 2015.10.19 09:44:42: spread = 18, ask = 1.54498, bid = 1.54480, last = 0.00000
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2785 2015.10.19 09:44:42: spread = 18, ask = 1.54498, bid = 1.54480, last = 1.54480
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2786 2015.10.19 09:44:42: spread = 19, ask = 1.54499, bid = 1.54480, last = 0.00000
2015.10.19 11:46:33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart: #2787 2015.10.19 09:44:42: spread = 19, ask = 1.54499, bid = 1.54480, last = 1.54480

故事中的漏洞。在INFO模式下--类似。

请注意在9.44.41开始出现的刻度线。现在,同一符号的历史,在同一时间,以相同的模式(所有)只要求今天。

QK      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289463 2015.10.19 09:44:41: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54480
LN      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289464 2015.10.19 09:44:41: spread = 19, ask = 1.54499, bid = 1.54480, last = 0.00000
DO      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289465 2015.10.19 09:44:42: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54480
ES      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289466 2015.10.19 09:44:42: spread = 18, ask = 1.54498, bid = 1.54480, last = 0.00000
HR      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289467 2015.10.19 09:44:42: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54480
EG      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289468 2015.10.19 09:44:42: spread = 19, ask = 1.54499, bid = 1.54480, last = 0.00000
DI      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289469 2015.10.19 09:44:42: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54480
DH      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289470 2015.10.19 09:44:42: spread = 18, ask = 1.54498, bid = 1.54480, last = 0.00000
IM      0       13:04:51.698    test_CopyTicks_1178 (GBPUSD,M5) OnStart: #289471 2015.10.19 09:44:42: spread = 0, ask = 0.00000, bid = 0.00000, last = 1.54480

交付方式是不同的。而且绝对是毫秒级的缺失。

以及在这种情况下如何分析蜱虫!

 
Renat Fatkhullin:

这是正确的。

我已经准确地指出了--在填写刻度线时没有任何结构或逻辑。每个价格字段都是独立于其他字段的。来自供应商的东西就是被翻译的东西。

雷纳特,事实证明,同样的蜱虫可以来自供应商,根据请求的时间,以不同的方式?

历史记录的格式是否取决于你所连接的服务器?

 
Tapochun:

这承诺将在下一个版本中出现,我相信它将有它的芯片。

这将是很好的,如果没有 "芯片",通常...和厌倦了这些图表,说99%的模拟质量...而真实的还差得远呢 :)对我来说,原则上不应该有这样的东西,否则它就不是一个测试器,而是一个玩具。而且,你不能从酒吧关闭的策略中做出很多粥来......

 
Maxim Dmitrievsky:

如果没有 "花招 "就好了......但我已经厌倦了这些说99%建模质量的图表......而真实的还差得远呢 :)对我来说,原则上不应该有这样的东西,否则它就不是一个测试器,而是一个玩具。而且,你不能从酒吧关闭的策略中做出很多粥来......

如果没有芯片,就很少一下子发生。这段蜱虫史 已经等待了很久,我们希望尽快完成它。我希望它在测试器和真实账户上都能做好准备。不幸的是,没有什么反馈。我希望使其加速发展的工作正在取得进展。

 
Karputov Vladimir:

请指定COPY_TICKS_INFO tick接收标志 (仅指Bid和Ask)--Bid和Ask的值是否仍为 "0",或者在COPY_TICKS_INFO 模式下 ,Bid和Ask将不包含0,tick流将与终端中的 "市场观察 "窗口中的 "Ticks "标签 相似


它将在构建1200中得到解决。

MQL5:MqlTick结构的扩展格式。现在,它包含了以毫秒为单位的刻度线到达时间,以及可以确定刻度线的哪个参数发生变化的标志。
struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   long         time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags;         // Флаги тиков
  };
每一个刻度线总是填入所有的参数,无论数据在上一个刻度线之后是否有变化。这使你能够在任何时间点始终拥有最新的价格状况,而不必在刻度历史中搜索以前的数值。例如,对于一个tick来说,可能只有买入价发生了变化,但结构中除了新的价格外还会包含其他参数:之前的卖出价、成交量等。要找出哪些数据随着当前的tick发生了变化,分析其标志。

  • TICK_FLAG_BID - 勾股改变价格的出价
  • TICK_FLAG_ASK - 勾股价改变了问价。
  • TICK_FLAG_LAST - 打勾改变了最后一次交易的价格
  • TICK_FLAG_VOLUME - 滴答已改变音量
  • TICK_FLAG_BUY - 由于买入交易而发生的打勾。
  • TICK_FLAG_SELL - 嘀嗒声是由于卖出交易而发生的。

MqlTick结构在两种方法中使用。

  • CopyTicks - 该方法不支持旧的结构格式。以前编译的EX5文件如果使用旧的tick格式,在调用CopyTicks函数时将返回错误4006(ERR_MQL_INVALID_ARRAY)。
  • SymbolInfoTick - 方法同时支持新旧结构格式。
 

所以。

MetaTrader 5 x64 build 1192 started (MetaQuotes Software Corp.)
...
authorized on MetaQuotes-Demo through Access Point Asia (ping: 556.27 ms)

和更新的MqlTick结构。

更新了MqlTick结构

 
Karputov Vladimir:

所以。

并更新了MqlTick结构。


那么如何正确地跟踪终端中的新蜱虫的到来呢?例如,在测试器中。

"OnTick()函数不是每个tick的处理程序,它通知专家顾问关于市场的变化。变化可以是批量的:几个ticks可以同时来到终端,但OnTick()函数将只被调用一次,以通知专家顾问的最新市场状况"。

 
Maxim Dmitrievsky:

追踪新蜱虫到达终端的正确方法是什么?例如,在测试器中。

"OnTick()函数不是每个tick的处理程序,它通知专家顾问关于市场的变化。变化可以是批量的:终端可以同时接收几个ticks,但OnTick()函数将只被调用一次,以告知专家顾问最新的市场状况"。

如果你想跟踪每一个刻度,你必须在指标中进行。指标与EA不同,它处理每一个刻度。

新增: 现在也可以分析EA中的所有ticks - 只需要输入检查(例如分析深度为5ticks的CopyTicks请求)。

 

建于1192年。Windows 10 x32。

初步将MetaQuotes-Demo服务器的tick history 文件夹完全删除。使用指标

//+------------------------------------------------------------------+
//|                                                         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 indicator_chart_window
#property indicator_plots 0
//--- input parameter
input int   InpShowTicks=500;    // клубина истории тиков
//--- parameters
MqlTick     arr_mql_tick[];      // массив структур хранящий тики
bool        bingo=false;         // false - скачано тиков меньше запрошенного
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   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="";
   if(bingo)
      return(rates_total);
   int copied=CopyTicks(_Symbol,arr_mql_tick,COPY_TICKS_INFO,0,InpShowTicks);
   if(copied==InpShowTicks)
      bingo=true;
   text="Запрошено "+IntegerToString(InpShowTicks)+" тиков, скачано "+IntegerToString(copied);
   Comment(text);
   count++;
   return(rates_total);
  }
//+------------------------------------------------------------------+

我已经检查了蜱虫的下载情况。对于一些工具来说,在第一个或第二个刻度线时下载500个刻度线,它们的下载量不超过200 Kb(我只是简单地将工具从Market Watch拖放到图表上)。

但在一些仪器中,奇迹发生了:蜱虫的历史不想给我必要的500个蜱虫,但终端下载了大约20Mb的历史(10个月和9个月的历史)。

附加的文件:
test.mq5  3 kb