MetaTrader 5 전략 테스터: 오류, 버그, 개선 제안 - 페이지 27

 
fxsaber :
아마도 놓쳤을 것입니다.

놓치지 않았다.

현재 opt 파일 형식은 허용하지 않습니다. 여기서 생각해야 합니다.

 
Slava :

놓치지 않았다.

현재 opt 파일 형식은 허용하지 않습니다. 여기서 생각해야 합니다.

아무것도 변경할 필요가 없는 것 같습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

슬라바 , 2019.04.19 15:11

 //+------------------------------------------------------------------+
//| входные параметры тестирования                                   |
//+------------------------------------------------------------------+
struct TestCacheInput
  {
   wchar_t           name[ 64 ];
   int                flag;                     // оптимизируемый параметр
   int                type;                     // тип TYPE_XXX
   int                digits;                   // количество знаков после запятой
   int                offset;                   // смещение в буфере параметров
   int                size;                     // размер значения параметра в буфере
   //--- 0-start,1-step,2-stop
   union { INT64 integers[ 3 ]; double numbers[ 3 ]; };
  };
   m_header.header_size= sizeof (TestCacheHeader)+m_inputs.Total()* sizeof (TestCacheInput)+m_header.parameters_size;
//--- кешируемая запись содержит номер прохода (при генетике - номер по порядку), структуру результатов тестирования (если математика, то 1 double), буфер оптимизируемых параметров и генетический проход

각 입력은 필수 필드가 포함된 구조로 지정됩니다.

 

이제 아주 쉽게 알 수 있습니다

  • 모든 테스터 설정 및 Expert Advisor 입력 매개변수.
  • 모든 통계. 각 최적화 패스의 데이터.


그러나 예를 들어 stat를 찾는 것은 불가능합니다. 단일 패스 데이터. tst 형식이 있음이 분명합니다. 그러나 백테스트 탭의 테스터에서 CTRL + C를 사용하여 stat.h가 포함된 세트 파일을 생성하는 것이 편리할 것입니다. 데이터

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

라이브러리: TesterCache

fxsaber , 2019.11.11 04:45

; saved on 2019.11 . 13 19 : 40 : 01
; Experts\Examples\MACD\MACD Sample LImitTP.ex5
; EURUSD
; 2019.09 . 01 - 2019.11 . 13
;
InpLots= 0.1
InpTakeProfit= 200 || 10 || 5 || 500 ||Y
InpTrailingStop= 290 || 30 || 10 || 300 ||Y
InpMACDOpenLevel= 5 || 5 || 5 || 200 ||Y
InpMACDCloseLevel= 180 || 5 || 5 || 200 ||Y
InpMATrendPeriod= 8 || 1 || 1 || 200 ||Y
;
; initial_deposit = 10000.0
; withdrawal = 0.0
; profit = 479.15
; grossprofit = 479.15
; grossloss = 0.0
; maxprofit = 99.8
; minprofit = 0.0
; conprofitmax = 479.15
; maxconprofit = 479.15
; conlossmax = 0.0
; maxconloss = 0.0
; balance_min = 10000.0
; maxdrawdown = 0.0
; drawdownpercent = 0.0
; reldrawdown = 0.0
; reldrawdownpercent = 0.0
; equity_min = 9997.700000000001
; maxdrawdown_e = 253.6000000000004
; drawdownpercent_e = 2.457388152985982
; reldrawdown_e = 253.6000000000004
; reldrawdownpercnt_e = 2.457388152985982
; expected_payoff = 47.91500000000001
; profit_factor = 1.797693134862316 e+ 308
; recovery_factor = 1.889392744479493
; sharpe_ratio = 1.069726339729858
; margin_level = 1.797693134862316 e+ 308
; custom_fitness = 0.0
; deals = 15
; trades = 10
; profittrades = 10
; losstrades = 0
; shorttrades = 6
; longtrades = 4
; winshorttrades = 6
; winlongtrades = 4
; conprofitmax_trades = 10
; maxconprofit_trades = 10
; conlossmax_trades = 0
; maxconloss_trades = 0
; avgconwinners = 10
; avgconloosers = 0

남들은 모르겠는데 셋트파일에 모든 정보가 들어있어서 편해요. 그것이 무엇인지, 어디서, 얼마인지를 매우 빨리 이해하게 됩니다.


이것은 ExpTradeSummary 구조의 필드 출력입니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

