Тестируем 'CopyTicks' - страница 49

 

b3567, столкнулся в последних билдах на некоторых торговых серверах, что первый вызов на символе CopyTicks вызывает реконнект к торговому серверу. Иногда тики прекращают закачиваться с нужной даты, хотя в bases все есть. Вылечивается только перезагрузкой терминала. В общем, что-то поменяли в CopyTicks и ощущение стабильности полностью испарилось.


На сервере ICMarketsSC-MT5-2 скриптом пытаюсь выкачать тики с символов из Обзора рынка.

input datetime inFrom = D'2023.01.27';

void OnStart()
{
  const string ServerName = AccountInfoString(ACCOUNT_SERVER);
  
  for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
  {
    const string Symb =SymbolName(i, true);
    
    if (!SymbolInfoInteger(Symb, SYMBOL_CUSTOM) && SymbolInfoInteger(Symb, SYMBOL_VISIBLE))
    {
      MqlTick Ticks[];
      const int Size = CopyTicksRange(Symb, Ticks, COPY_TICKS_ALL, inFrom * 1000);
//      const int Size = CopyTicks(Symb, Ticks);
      
      const string Str = (string)i + ": " + Symb + "_" + ServerName + " from " + (string)inFrom + " - ";;      
      
      Alert(Str + (string)Size);
    }
  }
}


Результат.

2023.01.29 16:43:07.125 Alert: 70: XAGAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.127 Alert: 69: XAUGBP_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 86207
2023.01.29 16:43:07.129 Alert: 68: XAUCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 82243
2023.01.29 16:43:07.131 Alert: 67: XAUJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 97275
2023.01.29 16:43:07.133 Alert: 66: XAUAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 96143
2023.01.29 16:43:07.172 Alert: 65: XPTUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.208 Alert: 64: XPDUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.210 Alert: 63: XAUUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 88723
2023.01.29 16:43:07.246 Alert: 62: XAGUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.284 Alert: 61: XAGEUR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.320 Alert: 60: USDZAR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.357 Alert: 59: USDTRY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.393 Alert: 58: USDTHB_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.430 Alert: 57: USDSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.466 Alert: 56: USDPLN_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.502 Alert: 55: USDNOK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.538 Alert: 54: USDMXN_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.575 Alert: 53: USDHUF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.611 Alert: 52: USDHKD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.647 Alert: 51: USDDKK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.683 Alert: 50: USDCZK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.721 Alert: 49: USDCNH_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.757 Alert: 48: SGDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.758 Alert: 47: SEKJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 35276
2023.01.29 16:43:07.759 Alert: 46: NOKSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 50588
2023.01.29 16:43:07.760 Alert: 45: NOKJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 41781
2023.01.29 16:43:07.762 Alert: 44: GBPTRY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 60234
2023.01.29 16:43:07.763 Alert: 43: GBPSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 66258
2023.01.29 16:43:07.800 Alert: 42: GBPSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.836 Alert: 41: GBPNOK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.873 Alert: 40: GBPDKK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.874 Alert: 39: EURZAR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 68099
2023.01.29 16:43:07.911 Alert: 38: EURTRY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.913 Alert: 37: EURSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 67103
2023.01.29 16:43:07.914 Alert: 36: EURSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 57683
2023.01.29 16:43:07.915 Alert: 35: EURPLN_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 17879
2023.01.29 16:43:07.917 Alert: 34: EURNOK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 89512
2023.01.29 16:43:07.919 Alert: 33: EURHKD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 84081
2023.01.29 16:43:07.919 Alert: 32: EURDKK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 9095
2023.01.29 16:43:07.920 Alert: 31: CHFSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 56568
2023.01.29 16:43:07.955 Alert: 30: AUDSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.993 Alert: 29: USDSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:07.995 Alert: 28: NZDUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 74364
2023.01.29 16:43:07.997 Alert: 27: NZDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 98031
2023.01.29 16:43:08.034 Alert: 26: NZDCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.071 Alert: 25: NZDCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.109 Alert: 24: GBPNZD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.147 Alert: 23: GBPAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.183 Alert: 22: CADCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.185 Alert: 21: GBPCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 81971
2023.01.29 16:43:08.221 Alert: 20: EURNZD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.223 Alert: 19: EURCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 80147
2023.01.29 16:43:08.260 Alert: 18: CHFJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.262 Alert: 17: AUDCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 74074
2023.01.29 16:43:08.265 Alert: 16: AUDNZD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 110829
2023.01.29 16:43:08.301 Alert: 15: USDCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.303 Alert: 14: XAUEUR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 86159
2023.01.29 16:43:08.306 Alert: 13: GBPCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 116445
2023.01.29 16:43:08.343 Alert: 12: CADJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.380 Alert: 11: GBPJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.382 Alert: 10: EURCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 114922
2023.01.29 16:43:08.466 Alert: 9: EURJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 139650
2023.01.29 16:43:08.503 Alert: 8: EURAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.505 Alert: 7: EURGBP_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 87106
2023.01.29 16:43:08.542 Alert: 6: AUDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 0
2023.01.29 16:43:08.543 Alert: 5: AUDUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 63227
2023.01.29 16:43:08.546 Alert: 4: USDCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 81386
2023.01.29 16:43:08.548 Alert: 3: USDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 112783
2023.01.29 16:43:08.550 Alert: 2: GBPUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 97237
2023.01.29 16:43:08.552 Alert: 1: EURUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 58027
2023.01.29 16:43:08.554 Alert: 0: AUDCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 83729

