Ошибки, баги, вопросы - страница 2386

 
Dmitriy Burlachenko:

Всем привет.

Разработчики и гуру подскажите. CopyTicksRange в тестере на исторических данных в режиме "Все тики" и "Каждый тик на основе реальных тиков" возвращает 0 тиков и код ошибки 0 - почему?

MT5 build 1996. Символ RTS-3.19.Брокер - Открытие. Счёт - реал. Интервал времени верный. История за этот период есть.

"Ошибка получения тиковой истории! С 2019.02.08 11:16 по 2019.02.14 23:48. Код ошибки: 0. Операция выполнена успешно."  :)

При этом, тот же код честно отдаёт все тики в тестере на реальных данных и в онлайне работает без проблем. Что я делаю не так?

Выглядит, как баг.

 
fxsaber:

Но и без этого примера неоднократно было обсуждено с разработчиками, что тейки хранятся на MT5-торговом сервере, акцептируются самим сервером и отправляются на сторону исполнения в виде маркет-ордеров. Соответствующие MT5-ордера это полностью подтверждают.

Это я в курсе, но ни один известный мне ДЦ не сказал своим клиентам, что из-за особенностей хранения тейков на используемом ПО потерпите, ребята, их скольжения в минус  :)

 
Ilya Malev:

Это я в курсе, но ни один известный мне ДЦ не сказал своим клиентам, что из-за особенностей хранения тейков на используемом ПО потерпите, ребята, их скольжения в минус  :)

Брокеры ничего не знают о таких особенностях MT5. Большинство трейдеров - тем более.


Их архивов

 
fxsaber:

Брокеры ничего не знают о таких особенностях MT5. Большинство трейдеров - тем более.

Уверяю Вас о таких "мелочах" как то, в каком виде ТП отправляются к их ЛП, в виде лимита или в виде маркета в стиле стопов, известно каждому брокеру. Но большинство трейдеров об этом вероятно не знают, как раз потому, что брокеры "не выносят сор из избы" и следующие из этого отрицательные проскальзывания "кушают сами", хотя и положительные чаще всего кушают тоже.

 
Ilya Malev:

Уверяю Вас о таких "мелочах" как то, в каком виде ТП отправляются к их ЛП, в виде лимита или в виде маркета в стиле стопов, известно каждому брокеру.

Они знают про это в MT4. По MT5 - никто не заморачивается такими вопросами.

[Удален]  
Сайт постоянно повторяет посылку сообщения о новой версии программы. Поправьте, пожалуйста.
 

Ошибка в стандартной библиотеке

2019.02.19 13:52:20.974 Test_4G_CB (Si Splice,H1)       zero divide in 'Curve.mqh' (696,60)

Связана с кодом

      CCurve *A=graphicL.CurveAdd(X,Y,ColorToARGB(Green,256),CURVE_POINTS,"Logist");//Создает и добавляет кривую на график
      A.PointsFill(false);//Устанавливает флаг, указывающий, нужно ли выполнять заливку для точек, определяющих кривую при отрисовке точками. 
      A.PointsType(POINT_CIRCLE);//Устанавливает флаг, указывающий на тип точек, использующихся при отрисовке кривой точками.
      A.TrendLineVisible(true);//Устанавливает флаг, который определяет видимость трендовой линии
      A.TrendLineColor(ColorToARGB(Red,256));//Устанавливает цвет трендовой линии для кривой

Причину пока не понимаю - вероятно массив с координатой (0;0)...

Проверка на размер массива помогла - строим линию только при больше чем одной точки. 
 
Dmitriy Burlachenko:

Всем привет.

Разработчики и гуру подскажите. CopyTicksRange в тестере на исторических данных в режиме "Все тики" и "Каждый тик на основе реальных тиков" возвращает 0 тиков и код ошибки 0 - почему?

MT5 build 1996. Символ RTS-3.19.Брокер - Открытие. Счёт - реал. Интервал времени верный. История за этот период есть.

"Ошибка получения тиковой истории! С 2019.02.08 11:16 по 2019.02.14 23:48. Код ошибки: 0. Операция выполнена успешно."  :)

При этом, тот же код честно отдаёт все тики в тестере на реальных данных и в онлайне работает без проблем. Что я делаю не так?
В какое тестерное время? Это тестерное время позже 2019.02.14 23:48?
 

Ан нет, опять ошибка вылезла там же...

Вероятно точки только с одинаковыми координатами... почему этой проверки нет в классе...

 
Dmitriy Burlachenko:

Всем привет.

Разработчики и гуру подскажите. CopyTicksRange в тестере на исторических данных в режиме "Все тики" и "Каждый тик на основе реальных тиков" возвращает 0 тиков и код ошибки 0 - почему?

MT5 build 1996. Символ RTS-3.19.Брокер - Открытие. Счёт - реал. Интервал времени верный. История за этот период есть.

"Ошибка получения тиковой истории! С 2019.02.08 11:16 по 2019.02.14 23:48. Код ошибки: 0. Операция выполнена успешно."  :)