슬라바 , 2019.04.19 15:11

 //+------------------------------------------------------------------+
//| Структура для статистики торговли                                |
//+------------------------------------------------------------------+
struct ExpTradeSummary;

#define TOSTRING(A) #A + " = " + ( string )(A) + "\n"

   string ToString( void ) const
  {
     return (
      TOSTRING(initial_deposit) +       // начальный депозит
      TOSTRING(withdrawal) +           // снято средств
      TOSTRING(profit) +               // общая прибыль (+)
      TOSTRING(grossprofit) +           // общий плюс
      TOSTRING(grossloss) +             // общий минус
      TOSTRING(maxprofit) +             // максимально прибыльная сделка
      TOSTRING(minprofit) +             // максимально убыточная сделка
      TOSTRING(conprofitmax) +         // прибыль максимальной последовательности прибыльных сделок
      TOSTRING(maxconprofit) +         // максимальная прибыль среди последовательностей
      TOSTRING(conlossmax) +           // убыток максимальной последовательности убыточных сделок
      TOSTRING(maxconloss) +           // максимальный убыток среди последовательностей
      TOSTRING(balance_min) +           // минимальное значение баланса (для расчёта абсолютной просадки)
      TOSTRING(maxdrawdown) +           // максимальная просадка по балансу
      TOSTRING(drawdownpercent) +       // отношение максимальной просадки по балансу к её пику
      TOSTRING(reldrawdown) +           // максимальная относительная просадка по балансу в деньгах
      TOSTRING(reldrawdownpercent) +   // максимальная относительная просадка по балансу в процентах
      TOSTRING(equity_min) +           // минимальное значение equity (для расчёта абсолютной просадки по equity)
      TOSTRING(maxdrawdown_e) +         // максимальная просадка по equity
      TOSTRING(drawdownpercent_e) +     // отношение максимальной просадки по equity к её пику (+)
      TOSTRING(reldrawdown_e) +         // максимальная относительная просадка по equity в деньгах
      TOSTRING(reldrawdownpercnt_e) +   // максимальная относительная просадка по equity в процентах
      TOSTRING(expected_payoff) +       // матожидание выигрыша (+)
      TOSTRING(profit_factor) +         // показатель прибыльности (+)
      TOSTRING(recovery_factor) +       // фактор восстановления (+)
      TOSTRING(sharpe_ratio) +         // коэффициент Шарпа (+)
      TOSTRING(margin_level) +         // минимальный уровень маржи
      TOSTRING(custom_fitness) +       // пользовательский фитнесс - результат OnTester (+)
      TOSTRING(deals) +                 // общее количество сделок
      TOSTRING(trades) +               // количество сделок out/inout
      TOSTRING(profittrades) +         // количество прибыльных
      TOSTRING(losstrades) +           // количество убыточных
      TOSTRING(shorttrades) +           // количество шортов
      TOSTRING(longtrades) +           // количество лонгов
      TOSTRING(winshorttrades) +       // количество прибыльных шортов
      TOSTRING(winlongtrades) +         // количество прибыльных лонгов
      TOSTRING(conprofitmax_trades) +   // максимальная последовательность прибыльных сделок
      TOSTRING(maxconprofit_trades) +   // последовательность максимальной прибыли
      TOSTRING(conlossmax_trades) +     // максимальная последовательность убыточных сделок
      TOSTRING(maxconloss_trades) +     // последовательность максимального убытка
      TOSTRING(avgconwinners) +         // среднее количество последовательных прибыльных сделок
      TOSTRING(avgconloosers)           // среднее количество последовательных убыточных сделок
    );
 

강력한 캐시가 등장했기 때문에 약간 개선하는 것이 좋습니다.

이제 하나의 사용자 매개변수만 캐시에 저장됩니다 - OnTester.


ExpTradeSummary가 3배에서 5배 더 늘어난다면 매우 편리할 것입니다. 채워질 수 있는

 double OnTester ( double &CustomDoubles[] );


이제 당신은 캐시를 분석하고 있으며 분명히 하나의 사용자 가치가 아니라 여러 가치를 볼 기회가 충분하지 않습니다.

 

이것은 Metaquotes에 대한 요청입니다. 팀에서 최소한 한 명의 개발자가 답변할 수 있기를 바랍니다(이미 요청한 경우 죄송하지만 언어 문제로 인해 러시아어 포럼에서 답변을 찾을 수 없습니다).

데모 계정에서는 발생하지 않고 실제 계정에서만 발생하는 거래 상황을 테스트하는 기능을 추가하기 위해 전략 테스터에 개선을 요청하는 것이 합리적입니까? 완전히 테스트하지 않고 신뢰할 수 있는 코드를 만드는 것은 정말 어렵기 때문입니다.

이는 주로 중앙 집중식 시장(Forex/CFD와 반대)과 협력하기 때문입니다. 예를 들어 주문 을 부분적으로 채우는 것은 데모 계정(내가 아는 한)에서는 발생하지 않지만 선물이나 주식의 실제 계정에서는 일반적인 상황입니다. 그러한 상황을 시뮬레이션할 수 있는 도구가 있으면 매우 유용할 것입니다.

부분 완성은 단지 예일 뿐입니다. Metaquotes가 그러한 기능을 사용하는 것이 좋은 아이디어라고 생각한다면, 저는 아이디어를 중앙 집중화하고 그러한 기능에 대한 자세한 설명을 제공할 의향이 있습니다. (내 자신의 필요에 특정한 것은 없음).

시간을 내서 답변해 주셔서 감사합니다.

 
Alain Verleyen :

완전히 테스트할 가능성 없이 신뢰할 수 있는 코드를 만드는 것은 어렵습니다.

이를 위해 어드바이저의 모든 진지한 개발자는 실제 계정 에서 수년간 거래 라이브러리를 디버그합니다.

이것이 없으면 신뢰할 수 있는 코드를 만드는 것이 불가능합니다.

 
fxsaber :

이를 위해 어드바이저의 모든 진지한 개발자는 실제 계정 에서 수년간 거래 라이브러리를 디버그합니다.

이것이 없으면 신뢰할 수 있는 코드를 만드는 것이 불가능합니다.

이것이 사실이지만 그러한 기능은 실제 계정에서 많은 시간이 소요되는 테스트를 피하는 데 도움이 될 것입니다.

 
Artyom Trishkin :

이것이 사실이지만 그러한 기능은 실제 계정에서 많은 시간이 소요되는 테스트를 피하는 데 도움이 될 것입니다.

두 가지 작업이 있습니다.

  1. 현재 거래 상태, 거래 내역 및 주문을 보내는 방법을 단순히 알고 있는 적절한 거래 라이브러리. 여기서 테스터는 거의 도움이 되지 않습니다. 스트레스 테스트를 한다면 데모가 많은 도움이 될 것입니다. 현실에서 다시 만들지 않는 것은 비용이 많이 듭니다. 따라서 여기에는 수많은 기호/서버에 대한 데모만 있습니다. 한 손에 이러한 라이브러리.
  2. 부분 실행, 거부 등의 거래 논리를 해결합니다. 이 점은 첫 번째 것보다 훨씬 간단합니다. 그리고 여러 번 테스터 없이 동일한 MT4로 결정했습니다. 정말 간단합니다.

테스터는 두 번째 요점인 간단한 요점에서만 도움을 줄 수 있습니다. TS의 "유동성 한도"라고 주장되는 측정을 통해 마지막 볼륨을 통해 부분 실행을 구현하는 것이 가능합니다. 그러나 그것은 매우 대략적인 추정치일 것입니다.


동시에 테스터의 종소리와 휘파람이 추가된다는 것을 이해해야 합니다. 이 종소리와 호루라기를 사용하지 않더라도 브레이크를 밟으십시오.

 
fxsaber :

이를 위해 어드바이저의 모든 진지한 개발자는 실제 계정 에서 수년간 거래 라이브러리를 디버그합니다.

이것이 없으면 신뢰할 수 있는 코드를 만드는 것이 불가능합니다.

쓸데없고 오만한 글들로 저를 한번 잊으라고 조언하고 싶습니다.

불행히도 나는 그것들을 걸러낼 방법이 없습니다.

내 게시물에 답장하지 마십시오. 알림으로 내 시간을 낭비하고 있습니다.

 
Alain Verleyen :

쓸데없고 오만한 글들로 저를 한번 잊으라고 조언하고 싶습니다.

러시아어에서 사용하는 자동 번역기의 적절성을 의심하기 시작하는 것이 좋습니다.


불행히도 나는 그것들을 걸러낼 방법이 없습니다.

내 게시물에 답장하지 마십시오. 알림으로 내 시간을 낭비하고 있습니다.

확인.