Полно символов, где тиков просто нет. Возможно, это связано с запуском скрипта в выходные, т.к. закачка в будние дни работала.

В общем, какие-то неприятности с тиками сыпятся.


Еще и такое в Тестере происходит из-за проблем с тиками.

Core 1  GBPAUD,M1 (ICMarketsSC-MT5-2): generating based on real ticks
Core 1  GBPAUD,M1: testing of Experts\fxsaber\TesterTickCheck.ex5 from 2023.01.01 00:00 to 2023.01.29 00:00 started with inputs:
Core 1    BeginTime=1672531200
Core 1    EndTime=1673913600
Core 1    inFlags=false
Core 1  GBPAUD : 2023.01.01 00:00 - 2023.01.29 00:00  no real ticks, every tick generation used

Запускаешь по реальным тикам, а получаешь проход по сгенерированным. При этом в кеш-файл пишется, что проход был по реальным тикам. Ошибка ведь.

 

Ренат, вы им так ответьте по поводу всех этих тиков) "Да не лезьте вы в эти тики - создавайте робастные системы")) - Это я помню лет 10-12 назад было))

P/S Шутка)

 
fxsaber #:

Полно символов, где тиков просто нет. Возможно, это связано с запуском скрипта в выходные, т.к. закачка в будние дни работала.

