Если Вы тестируете с 2019.12.01 по 2019.12.20, то будет закачан история с 2018.01.01 по 2019.12.20 и тики точно в диапазоне тестирования, то есть с 2019.12.01 по 2019.12.20. Вы можете посмотреть, как синхронизирована история и как синхронизированы тики в логах тестерного агента.
Спасибо за ответ, но я не очень то понял как всё это работает и почему так работает.
У меня такой вопрос: почему на тестере тиковая история скачивается только до начала даты тестирования ?
Вот есть такой пример:
int OnInit() { MqlTick tick[]; datetime start=D'2019.03.06 00:00:00'; int k=CopyTicks(_Symbol,tick, COPY_TICKS_INFO, start*1000, 200000000); Print("k=",k); if(k<=0) return(INIT_FAILED); Print(tick[0].time," ",tick[k-1].time); Print("-----------------------------------------------"); for(int i=k-6; i<k; i++) { Print(i,". ",tick[i].ask," ",tick[i].bid," ", tick[i].time); } Print("-----------------------------------------------"); return(INIT_SUCCEEDED); }
И вот результаты:
на МТ5
2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) k=19627650 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) 2019.03.06 00:00:12 2019.12.20 23:58:58 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) ----------------------------------------------- 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) 19627644. 1.10763 1.10745 2019.12.20 23:58:53 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) 19627645. 1.10764 1.10745 2019.12.20 23:58:56 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) 19627646. 1.10764 1.10746 2019.12.20 23:58:57 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) 19627647. 1.10765 1.10746 2019.12.20 23:58:57 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) 19627648. 1.10766 1.10747 2019.12.20 23:58:58 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) 19627649. 1.10767 1.10747 2019.12.20 23:58:58 2019.12.22 15:23:55.849 Tick (EURUSD.m,M1) -----------------------------------------------
на тестере
2019.12.22 15:43:52.404 Core 1 EURUSD.m: history ticks synchronized from 2015.01.02 to 2019.12.20 2019.12.22 15:43:52.404 Core 1 EURUSD.m,M1: history cache allocated for 732844 bars and contains 695814 bars from 2018.01.02 10:00 to 2019.11.15 23:58 2019.12.22 15:43:52.404 Core 1 EURUSD.m,M1: history begins from 2018.01.02 10:00 2019.12.22 15:43:52.404 Core 1 EURUSD.m,M1 (RoboForex-MetaTrader 5): generating based on real ticks 2019.12.22 15:43:52.404 Core 1 EURUSD.m,M1: testing of Experts\Tick.ex5 from 2019.11.17 00:00 to 2019.12.22 00:00 started 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 k=17520461 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 2019.03.06 00:00:12 2019.11.15 23:58:59 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 ----------------------------------------------- 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 17520455. 1.10549 1.10514 2019.11.15 23:58:47 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 17520456. 1.1055 1.10514 2019.11.15 23:58:49 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 17520457. 1.1055 1.10515 2019.11.15 23:58:49 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 17520458. 1.1055 1.10512 2019.11.15 23:58:59 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 17520459. 1.1055 1.10514 2019.11.15 23:58:59 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 17520460. 1.1055 1.10515 2019.11.15 23:58:59 2019.12.22 15:43:52.404 Core 1 2019.11.17 00:00:00 -----------------------------------------------
Потому что на тестере тиковая история нужна только для формирования новых баров и для подачи реального тика в OnTick. Это 99.9 процентов использования.
Меня интересует чтобы тиковая история скачивалась до текущей даты, как это происходит на МТ5, а не глубина.
Если скачивание делается из OnTick, то та же картина: тики скачиваются до начала даты тестирования. Я использую тестирование только на реальных тиках и для меня никакие бары не существуют.
Бары нужны только для масштаба, чтобы отобразить графики, а не для торговли.
Получается что на тестере получить тиковую историю до текущей даты не возможно ?
Меня интересует чтобы тиковая история скачивалась до текущей даты, как это происходит на МТ5, а не глубина.
Если скачивание делается из OnTick, то та же картина: тики скачиваются до начала даты тестирования. Я использую тестирование только на реальных тиках и для меня никакие бары не существуют.
Бары нужны только для масштаба, чтобы отобразить графики, а не для торговли.
Получается что на тестере получить тиковую историю до текущей даты не возможно ?
На тестере получить тиковую историю до текущей даты возможно. Ещё раз повторю, попробуйте сделать это не из OnInit. Во-вторых, соответствующая тиковая история уже должна быть доступна тестерному агенту.
Тот же пример вставил в OnTick. Тики скачаются до начала даты тестирования.
Если мы в CopyTicksRange задаем даты начала и конец скачивания, то на тестере они не должны зависеть, какие даты начало и конец тестирования выбраны. Т.е. эти функции на тестере не работают так, как на МТ5.
Тот же пример вставил в OnTick. Тики скачаются до начала даты тестирования.
Если мы в CopyTicksRange задаем даты начала и конец скачивания, то на тестере они не должны зависеть, какие даты начало и конец тестирования выбраны. Т.е. эти функции на тестере не работают так, как на МТ5.
доброго дня. Поясните понятия "на тестере" и "на МТ5".
не понятно их отличие...
Добрался до компьютера с клиентским терминалом.
Вот проверочный эксперт
int ExtTicksCounter; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { MqlTick ticks[100]; int cnt=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,100); if(cnt>0) PrintFormat("OnInit: copied %d ticks from %s.%03d",cnt,TimeToString(ticks[0].time,TIME_DATE|TIME_SECONDS),ticks[0].time_msc%1000); //--- ExtTicksCounter=0; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { Print("OnDeinit with code ",reason); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { MqlTick ticks[100]; int cnt=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,100); if(cnt>0 && cnt<=100 && ExtTicksCounter<=200) PrintFormat("OnTick: copied %d ticks from %s.%03d, ExtCounter=%d",cnt,TimeToString(ticks[0].time,TIME_DATE|TIME_SECONDS),ticks[0].time_msc%1000,ExtTicksCounter); //--- ExtTicksCounter++; } //+------------------------------------------------------------------+
[Tester] Expert=Tester\TestCopyTicks.ex5 Symbol=EURUSD Period=M5 Optimization=0 Model=4 FromDate=2019.01.01 ToDate=2019.10.01 ForwardMode=0 Deposit=10000 Currency=USD ProfitInPips=0 Leverage=100 ExecutionMode=0 OptimizationCriterion=0 Visual=1 [TesterInputs]
Вот полный лог тестирования.
2019.12.23 09:25:05.599 Startup MetaTester 5 x64 build 2284 (18 Dec 2019) 2019.12.23 09:25:05.601 Optimization 54126 Mb available, 100 blocks set for ticks generating 2019.12.23 09:25:05.602 Server MetaTester 5 started on 127.0.0.1:3000 2019.12.23 09:25:05.602 Startup initialization finished 2019.12.23 09:25:06.065 127.0.0.1 login (build 2284) 2019.12.23 09:25:06.071 Network 4372 bytes of account info loaded 2019.12.23 09:25:06.071 Network 1482 bytes of tester parameters loaded 2019.12.23 09:25:06.071 Network 188 bytes of input parameters loaded 2019.12.23 09:25:06.072 Network 685 bytes of symbols list loaded 2019.12.23 09:25:06.072 Tester expert file added: Experts\Tester\TestCopyTicks.ex5. 14760 bytes loaded 2019.12.23 09:25:06.086 Tester 54112 Mb available, 676 blocks set for ticks generating 2019.12.23 09:25:06.086 Tester initial deposit 10000.00 USD, leverage 1:100 2019.12.23 09:25:06.092 Tester successfully initialized 2019.12.23 09:25:06.092 Network 15 Kb of total initialization data received 2019.12.23 09:25:06.093 Tester Intel Xeon E5-2630 v4 @ 2.20GHz, 65457 MB 2019.12.23 09:25:06.116 Symbols EURUSD: symbol to be synchronized 2019.12.23 09:25:06.116 Symbols EURUSD: symbol synchronized, 3720 bytes of symbol info received 2019.12.23 09:25:06.123 History EURUSD: history synchronization started 2019.12.23 09:25:06.128 History EURUSD: load 27 bytes of history data to synchronize in 0:00:00.003 2019.12.23 09:25:06.128 History EURUSD: history synchronized from 2009.01.02 to 2019.11.29 2019.12.23 09:25:06.136 Ticks EURUSD: ticks synchronization started 2019.12.23 09:25:06.138 Ticks EURUSD: load 34 bytes of tick data to synchronize in 0:00:00.000 2019.12.23 09:25:06.138 Ticks EURUSD: history ticks synchronized from 2011.12.19 to 2019.11.29 2019.12.23 09:25:06.305 History EURUSD,M5: history cache allocated for 130600 bars and contains 74431 bars from 2018.01.02 00:00 to 2018.12.31 22:55 2019.12.23 09:25:06.305 History EURUSD,M5: history begins from 2018.01.02 00:00 2019.12.23 09:25:06.348 Tester EURUSD,M5 (MetaQuotes-Demo): generating based on real ticks 2019.12.23 09:25:06.348 Tester EURUSD,M5: testing of Experts\Tester\TestCopyTicks.ex5 from 2019.01.01 00:00 to 2019.10.01 00:00 started 2019.12.23 09:25:06.382 TestCopyTicks (EURUSD,M5) 2019.01.01 00:00:00 OnInit: copied 100 ticks from 2018.12.31 22:59:09.562 2019.12.23 09:25:06.549 Ticks EURUSD : 2019.01.09 23:59 - all the real ticks discarded within a day 2019.12.23 09:25:06.549 Ticks EURUSD : 2019.01.09 23:59 - 115463 tick prices mismatch for 1440 minute bars 2019.12.23 09:25:06.569 Ticks EURUSD : 2019.01.10 23:59 - all the real ticks discarded within a day 2019.12.23 09:25:06.569 Ticks EURUSD : 2019.01.10 23:59 - 108510 tick prices mismatch for 1440 minute bars 2019.12.23 09:25:06.589 Ticks EURUSD : 2019.01.11 23:59 - all the real ticks discarded within a day 2019.12.23 09:25:06.589 Ticks EURUSD : 2019.01.11 23:59 - 110360 tick prices mismatch for 1439 minute bars 2019.12.23 09:25:08.261 Ticks EURUSD : 2019.07.08 23:59 - real ticks absent for 1 minutes out of 1435 total minute bars within a day 2019.12.23 09:25:08.261 Ticks EURUSD : 2019.07.08 23:59 - real ticks discarded for 1434 minutes out of 1435 total minute bars within a day 2019.12.23 09:25:08.261 Ticks EURUSD : 2019.07.08 23:59 - 24810 tick prices mismatch for 1434 minute bars 2019.12.23 09:25:08.971 Ticks EURUSD : real ticks begin from 2011.12.19 00:00:00 2019.12.23 09:25:08.971 Ticks EURUSD : 2019.01.01 00:00 - 2019.10.01 00:00 real ticks absent for 1 minutes of 278604 total minute bars, every tick generation used 2019.12.23 09:25:08.971 Ticks EURUSD : 2019.01.01 00:00 - 2019.10.01 00:00 real ticks discarded for 5753 minutes of 278604 total minute bars, every tick generation used 2019.12.23 09:25:08.971 Ticks EURUSD : 2019.01.01 00:00 - 2019.10.01 00:00 real ticks discarded for 3 whole days 2019.12.23 09:25:08.971 Ticks EURUSD : 2019.01.01 00:00 - 2019.10.01 00:00 tick prices of 359143 ticks not matched for 5753 minute bars 2019.12.23 09:25:09.018 TestCopyTicks (EURUSD,M5) 2019.01.02 06:00:34 OnTick: copied 100 ticks from 2018.12.31 22:59:09.562, ExtCounter=0 2019.12.23 09:25:09.046 TestCopyTicks (EURUSD,M5) 2019.01.02 06:00:34 OnTick: copied 100 ticks from 2018.12.31 22:59:09.831, ExtCounter=1 2019.12.23 09:25:09.073 TestCopyTicks (EURUSD,M5) 2019.01.02 06:00:35 OnTick: copied 100 ticks from 2018.12.31 22:59:12.442, ExtCounter=2 2019.12.23 09:25:09.101 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:00 OnTick: copied 100 ticks from 2018.12.31 22:59:14.033, ExtCounter=3 2019.12.23 09:25:09.151 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:00 OnTick: copied 100 ticks from 2018.12.31 22:59:15.582, ExtCounter=4 2019.12.23 09:25:09.184 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:00 OnTick: copied 100 ticks from 2018.12.31 22:59:15.655, ExtCounter=5 2019.12.23 09:25:09.216 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:10 OnTick: copied 100 ticks from 2018.12.31 22:59:15.786, ExtCounter=6 2019.12.23 09:25:09.268 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:10 OnTick: copied 100 ticks from 2018.12.31 22:59:16.508, ExtCounter=7 2019.12.23 09:25:09.301 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:10 OnTick: copied 100 ticks from 2018.12.31 22:59:17.528, ExtCounter=8 2019.12.23 09:25:09.334 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:10 OnTick: copied 100 ticks from 2018.12.31 22:59:17.587, ExtCounter=9 2019.12.23 09:25:09.387 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:10 OnTick: copied 100 ticks from 2018.12.31 22:59:17.731, ExtCounter=10 2019.12.23 09:25:09.421 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:10 OnTick: copied 100 ticks from 2018.12.31 22:59:18.563, ExtCounter=11 2019.12.23 09:25:09.455 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:13 OnTick: copied 100 ticks from 2018.12.31 22:59:18.999, ExtCounter=12 2019.12.23 09:25:09.491 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:13 OnTick: copied 100 ticks from 2018.12.31 22:59:21.498, ExtCounter=13 2019.12.23 09:25:09.524 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:14 OnTick: copied 100 ticks from 2018.12.31 22:59:21.548, ExtCounter=14 2019.12.23 09:25:09.557 TestCopyTicks (EURUSD,M5) 2019.01.02 06:01:14 OnTick: copied 100 ticks from 2018.12.31 22:59:21.659, ExtCounter=15 ... 2019.12.23 09:25:12.442 TestCopyTicks (EURUSD,M5) 2019.01.02 06:03:36 OnTick: copied 100 ticks from 2019.01.02 06:00:34.179, ExtCounter=99 2019.12.23 09:25:12.442 TestCopyTicks (EURUSD,M5) 2019.01.02 06:03:37 OnTick: copied 100 ticks from 2019.01.02 06:00:34.785, ExtCounter=100 2019.12.23 09:25:12.442 TestCopyTicks (EURUSD,M5) 2019.01.02 06:03:37 OnTick: copied 100 ticks from 2019.01.02 06:00:35.885, ExtCounter=101 2019.12.23 09:25:12.442 TestCopyTicks (EURUSD,M5) 2019.01.02 06:03:37 OnTick: copied 100 ticks from 2019.01.02 06:01:00.021, ExtCounter=102 2019.12.23 09:25:12.442 TestCopyTicks (EURUSD,M5) 2019.01.02 06:03:37 OnTick: copied 100 ticks from 2019.01.02 06:01:00.119, ExtCounter=103 ... 2019.12.23 09:25:12.443 TestCopyTicks (EURUSD,M5) 2019.01.02 06:09:49 OnTick: copied 100 ticks from 2019.01.02 06:03:37.317, ExtCounter=200 2019.12.23 09:25:41.311 Tester final balance 10000.00 USD 2019.12.23 09:25:41.311 TestCopyTicks (EURUSD,M5) 2019.09.30 23:59:58 OnDeinit with code 1 2019.12.23 09:25:41.324 Tester EURUSD,M5: 16464989 ticks, 55757 bars generated. Environment synchronized in 0:00:00.053. Test passed in 0:00:35.205 (including ticks preprocessing 0:00:02.578). 2019.12.23 09:25:41.324 Tester EURUSD,M5: total time from login to stop testing 0:00:35.258 (including 0:00:00.053 for history data synchronization) 2019.12.23 09:25:41.324 Tester 643 Mb memory used including 7 Mb of history data, 384 Mb of tick data 2019.12.23 09:25:41.324 Tester log file "xxxxxxxxxxxxxxxxxxxxxxxxxxx\Tester\Agent-127.0.0.1-3000\logs\20191223.log" written 2019.12.23 09:25:41.324 test Experts\Tester\TestCopyTicks.ex5 on EURUSD,M5 thread finished 2019.12.23 09:25:41.351 127.0.0.1 prepare for shutdown
Прекрасно видно, что тики копируются и в OnInit, потому что до этого они быди закачаны в процессе предыдущих тестирований
- www.metatrader5.com
доброго дня. Поясните понятия "на тестере" и "на МТ5".
не понятно их отличие...
Отличие в том, что на МТ5 текущее время, это серверное время, который показывает TimeCurrent().
А на тестере, если запросить время в OnInit, то значение TimeCurrent() совпадает со значением даты начала тестирования.
Если мы скачиваем тиковые данные на МТ5, то всё понятно когда мы задаем дату начала копирования, работает нормально.
А на тестере начальное значение даты CopyTicks(CopyTicksRange) должно быть меньше, чем значение TimeCurrent(), независимо от того откуда мы запрашиваем эти тики из OnInit или OnTick.
Добрался до компьютера с клиентским терминалом.
Вот проверочный эксперт
Вот полный лог тестирования.
Прекрасно видно, что тики копируются и в OnInit, потому что до этого они быди закачаны в процессе предыдущих тестирований
Спасибо за ответ. Но пока я посмотрю ваш пример, скажите пожалуйста, мое объяснение которое дал выше, правильно или нет ?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Можно подумать, что разработчики CopyTicks сделали специально, чтобы на тестере тиковые данные скачивались до начала даты тестирования.
А если при CopyTicksRange задаем начало и конец скачивания, то на МТ5 нормально работает, а на тестере никак не хочет.
Всё это так чтобы предотвратить мошенничество, или я что-то неправильно делаю?
Вот результаты для CopyTicksRange
На МТ5
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) k=161005
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) 2019.12.17 00:05:00 2019.12.18 23:58:58
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) -----------------------------------------------
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) 160999. 1.11146 1.11124 2019.12.18 23:58:49
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) 161000. 1.11145 1.11124 2019.12.18 23:58:49
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) 161001. 1.11144 1.11124 2019.12.18 23:58:49
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) 161002. 1.11145 1.11124 2019.12.18 23:58:54
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) 161003. 1.11144 1.11124 2019.12.18 23:58:57
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) 161004. 1.11143 1.11124 2019.12.18 23:58:58
2019.12.22 11:51:46.581 Tick (EURUSD.m,H1) -----------------------------------------------
Тоже самое на тестере
2019.12.22 11:49:52.174 Core 1 EURUSD.m,M1: testing of Experts\Tick.ex5 from 2019.12.17 00:00 to 2019.12.22 00:00 started
2019.12.22 11:49:52.174 Core 1 2019.12.17 00:00:00 k=0
2019.12.22 11:49:52.174 Core 1 tester stopped because OnInit returns non-zero code
2019.12.22 11:49:52.174 Core 1 log file "C:\Users\User\AppData\Roaming\MetaQuotes\Tester\0922A56CC3B5FB9BF1851938DA831C16\Agent-127.0.0.1-3000\logs\20191222.log" written
2019.12.22 11:49:52.180 Core 1 connection closed