이제 거래 작업 이 테스트 기간에 영향을 미치는지 여부와 어느 정도인지 알아 보겠습니다. EA에서 조건을 확인하고 거래를 체결하기 위한 블록을 완전히 비활성화하고 하나 및 여러 기호에 대해 일련의 테스트를 다시 실행해 보겠습니다. 표시기 핸들의 수신과 막대 및 표시기의 데이터 요청은 그대로 두도록 합시다.
1개의 문자를 테스트할 때 데이터 연도( 2017.01.01 - 2018.01.01 )에 대해 이전 테스트보다 테스트 기간이 13초 감소했습니다. 두 글자 사용 시 예상 테스트 시간 24초. x 2 = 48초 그리고 3명의 캐릭터에 대해 24초. x 3 = 1분 12초
2018.01 . 27 16 : 20 : 50.271 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 00 : 23.640 . 2018.01 . 27 16 : 20 : 50.271 Core 1 EURUSD,M5: total time from login to stop testing 0 : 00 : 23.687 (including 0 : 00 : 00.047 for history data synchronization) 2018.01 . 27 16 : 20 : 50.271 Core 1 823 Mb memory used including 8 Mb of history data, 512 Mb of tick data
2개의 심볼을 테스트한 결과 데이터 연도( 2017.01.01~2018.01.01 )에 대한 이전 테스트보다 테스트 기간이 31초 단축되었습니다.
2018.01 . 27 16 : 24 : 23.759 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 01 : 44.469 (including ticks preprocessing 0 : 00 : 01.422 ). 2018.01 . 27 16 : 24 : 23.759 Core 1 EURUSD,M5: total time from login to stop testing 0 : 01 : 44.516 (including 0 : 00 : 00.047 for history data synchronization) 2018.01 . 27 16 : 24 : 23.759 Core 1 53911219 total ticks for all symbols 2018.01 . 27 16 : 24 : 23.759 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 27 16 : 24 : 23.759 Core 1 GBPUSD: generate 27742039 ticks in 0 : 00 : 01.422 , passed to tester 27742039 ticks 2018.01 . 27 16 : 24 : 23.759 Core 1 1409 Mb memory used including 17 Mb of history data, 1024 Mb of tick data
3명의 캐릭터를 테스트할 때 테스트 시간이 1분 감소했습니다. 7초 데이터 연도( 2017.01.01 – 2018.01.01 )에 대한 이전 테스트와 비교합니다.
2018.01 . 27 16 : 30 : 07.790 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.062 . Test passed in 0 : 04 : 21.141 (including ticks preprocessing 0 : 00 : 04.312 ). 2018.01 . 27 16 : 30 : 07.790 Core 1 EURUSD,M5: total time from login to stop testing 0 : 04 : 21.203 (including 0 : 00 : 00.062 for history data synchronization) 2018.01 . 27 16 : 30 : 07.790 Core 1 86509916 total ticks for all symbols 2018.01 . 27 16 : 30 : 07.790 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 27 16 : 30 : 07.790 Core 1 GBPUSD: passed to tester 27742039 ticks 2018.01 . 27 16 : 30 : 07.790 Core 1 USDJPY: generate 32598697 ticks in 0 : 00 : 04.312 , passed to tester 32598697 ticks 2018.01 . 27 16 : 30 : 07.790 Core 1 1863 Mb memory used including 26 Mb of history data, 1408 Mb of cached tick data (total memory for tick data 1663 Mb)
//---
이 시리즈에서도 예상 테스트 시간이 충족되지 않습니다.
이제 표시기 핸들을 수신하고 데이터를 요청하는 블록을 비활성화해 보겠습니다. 사실, 지금은 새로운 막대 가 형성되는 경우에 대해 하나의 조건만 확인하는 더미 Expert Advisor에 불과합니다.
1개의 문자를 테스트할 때 데이터의 연도( 2017.01.01 - 2018.01.01 )에 대해 이전 테스트보다 테스트 기간이 8초 감소했습니다. 두 글자 사용 시 예상 테스트 시간 16초. x 2 = 32초 3자 16초 x 3 = 48초 4자 16초 x 4 = 1분 4초
2018.01 . 27 17 : 49 : 39.855 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.062 . Test passed in 0 : 00 : 16.438 (including ticks preprocessing 0 : 00 : 01.281 ). 2018.01 . 27 17 : 49 : 39.855 Core 1 EURUSD,M5: total time from login to stop testing 0 : 00 : 16.500 (including 0 : 00 : 00.062 for history data synchronization) 2018.01 . 27 17 : 49 : 39.855 Core 1 787 Mb memory used including 8 Mb of history data, 512 Mb of tick data
2개의 문자를 테스트할 때 데이터 연도( 2017.01.01 - 2018.01.01 )에 대해 이전 테스트보다 테스트 기간이 40초 감소했습니다.
2018.01 . 27 17 : 51 : 35.343 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.032 . Test passed in 0 : 01 : 04.593 (including ticks preprocessing 0 : 00 : 01.359 ). 2018.01 . 27 17 : 51 : 35.343 Core 1 EURUSD,M5: total time from login to stop testing 0 : 01 : 04.625 (including 0 : 00 : 00.048 for history data synchronization) 2018.01 . 27 17 : 51 : 35.343 Core 1 53911219 total ticks for all symbols 2018.01 . 27 17 : 51 : 35.343 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 27 17 : 51 : 35.343 Core 1 GBPUSD: generate 27742039 ticks in 0 : 00 : 01.359 , passed to tester 27742039 ticks 2018.01 . 27 17 : 51 : 35.343 Core 1 1336 Mb memory used including 17 Mb of history data, 1024 Mb of tick data
3자 테스트 시 기존 데이터 연도( 2017.01.01~2018.01.01 ) 테스트 대비 테스트 시간이 1분 38초 단축됐다.
2018.01 . 27 17 : 55 : 00.938 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 02 : 41.000 (including ticks preprocessing 0 : 00 : 02.766 ). 2018.01 . 27 17 : 55 : 00.938 Core 1 EURUSD,M5: total time from login to stop testing 0 : 02 : 41.047 (including 0 : 00 : 00.063 for history data synchronization) 2018.01 . 27 17 : 55 : 00.938 Core 1 86509916 total ticks for all symbols 2018.01 . 27 17 : 55 : 00.938 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 27 17 : 55 : 00.938 Core 1 GBPUSD: passed to tester 27742039 ticks 2018.01 . 27 17 : 55 : 00.938 Core 1 USDJPY: generate 32598697 ticks in 0 : 00 : 02.766 , passed to tester 32598697 ticks 2018.01 . 27 17 : 55 : 00.938 Core 1 1892 Mb memory used including 26 Mb of history data, 1536 Mb of cached tick data (total memory for tick data 1663 Mb)
데이터 연도( 2017.01.01 - 2018.01.01 )에 대해 4개의 문자에 대해 다른 테스트를 시도해 보겠습니다.
2018.01 . 27 18 : 00 : 24.607 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 02.266 . Test passed in 0 : 04 : 30.140 (including ticks preprocessing 0 : 00 : 05.125 ). 2018.01 . 27 18 : 00 : 24.607 Core 1 EURUSD,M5: total time from login to stop testing 0 : 04 : 32.406 (including 0 : 00 : 02.375 for history data synchronization) 2018.01 . 27 18 : 00 : 24.607 Core 1 107227636 total ticks for all symbols 2018.01 . 27 18 : 00 : 24.607 Core 1 AUDUSD: generate 20717720 ticks in 0 : 00 : 05.125 , passed to tester 20717720 ticks 2018.01 . 27 18 : 00 : 24.607 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 27 18 : 00 : 24.607 Core 1 GBPUSD: passed to tester 27742039 ticks 2018.01 . 27 18 : 00 : 24.607 Core 1 USDJPY: passed to tester 32598697 ticks 2018.01 . 27 18 : 00 : 24.607 Core 1 1680 Mb memory used including 35 Mb of history data, 1280 Mb of cached tick data (total memory for tick data 2047 Mb)
//---
이 시리즈에서도 예상 테스트 시간이 충족되지 않습니다.
문제:
테스트에 기호를 추가할 때 테스트 기간이 여러 번 증가하지 않도록 MQL에서 이러한 다중 기호 Expert Advisor 구성표를 생성할 수 있습니까?
//---
이것이 불가능한 경우 터미널 개발자를 위한 옵션 중 하나는 동시에 모든 문자가 아니라 문자별로 순차적으로 테스트할 수 있는 다른 모드를 추가하는 것입니다. 이것은 결과적으로 예상 테스트 시간을 제공합니다. 문제는 다중 기호 Expert Advisors가 다음과 같은 경우에 매우 자주 사용된다는 것입니다.
- 더 많은 테스트 데이터가 필요합니다.
- 동일한 매개변수를 사용하여 더 다양한 가격 조치, 조건(스프레드, 중지/제한 수준) 등에서 거래 알고리즘을 테스트합니다.
테스트 기간과 매개변수 최적화를 크게 줄이는 새로운 모드가 필요한 경우입니다. 그리고 최종 테스트를 위해 모든 기호를 동시에 테스트합니다.
조언자
#include <TesterBenchmark.mqh> // https://www.mql5.com/ru/code/18804 input int AmountSymbols = 1 ; double Sum2 = 0 ; const bool Init = EventSetTimer ( 1 ); double GetBid( const string Symb ) { static MqlTick Tick; return ( SymbolInfoTick (Symb, Tick) ? Tick.bid : 0 ); } void OnTimer () { static const string Symbols[] = { "EURUSD" , "GBPUSD" , "AUDUSD" }; for ( int i = 0 ; i < AmountSymbols; i++) Sum2 += GetBid(Symbols[i]); } void OnTick () { } void OnDeinit ( const int ) { Print (Sum2); }
EURUSD M1 MetaQuotes-데모, 헤지, USD, 지연 없음, Core1 에이전트 전용, 실제 틱 09/01/2017 - 01/26/2018.
한 문자
i = 0 Pass = 0 OnTester = 3.728 s.: Count = 9753093 , 2616173.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755 i = 1 Pass = 1 OnTester = 3.727 s .: Count = 9753093 , 2616875.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755
두 캐릭터
i = 0 Pass = 0 OnTester = 7.946 s.: Count = 9753093 , 1227421.7 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755 i = 1 Pass = 1 OnTester = 7.614 s .: Count = 9753093 , 1280942.1 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755
세 글자
i = 0 Pass = 0 OnTester = 10.300 s.: Count = 9753093 , 946902.2 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755 i = 1 Pass = 1 OnTester = 10.236 s .: Count = 9753093 , 952822.7 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755
확장성 면에서 모든 것이 괜찮은 것 같습니다.
...
확장성 면에서 모든 것이 괜찮은 것 같습니다.
모든 틱이 발생하는 전문가가 필요합니다. 각 기호의 표시기에서 사용자 정의 이벤트를 통해.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
fxsaber , 2016.11.13 14:04
요점은 OnTick 호출에 있습니다. 다중 통화 고문의 경우 올바른 철자가 두 개뿐입니다(두 번째 철자는 결함 있음).
- 다중 통화 OnTick. 처음에 각 기호에 대한 표시기를 전송하여 구현합니다. 표시기가 사용자 지정 이벤트를 OnCalculate로 보내는 위치입니다. 그리고 EA 자체에서는 OnChartEvent에서 모든 지표의 커스텀 이벤트가 포착되고 거래 로직이 실행됩니다. 그러한 Expert Advisor에는 표준 OnTick이 없습니다.
- ...
\MQL5\Indicators 에 표시기를 배치합니다.
//+------------------------------------------------------------------+ //| EventsSpyTickOnly.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2018, MetaQuotes Software Corp." #property link "http://www.mql5.com" //--- #property indicator_chart_window #property indicator_plots 0 //+------------------------------------------------------------------+ //| Перечисление событий | //+------------------------------------------------------------------+ enum ENUM_CHART_EVENT_SYMBOL { CHARTEVENT_INIT = 0 , // Событие "инициализация" CHARTEVENT_NO = 0 , // События отключены CHARTEVENT_TICK = 0x00200000 // Событие "новый тик" }; //--- Внешние параметры input long chart_id; // идентификатор графика-получателя события input ushort custom_event_id; // идентификатор события input ENUM_CHART_EVENT_SYMBOL flag_event=CHARTEVENT_NO; // флаг, определяющий тип события. //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate ( const int rates_total, const int prev_calculated, const int begin, const double & price[]) { if (prev_calculated== 0 ) { EventCustom(CHARTEVENT_INIT); return (rates_total); } //--- New tick if (flag_event==CHARTEVENT_TICK) EventCustom(CHARTEVENT_TICK); //--- Return value of prev_calculated for next call return (rates_total); } //+------------------------------------------------------------------+ //| Пользовательское событие | //+------------------------------------------------------------------+ void EventCustom(ENUM_CHART_EVENT_SYMBOL event) { EventChartCustom (chart_id,custom_event_id,( long )event, 0.0 , _Symbol ); } //+------------------------------------------------------------------+
테스트 전문가:
//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2018, MetaQuotes Software Corp." #property link "http://www.mql5.com" //+------------------------------------------------------------------+ //| Перечисление событий | //+------------------------------------------------------------------+ enum ENUM_CHART_EVENT_SYMBOL { CHARTEVENT_INIT = 0 , // Событие "инициализация" CHARTEVENT_NO = 0 , // События отключены CHARTEVENT_TICK = 0x00200000 // Событие "новый тик" }; //--- Внешние параметры input int AmountSymbols= 1 ; //--- static const string symbols[]={ "EURUSD" , "GBPUSD" , "AUDUSD" , "USDJPY" , "USDCAD" }; long spy_indicator_handles[]; //--- double sum2 = 0 ; const bool init = EventSetTimer ( 1 ); //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit ( void ) { GetSpyHandles(); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int ) { Print (sum2); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer ( void ) { //Strategy(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick ( void ) { //Strategy(); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { //--- Если было событие "тик" if (lparam==CHARTEVENT_TICK) { Strategy(); return ; } } //+------------------------------------------------------------------+ //| Get bid price | //+------------------------------------------------------------------+ double GetBid( const string Symb) { static MqlTick Tick; return ( SymbolInfoTick (Symb, Tick)? Tick.bid : 0 ); } //+------------------------------------------------------------------+ //| Strategy | //+------------------------------------------------------------------+ void Strategy( void ) { for ( int i= 0 ; i<AmountSymbols; i++) sum2+=GetBid(symbols[i]); } //+------------------------------------------------------------------+ //| Получает хэндлы агентов по указанным символам | //+------------------------------------------------------------------+ void GetSpyHandles( void ) { string path= "EventsSpyTickOnly.ex5" ; //--- :: ArrayResize (spy_indicator_handles,AmountSymbols); //--- Пройдемся по всем символам for ( int s= 0 ; s<AmountSymbols; s++) { //--- Получим хэндл индикатора spy_indicator_handles[s]=:: iCustom (symbols[s],:: Period (),path,:: ChartID (), 0 ,CHARTEVENT_TICK); //--- Если не удалось получить хэндл индикатора if (spy_indicator_handles[s]== INVALID_HANDLE ) :: Print ( "Failed to install agent on " +symbols[s]+ "" ); } } //+------------------------------------------------------------------+
결과.
1자:
2018.01 . 28 11 : 10 : 29.325 Core 1 EURUSD,M5 (MetaQuotes-Demo): every tick generating 2018.01 . 28 11 : 10 : 29.325 Core 1 EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs: 2018.01 . 28 11 : 10 : 29.325 Core 1 AmountSymbols= 1 2018.01 . 28 11 : 10 : 49.279 Core 1 final balance 10000.00 USD 2018.01 . 28 11 : 10 : 49.279 Core 1 2017.12 . 29 23 : 59 : 59 64793248.54125572 2018.01 . 28 11 : 10 : 49.279 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.032 . Test passed in 0 : 00 : 26.015 . 2018.01 . 28 11 : 10 : 49.279 Core 1 EURUSD,M5: total time from login to stop testing 0 : 00 : 26.047 (including 0 : 00 : 00.032 for history data synchronization) 2018.01 . 28 11 : 10 : 49.279 Core 1 778 Mb memory used including 8 Mb of history data, 512 Mb of tick data
2자:
2018.01 . 28 11 : 11 : 49.343 Core 1 EURUSD,M5 (MetaQuotes-Demo): every tick generating 2018.01 . 28 11 : 11 : 49.343 Core 1 EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs: 2018.01 . 28 11 : 11 : 49.343 Core 1 AmountSymbols= 2 2018.01 . 28 11 : 13 : 18.421 Core 1 final balance 10000.00 USD 2018.01 . 28 11 : 13 : 18.421 Core 1 2017.12 . 29 23 : 59 : 59 411044644.6801022 2018.01 . 28 11 : 13 : 18.421 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.032 . Test passed in 0 : 01 : 35.203 (including ticks preprocessing 0 : 00 : 01.360 ). 2018.01 . 28 11 : 13 : 18.421 Core 1 EURUSD,M5: total time from login to stop testing 0 : 01 : 35.235 (including 0 : 00 : 00.047 for history data synchronization) 2018.01 . 28 11 : 13 : 18.421 Core 1 53911219 total ticks for all symbols 2018.01 . 28 11 : 13 : 18.421 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 28 11 : 13 : 18.421 Core 1 GBPUSD: generate 27742039 ticks in 0 : 00 : 01.360 , passed to tester 27742039 ticks 2018.01 . 28 11 : 13 : 18.421 Core 1 1330 Mb memory used including 17 Mb of history data, 1024 Mb of tick data
3자:
2018.01 . 28 11 : 14 : 27.847 Core 1 EURUSD,M5 (MetaQuotes-Demo): every tick generating 2018.01 . 28 11 : 14 : 27.847 Core 1 EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs: 2018.01 . 28 11 : 14 : 27.847 Core 1 AmountSymbols= 3 2018.01 . 28 11 : 17 : 43.325 Core 1 final balance 10000.00 USD 2018.01 . 28 11 : 17 : 43.325 Core 1 2017.12 . 29 23 : 59 : 59 1009249102.577681 2018.01 . 28 11 : 17 : 43.325 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 03 : 21.750 (including ticks preprocessing 0 : 00 : 01.047 ). 2018.01 . 28 11 : 17 : 43.325 Core 1 EURUSD,M5: total time from login to stop testing 0 : 03 : 21.797 (including 0 : 00 : 00.156 for history data synchronization) 2018.01 . 28 11 : 17 : 43.325 Core 1 74628939 total ticks for all symbols 2018.01 . 28 11 : 17 : 43.325 Core 1 AUDUSD: generate 20717720 ticks in 0 : 00 : 01.047 , passed to tester 20717720 ticks 2018.01 . 28 11 : 17 : 43.325 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 28 11 : 17 : 43.325 Core 1 GBPUSD: passed to tester 27742039 ticks 2018.01 . 28 11 : 17 : 43.325 Core 1 1750 Mb memory used including 26 Mb of history data, 1408 Mb of tick data
4자:
2018.01 . 28 11 : 19 : 02.758 Core 1 EURUSD,M5 (MetaQuotes-Demo): every tick generating 2018.01 . 28 11 : 19 : 02.758 Core 1 EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs: 2018.01 . 28 11 : 19 : 02.758 Core 1 AmountSymbols= 4 2018.01 . 28 11 : 25 : 57.059 Core 1 final balance 10000.00 USD 2018.01 . 28 11 : 25 : 57.059 Core 1 2017.12 . 29 23 : 59 : 59 63985236406.09325 2018.01 . 28 11 : 25 : 57.059 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.078 . Test passed in 0 : 07 : 00.531 (including ticks preprocessing 0 : 00 : 06.719 ). 2018.01 . 28 11 : 25 : 57.059 Core 1 EURUSD,M5: total time from login to stop testing 0 : 07 : 00.609 (including 0 : 00 : 00.078 for history data synchronization) 2018.01 . 28 11 : 25 : 57.059 Core 1 107227636 total ticks for all symbols 2018.01 . 28 11 : 25 : 57.059 Core 1 AUDUSD: passed to tester 20717720 ticks 2018.01 . 28 11 : 25 : 57.059 Core 1 EURUSD: passed to tester 26169180 ticks 2018.01 . 28 11 : 25 : 57.059 Core 1 GBPUSD: passed to tester 27742039 ticks 2018.01 . 28 11 : 25 : 57.059 Core 1 USDJPY: generate 32598697 ticks in 0 : 00 : 06.719 , passed to tester 32598697 ticks 2018.01 . 28 11 : 25 : 57.059 Core 1 1985 Mb memory used including 35 Mb of history data, 1600 Mb of cached tick data (total memory for tick data 2047 Mb)
5자:
2018.01 . 28 11 : 27 : 00.683 Core 1 EURUSD,M5 (MetaQuotes-Demo): every tick generating 2018.01 . 28 11 : 27 : 00.683 Core 1 EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs: 2018.01 . 28 11 : 27 : 00.683 Core 1 AmountSymbols= 5 2018.01 . 28 11 : 38 : 47.355 Core 1 final balance 10000.00 USD 2018.01 . 28 11 : 38 : 47.355 Core 1 2017.12 . 29 23 : 59 : 59 94559190795.58774 2018.01 . 28 11 : 38 : 47.355 Core 1 EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.266 . Test passed in 0 : 11 : 54.015 (including ticks preprocessing 0 : 00 : 08.734 ). 2018.01 . 28 11 : 38 : 47.355 Core 1 EURUSD,M5: total time from login to stop testing 0 : 11 : 54.281 (including 0 : 00 : 00.500 for history data synchronization) 2018.01 . 28 11 : 38 : 47.355 Core 1 130637614 total ticks for all symbols 2018.01 . 28 11 : 38 : 47.355 Core 1 AUDUSD: generate 20717720 ticks in 0 : 00 : 01.078 , passed to tester 20717720 ticks 2018.01 . 28 11 : 38 : 47.355 Core 1 EURUSD: generate 26169180 ticks in 0 : 00 : 01.281 , passed to tester 26169180 ticks 2018.01 . 28 11 : 38 : 47.355 Core 1 GBPUSD: generate 27742039 ticks in 0 : 00 : 01.406 , passed to tester 27742039 ticks 2018.01 . 28 11 : 38 : 47.355 Core 1 USDCAD: generate 23409978 ticks in 0 : 00 : 01.188 , passed to tester 23409978 ticks 2018.01 . 28 11 : 38 : 47.355 Core 1 USDJPY: generate 32598697 ticks in 0 : 00 : 03.781 , passed to tester 32598697 ticks 2018.01 . 28 11 : 38 : 47.355 Core 1 2735 Mb memory used including 44 Mb of history data, 2304 Mb of cached tick data (total memory for tick data 2495 Mb)
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
MetaTrader 5 전략 테스터의 테스트 결과 분석 및 최적화
아나톨리 카자르스키 , 2018.01.28 09:09
테스트 전문가:
void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { //--- Если было событие "тик" if (lparam==CHARTEVENT_TICK + CHARTEVENT_CUSTOM ) { Strategy(); return ; } }
아직 런칭은 하지 않았지만, 전용기가 부족한 것 같습니다.
긴 매개변수(lparam)가 확인됩니다. 틱 이벤트 ID가 포함되어 있습니다.
사용자 이벤트 ID(int id)는 0입니다.
더 명확하게 하기 위해 다음과 같이 할 수 있습니다.
//+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { //--- Если было пользовательское событие if (id>= CHARTEVENT_CUSTOM ) { //--- Если было событие "тик" if (lparam==CHARTEVENT_TICK) { Strategy(); return ; } return ; } }
하나 및 여러 문자에 대한 테스트 결과를 고려하십시오. 모든 틱 모드에서 테스트를 수행합니다. 다중 기호 Expert Advisor 구성표를 사용하여 문제를 재현하고 결과를 공유할 수 있습니다.
문제를 정의합시다. 예를 들어, 하나의 문자를 테스트할 때 테스트 시간은 1분입니다. 다른 캐릭터를 추가할 때 테스트 시간은 예상대로 이미 2분이 아닌 4분입니다. 하나의 기호(총 3개)를 더 추가하면 하나의 기호에 대한 테스트 시간이 이미 8배 증가하는 식입니다.
테스트에 소요된 시간이 예상 시간과 일치하지 않는 이유를 알아보겠습니다. 이유 중 하나는 계정 기록에 대한 잘못된 작업일 수 있습니다. 전체 기록을 요청하면 기록이 커지면 테스트 시간이 크게 느려질 수 있습니다. 이 경우 테스트 시작 시 소요된 시간은 테스트 종료 시 소요된 시간과 크게 다릅니다. 이것은 하나의 테스트에서 많은 트랜잭션(수만)이 있을 때 매우 두드러집니다.
위에서 설명한 경우에 대해 모든 것이 올바르게 수행되면 결과는 아래 표와 같습니다. 테스트 시작 시간은 고정되어 있습니다( 2017.01.01 ). 그런 다음 각 테스트에 대해 기간을 한 달씩 늘립니다. 현재 결과와 이전 결과(열 차이 ) 간의 차이는 거의 동일합니다. 계정 내역 의 거래 수에 의존하지 않습니다.
테스트는 지표가 작동하는 Expert Advisor를 사용하여 조건을 확인하기 위해 막대 및 지표 데이터를 요청하고 거래 작업을 수행합니다.
이 경우 총 테스트 시간은 37초입니다. 두 글자 사용 시 예상 테스트 시간 37초. x 2 = 1분 14초 그리고 3인 37초. x 3 = 1분 51초
두 문자에 대한 테스트 결과입니다. 총 테스트 시간 2분 16초
세 문자에 대한 테스트 결과입니다. 총 테스트 시간 5분 22초