Дело в выходных. Результат запуска в будний день.
Alert: 70: XAGAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 75303
Alert: 69: XAUGBP_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 122793
Alert: 68: XAUCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 115858
Alert: 67: XAUJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 146408
Alert: 66: XAUAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 140629
Alert: 65: XPTUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 43732
Alert: 64: XPDUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 43846
Alert: 63: XAUUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 125299
Alert: 62: XAGUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 74941
Alert: 61: XAGEUR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 57782
Alert: 60: USDZAR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 79599
Alert: 59: USDTRY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 14951
Alert: 58: USDTHB_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 20418
Alert: 57: USDSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 182113
Alert: 56: USDPLN_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 76267
Alert: 55: USDNOK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 129308
Alert: 54: USDMXN_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 66387
Alert: 53: USDHUF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 55853
Alert: 52: USDHKD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 15603
Alert: 51: USDDKK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 108994
Alert: 50: USDCZK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 136781
Alert: 49: USDCNH_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 129399
Alert: 48: SGDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 139532
Alert: 47: SEKJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 52489
Alert: 46: NOKSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 75762
Alert: 45: NOKJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 68158
Alert: 44: GBPTRY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 79463
Alert: 43: GBPSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 92942
Alert: 42: GBPSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 115645
Alert: 41: GBPNOK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 135559
Alert: 40: GBPDKK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 108491
Alert: 39: EURZAR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 91552
Alert: 38: EURTRY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 101937
Alert: 37: EURSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 94859
Alert: 36: EURSEK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 85521
Alert: 35: EURPLN_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 23923
Alert: 34: EURNOK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 150760
Alert: 33: EURHKD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 114158
Alert: 32: EURDKK_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 13941
Alert: 31: CHFSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 79513
Alert: 30: AUDSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 104154
Alert: 29: USDSGD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 71064
Alert: 28: NZDUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 111993
Alert: 27: NZDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 147916
Alert: 26: NZDCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 90749
Alert: 25: NZDCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 112325
Alert: 24: GBPNZD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 165853
Alert: 23: GBPAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 230876
Alert: 22: CADCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 91111
Alert: 21: GBPCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 116818
Alert: 20: EURNZD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 151253
Alert: 19: EURCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 111069
Alert: 18: CHFJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 158918
Alert: 17: AUDCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 104865
Alert: 16: AUDNZD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 171639
Alert: 15: USDCHF_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 98628
Alert: 14: XAUEUR_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 120965
Alert: 13: GBPCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 164702
Alert: 12: CADJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 168952
Alert: 11: GBPJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 244171
Alert: 10: EURCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 153427
Alert: 9: EURJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 206850
Alert: 8: EURAUD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 193005
Alert: 7: EURGBP_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 124045
Alert: 6: AUDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 207352
Alert: 5: AUDUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 93516
Alert: 4: USDCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 111123
Alert: 3: USDJPY_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 170311
Alert: 2: GBPUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 143107
Alert: 1: EURUSD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 82378
Alert: 0: AUDCAD_ICMarketsSC-MT5-2 from 2023.01.27 00:00:00 - 118514

Все тики есть! Просьба починить работу CopyTicks в выходные. Все данные для воспроизведения в наличии.

Строка для поискаOshibka 062.

 

Что обозначает это значение?

Тики не закачиваются по определенному символу. Перезагрузка не помогает. Удаление tkc-файлов - аналогично.


Если ставить с нуля Терминал - закачиваются! Подскажите, куда копать, чтобы смогли разобраться и исправить?

 
fxsaber #:

Тики не закачиваются по определенному символу. Перезагрузка не помогает. Удаление tkc-файлов - аналогично.

Если ставить с нуля Терминал - закачиваются!

Воспроизведение (на всех машинах, что пробовал). b3577.

  1. Создать папку и распаковать в нее архив (в ЛС) - папка config.
  2. Скопировать в папку exe-файлы терминала.
  3. Запустить terminal64.exe.
  4. Зайти на торговый счет (в ЛС).
  5. Попытаться закачать тики с установками, что уже прописаны.


Будет такой результат. По другим символам - закачиваются тики.

Если не делать п.1., то и по этому символу будут закачиваться тики.

Строка для поискаOshibka 064.

 

Тики могут не записываться в базу Терминала.

Делал проверку через CopyTicksRange - в OnTick запросы с предыдущего Ticks[Size - 1].time_msc.


В итоге получил такой результат.