При этом, тот же код честно отдаёт все тики в тестере на реальных данных и в онлайне работает без проблем. Что я делаю не так?

Написал на коленке проверочного эксперта

//+------------------------------------------------------------------+
//|                                           TestCopyTicksRange.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

datetime ExtNextBar=0;
datetime ExtTimes[];
MqlTick  ExtTicksAll[];
MqlTick  ExtTicksTrade[];
MqlTick  ExtTicksInfo[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ExtNextBar=NextBarTime(TimeCurrent(),_Period);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   datetime from=D'2019.02.08 11:16';
   datetime to=D'2019.02.14 23:48';
   ulong    from_msc=from*1000;
   ulong    to_msc=to*1000;
   int      ticks_trade=CopyTicksRange(_Symbol,ExtTicksTrade,COPY_TICKS_TRADE,from_msc,to_msc);
   int      ticks_info=CopyTicksRange(_Symbol,ExtTicksInfo,COPY_TICKS_INFO,from_msc,to_msc);
   int      ticks_all=CopyTicksRange(_Symbol,ExtTicksAll,COPY_TICKS_ALL,from_msc,to_msc);
   PrintFormat("%s - %s  ticks_trade=%d  ticks_info=%d  ticks_all=%d",TimeToString(from),TimeToString(to),ticks_trade,ticks_info,ticks_all);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(TimeCurrent()<ExtNextBar)
      return;
//---
   ExtNextBar=NextBarTime(TimeCurrent(),_Period);
   int copied=CopyTime(_Symbol,_Period,0,7,ExtTimes);
   if(copied>1)
     {
      ulong from_msc=ExtTimes[0]*1000;
      ulong to_msc=ExtTimes[copied-1]*1000;
      int   ticks_trade=CopyTicksRange(_Symbol,ExtTicksTrade,COPY_TICKS_TRADE,from_msc,to_msc);
      int   ticks_info=CopyTicksRange(_Symbol,ExtTicksInfo,COPY_TICKS_INFO,from_msc,to_msc);
      int   ticks_all=CopyTicksRange(_Symbol,ExtTicksAll,COPY_TICKS_ALL,from_msc,to_msc);
      PrintFormat("%s - %s  ticks_trade=%d  ticks_info=%d  ticks_all=%d",TimeToString(ExtTimes[0]),TimeToString(ExtTimes[copied-1]),ticks_trade,ticks_info,ticks_all);
     }
   else
      PrintFormat("copied=%d  last_error=%d",copied,GetLastError());
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime NextBarTime(datetime last_time,ENUM_TIMEFRAMES period)
  {
   int         period_seconds=PeriodSeconds(period);
   int         shift;
   MqlDateTime str_time;
//---
   switch(period)
     {
      case PERIOD_MN1 :
         TimeToStruct(last_time,str_time);
         str_time.day=1;
         str_time.hour=0;
         str_time.min=0;
         str_time.sec=0;
         str_time.mon++;
         if(str_time.mon>12)
           {
            str_time.mon=1;
            str_time.year++;
           }
         last_time=StructToTime(str_time);
         break;
      case PERIOD_W1 :
         shift=int(last_time%period_seconds);
         shift+=(shift>=(3*86400))?(-3*86400):(4*86400);
         last_time-=shift;
         last_time+=period_seconds;
         break;
      default :
         last_time/=period_seconds;
         last_time++;
         last_time*=period_seconds;
     }
//---
   return(last_time);
  }
//+------------------------------------------------------------------+

В OnDeinit "контрольный выстрел" по Вашим датам

Вот лог тестирования

2019.02.19 15:12:32.360 127.0.0.1       login (build 1996)
2019.02.19 15:12:32.386 Network 3860 bytes of account info loaded
2019.02.19 15:12:32.386 Network 1482 bytes of tester parameters loaded
2019.02.19 15:12:32.386 Network 188 bytes of input parameters loaded
2019.02.19 15:12:32.429 Network 26288 bytes of symbols list loaded
2019.02.19 15:12:32.429 Tester  expert file added: Experts\Tester\TestCopyTicksRange.ex5. 16251 bytes loaded
2019.02.19 15:12:32.446 Tester  initial deposit 100000.00 RUR, leverage 1:100
2019.02.19 15:12:32.451 Tester  successfully initialized
2019.02.19 15:12:32.451 Network 35 Kb of total initialization data received
2019.02.19 15:12:32.451 Tester  Intel Xeon  E5-2630 v4 @ 2.20GHz, 65457 MB
2019.02.19 15:12:32.455 Symbols RTS-3.19: symbol to be synchronized
2019.02.19 15:12:32.455 Symbols RTS-3.19: symbol synchronized, 3864 bytes of symbol info received
2019.02.19 15:12:32.460 History RTS-3.19: load 31 bytes of history data to synchronize in 0:00:00.003
2019.02.19 15:12:32.460 History RTS-3.19: history synchronized from 2017.05.04 to 2019.02.18
2019.02.19 15:12:32.460 Ticks   RTS-3.19: ticks synchronization started
2019.02.19 15:12:32.467 Ticks   RTS-3.19: load 38 bytes of tick data to synchronize in 0:00:00.000
2019.02.19 15:12:32.467 Ticks   RTS-3.19: history ticks synchronized from 2019.01.03 to 2019.02.15
2019.02.19 15:12:32.500 History RTS-3.19,Daily: history cache allocated for 174 bars and contains 162 bars from 2018.01.03 00:00 to 2019.01.31 00:00
2019.02.19 15:12:32.500 History RTS-3.19,Daily: history begins from 2018.01.03 00:00
2019.02.19 15:12:32.579 Tester  RTS-3.19,Daily (Open-Broker): generating based on real ticks
2019.02.19 15:12:32.579 Tester  RTS-3.19,Daily: testing of Experts\Tester\TestCopyTicksRange.ex5 from 2019.02.01 00:00 to 2019.02.18 00:00 started
2019.02.19 15:12:33.020 Ticks   RTS-3.19 : real ticks begin from 2019.01.03 00:00:00
2019.02.19 15:12:33.780 TestCopyTicksRange (RTS-3.19,D1)        2019.02.04 09:45:01   2019.01.24 00:00 - 2019.02.01 00:00  ticks_trade=946026  ticks_info=309512  ticks_all=1255538
2019.02.19 15:12:34.370 TestCopyTicksRange (RTS-3.19,D1)        2019.02.05 00:00:41   2019.01.25 00:00 - 2019.02.04 00:00  ticks_trade=915869  ticks_info=297066  ticks_all=1212935
2019.02.19 15:12:34.938 TestCopyTicksRange (RTS-3.19,D1)        2019.02.06 00:00:30   2019.01.28 00:00 - 2019.02.05 00:00  ticks_trade=907758  ticks_info=287220  ticks_all=1194978
2019.02.19 15:12:35.517 TestCopyTicksRange (RTS-3.19,D1)        2019.02.07 00:02:28   2019.01.29 00:00 - 2019.02.06 00:00  ticks_trade=897199  ticks_info=280798  ticks_all=1177997
2019.02.19 15:12:36.086 TestCopyTicksRange (RTS-3.19,D1)        2019.02.08 00:03:00   2019.01.30 00:00 - 2019.02.07 00:00  ticks_trade=858459  ticks_info=270151  ticks_all=1128610
2019.02.19 15:12:36.639 TestCopyTicksRange (RTS-3.19,D1)        2019.02.11 09:45:04   2019.01.31 00:00 - 2019.02.08 00:00  ticks_trade=847118  ticks_info=265898  ticks_all=1113016
2019.02.19 15:12:37.160 TestCopyTicksRange (RTS-3.19,D1)        2019.02.12 00:04:45   2019.02.01 00:00 - 2019.02.11 00:00  ticks_trade=804551  ticks_info=248516  ticks_all=1053067
2019.02.19 15:12:37.683 TestCopyTicksRange (RTS-3.19,D1)        2019.02.13 00:00:58   2019.02.04 00:00 - 2019.02.12 00:00  ticks_trade=800227  ticks_info=237735  ticks_all=1037962
2019.02.19 15:12:38.304 TestCopyTicksRange (RTS-3.19,D1)        2019.02.14 00:02:42   2019.02.05 00:00 - 2019.02.13 00:00  ticks_trade=842496  ticks_info=243062  ticks_all=1085558
2019.02.19 15:12:38.992 TestCopyTicksRange (RTS-3.19,D1)        2019.02.15 00:04:54   2019.02.06 00:00 - 2019.02.14 00:00  ticks_trade=922073  ticks_info=258989  ticks_all=1181062
2019.02.19 15:12:39.017 Tester  final balance 100000.00 RUR
2019.02.19 15:12:39.512 TestCopyTicksRange (RTS-3.19,D1)        2019.02.15 23:49:59   2019.02.08 11:16 - 2019.02.14 23:48  ticks_trade=856695  ticks_info=240266  ticks_all=1096961
2019.02.19 15:12:39.578 Tester  RTS-3.19,Daily: 2187070 ticks, 11 bars generated. Environment synchronized in 0:00:00.101. Test passed in 0:00:07.118 (including ticks preprocessing 0:00:00.453).
2019.02.19 15:12:39.578 Tester  RTS-3.19,Daily: total time from login to stop testing 0:00:07.219 (including 0:00:00.101 for history data synchronization)
2019.02.19 15:12:39.578 Tester  570 Mb memory used including 0.47 Mb of history data, 128 Mb of tick data
2019.02.19 15:12:39.578 Tester  log file "E:\MetaTrader5\Client\MetaTrader5Terminal\Final\Tester\Agent-127.0.0.1-3000\logs\20190219.log" written
2019.02.19 15:12:39.594         test Experts\Tester\TestCopyTicksRange.ex5 on RTS-3.19,Daily thread finished
2019.02.19 15:12:44.676 127.0.0.1       prepare for shutdown

Всё копируется.