Alert: CopyTicksRange (1 ticks) without FirstTick!!!
Ticks[0] =  time = 2023.10.16 13:40:50.189 bid = 19.82678 ask = 19.83182 6 TICK_FLAG_BID TICK_FLAG_ASK
FirstTick =  time = 2023.10.16 13:40:49.665 bid = 19.82688 ask = 19.83212 2 TICK_FLAG_BID
                 [time]    [bid]    [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2023.10.16 13:40:50 19.82678 19.83182 0.0000        0 1697463650189       6       0.00000

На параллельно запущенном терминале с такой же проверкой алерт не сработал. Поэтому сделал запрос тиков на каждом терминале через CTRL+U.

Так и есть, в одном терминале тик присутствует, в другом - нет!

Случается не только на экзотике.

Строка для поискаOshibka 074.

 

Если CopyTicks подвисает на 60 секунд и возвращает ошибку 4403, попробуйте поменять точку доступа к серверу. Даже если до нее пинг менее выгодный.

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

 
fxsaber #:

Если CopyTicks подвисает на 60 секунд и возвращает ошибку 4403, попробуйте поменять точку доступа к серверу. Даже если до нее пинг менее выгодный.

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

Сам сейчас  этим занят, сколько подводных камней, оказывается...

 
fxsaber #:

Если CopyTicks подвисает на 60 секунд и возвращает ошибку 4403, попробуйте поменять точку доступа к серверу. Даже если до нее пинг менее выгодный.

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

Нарвался.

FE      0       16:54:36.233    Network '': scanning network for access points
OR      0       16:55:13.205    Network '': scanning network finished
FJ      0       16:55:13.205    Network '': auto connecting to a better access point with 99 % quality (previous: 99 %)

После этого перестали поступать исторические тики. Целесообразно при ошибке 4403 делать реконнект к правильной точке через WinAPI.

 

Работает ли у кого-либо этот скрипт из справки:

#property copyright "Copyright 2000-2024, MetaQuotes Ltd." 
#property link      "https://www.mql5.com" 
#property version   "1.00" 
#property script_show_inputs 
//--- запрашиваем 100 миллионов тиков, чтобы гарантировать получение всей тиковой истории 
input int      getticks=100000000; // сколько тиков требуется 
//+------------------------------------------------------------------+ 
//| Script program start function                                    | 
//+------------------------------------------------------------------+ 
void OnStart() 
  { 
//---   
   int     attempts=0;     // счетчик попыток 
   bool    success=false;  // флаг успешного выполнения копирования тиков 
   MqlTick tick_array[];   // массив для приема тиков 
   MqlTick lasttick;       // для получения данных последнего тика 
   SymbolInfoTick(_Symbol,lasttick); 
//--- сделаем 3 попытки получить тики 
   while(attempts<3) 
     { 
      //--- замерим время старта перед получением тиков 
      uint start=GetTickCount(); 
//--- запросим тиковую историю с момента 1970.01.01 00:00.001 (параметр from=1 ms) 
      int received=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,1,getticks); 
      if(received!=-1) 
        { 
         //--- выведем информацию о количестве тиков и затраченном времени времени 
         PrintFormat("%s: received %d ticks in %d ms",_Symbol,received,GetTickCount()-start); 
         //--- если тиковая история синхронизирована, то код ошибки равен нулю 
         if(GetLastError()==0) 
           { 
            success=true; 
            break; 
           } 
         else 
            PrintFormat("%s: Ticks are not synchronized yet, %d ticks received for %d ms. Error=%d", 
            _Symbol,received,GetTickCount()-start,_LastError); 
        } 
      //--- считаем попытки 
      attempts++; 
      //--- пауза в 1 секунду в ожидании завершения синхронизации тиковой базы 
      Sleep(1000); 
     } 
//--- не удалось получить запрошенные тики от самого начала истории с трех попыток  
   if(!success) 
     { 
      PrintFormat("Ошибка! Не удалось получить %d тиков по %s с трех попыток",getticks,_Symbol); 
      return; 
     } 
   int ticks=ArraySize(tick_array); 
//--- выведем время первого тика в массиве 
   datetime firstticktime=tick_array[ticks-1].time; 
   PrintFormat("Last tick time = %s.%03I64u", 
               TimeToString(firstticktime,TIME_DATE|TIME_MINUTES|TIME_SECONDS),tick_array[ticks-1].time_msc%1000); 
//--- выведем время последнего тика в массиве 
   datetime lastticktime=tick_array[0].time; 
   PrintFormat("First tick time = %s.%03I64u", 
               TimeToString(lastticktime,TIME_DATE|TIME_MINUTES|TIME_SECONDS),tick_array[0].time_msc%1000); 
  
//---                                                            
   MqlDateTime today; 
   datetime current_time=TimeCurrent();                          
   TimeToStruct(current_time,today);                             
   PrintFormat("current_time=%s",TimeToString(current_time));    
   today.hour=0; 
   today.min=0; 
   today.sec=0; 
   datetime startday=StructToTime(today); 
   datetime endday=startday+24*60*60; 
   if((ticks=CopyTicksRange(_Symbol,tick_array,COPY_TICKS_ALL,startday*1000,endday*1000))==-1)  
     { 
      PrintFormat("CopyTicksRange(%s,tick_array,COPY_TICKS_ALL,%s,%s) failed, error %d",        
                  _Symbol,TimeToString(startday),TimeToString(endday),GetLastError());           
      return;                                                                                   
     } 
   ticks=MathMax(100,ticks);  
//--- теперь выведем первые 100 тиков последнего дня 
   int counter=0; 
   for(int i=0;i<ticks;i++) 
     { 
      datetime time=tick_array[i].time; 
      if((time>=startday) && (time<endday) && counter<100) 
        { 
         counter++; 
         PrintFormat("%d. %s",counter,GetTickDescription(tick_array[i])); 
        } 
     } 
//--- выведем первые 100 сделок последнего дня 
   counter=0; 
   for(int i=0;i<ticks;i++) 
     { 
      datetime time=tick_array[i].time; 
      if((time>=startday) && (time<endday) && counter<100) 
        { 
         if(((tick_array[i].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) || ((tick_array[i].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL)) 
           { 
            counter++; 
            PrintFormat("%d. %s",counter,GetTickDescription(tick_array[i])); 
           } 
        } 
     } 
  } 
//+------------------------------------------------------------------+ 
//| возвращает строковое описание тика                               | 
//+------------------------------------------------------------------+ 
string GetTickDescription(MqlTick &tick) 
  { 
   string desc=StringFormat("%s.%03d ", 
                            TimeToString(tick.time),tick.time_msc%1000); 
//--- проверим флаги 
   bool buy_tick=((tick.flags&TICK_FLAG_BUY)==TICK_FLAG_BUY); 
   bool sell_tick=((tick.flags&TICK_FLAG_SELL)==TICK_FLAG_SELL); 
   bool ask_tick=((tick.flags&TICK_FLAG_ASK)==TICK_FLAG_ASK); 
   bool bid_tick=((tick.flags&TICK_FLAG_BID)==TICK_FLAG_BID); 
   bool last_tick=((tick.flags&TICK_FLAG_LAST)==TICK_FLAG_LAST); 
   bool volume_tick=((tick.flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME); 
//--- проверим сначала тик на торговые флаги 
   if(buy_tick || sell_tick) 
     { 
      //--- сформируем вывод для торгового тика 
      desc=desc+(buy_tick?StringFormat("Buy Tick: Last=%G Volume=%d ",tick.last,tick.volume):""); 
      desc=desc+(sell_tick?StringFormat("Sell Tick: Last=%G Volume=%d ",tick.last,tick.volume):""); 
      desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):""); 
      desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):""); 
      desc=desc+"(Trade tick)"; 
     } 
   else 
     { 
      //--- для инфо тика сформируем вывод немного иначе 
      desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):""); 
      desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):""); 
      desc=desc+(last_tick?StringFormat("Last=%G ",tick.last):""); 
      desc=desc+(volume_tick?StringFormat("Volume=%d ",tick.volume):""); 
      desc=desc+"(Info tick)"; 
     } 
//--- вернем описание тика 
   return desc; 
  } 
//+------------------------------------------------------------------+ 

Запускаю - всё висит. Иду в отладчик - на строке 24  ( int received=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,1,getticks);  ) отладчик надолго зависает. Можно только приостановить или завершить отладку...

Ну секунд через много отвисает, но тики не получены, и так все три попытки, которые в скрипте прописаны.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
Функция получает в массив ticks_array тики в формате MqlTick , при этом индексация ведётся от прошлого к настоящему, то есть тик с индексом 0...