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

 
traveller00 :
예, FROM 매개변수를 복사하여 붙여넣고 그가 볼 것으로 기대하는 형태를 보았습니다. 그러나 사람이 그러한 가치를 다루는 것은 그리 편리하지 않습니다 . 따라서 소스 코드에서와 같이 날짜 형식에 대한 지원을 도입할 수 있는지 물었습니다.

사람이 설정 파일을 편집합니까?


날짜/시간 입력이 숫자가 아닌 문자열로 표시되면(설정 파일, CTRL+C 테스터, tpl-파일 및 아마도 다른 것) 이 데이터를 구문 분석하는 모든 편의가 무너집니다.

이제 입력 데이터에는 double, long 및 string의 세 가지 유형만 있습니다. 처음 두 개는 항상 숫자입니다. 여기에는 날짜 시간뿐만 아니라 색상, 열거형 및 일반적으로 문자열을 제외한 모든 항목이 포함됩니다. 매우 편리합니다!


엔티티를 하나 더 생성하여 많은 코드를 작동하지 않게 만드는 것은 모호한 편법입니다. 댓글이 있습니다. 다음은 자동 장치에 의해 생성된 집합의 예입니다.

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

라이브러리: 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
; 479 , 10 , Max, 47.92 , - 253.60
;
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
;
; Pass = 1838
; 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
; 
; version = 515
; copyright = Copyright 2000 - 2019 , MetaQuotes Software Corp.
; name = TesterOptCache
; header_size = 2526
; record_size = 328
; expert_name = MACD Sample LImitTP
; expert_path = Experts\Examples\MACD\MACD Sample LImitTP.ex5
; server = MetaQuotes-Beta
; symbol = EURUSD
; ( ENUM_TIMEFRAMES )period = PERIOD_M1
; date_from = 2019.09 . 01 00 : 00 : 00
; date_to = 2019.11 . 13 00 : 00 : 00
; date_forward = 1970.01 . 01 00 : 00 : 00
; opt_mode = 1
; ticks_mode = 4
; last_criterion = 0
; msc_min = 501
; msc_max = 2342
; msc_avg = 801
; group = demo (netting)
; trade_currency = USD
; trade_deposit = 10000
; trade_condition = 0
; trade_leverage = 100
; trade_hedging = 1
; trade_currency_digits = 2
; trade_pips = 0
; parameters_size = 28
; parameters_total = 6
; opt_params_size = 40
; opt_params_total = 5
; dwords_cnt = 0
; snapshot_size = 0
; passes_total = 0
; passes_passed = 2510

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


이것으로 충분하지 않습니까?


ZY 날짜 시간도 최적화되어 있음을 기억해야 합니다. 시작, 단계, 중지를 설정할 수 있습니다. 물론 GUI에서도 단계는 초 단위로 설정됩니다.

 
숫자를 그대로 두려면 CTRL + C를 사용하여 클립보드에 복사하는 것을 의미했습니다. 그러나 CTRL + V에 의한 삽입은 이전 형식(기본적으로 ulong)과 새 문자열 형식을 모두 이해하도록 확장됩니다. 이것은 아무 것도 중단해서는 안되지만 숫자가 아닌 문자열을 지정하려는 사람들을 위해 확장됩니다.
 
traveller00 :
숫자를 그대로 두려면 CTRL + C로 클립보드에 복사하는 것을 의미했습니다. 그러나 CTRL + V에 의한 삽입은 이전 형식(기본적으로 ulong)과 새 문자열 형식을 모두 이해하도록 확장됩니다. 이것은 아무 것도 중단해서는 안되지만 숫자가 아닌 문자열을 지정하려는 사람들을 위해 확장됩니다.

좋은 설명. 정말 아무것도 깨지지 않을 것입니다. 사실, 나는 CTRL + V를 통해 날짜 설정을 사용하는 사람들을 모릅니다.

 
fxsaber :

사실, 나는 CTRL + V를 통해 날짜 설정을 사용하는 사람들을 모릅니다.

날짜를 설정하는 것이 아니라 날짜가 있는 위치를 포함하여 일반적인 매개변수를 설정하는 문제입니다. 첫째, 균일하게 만들기 위해 mql 자체가 날짜 형식을 유지하고 둘째, 시각적이고 주석을 생성하지 않기 때문입니다. 내 테스트를 위해 눈으로 평가한 다음 넣어야 하는 입력 매개변수를 생성합니다.

슬라바 :
아마도. 해보자

그런 다음 어드바이저에 대한 입력 매개변수(CTRL + V를 통해) 삽입을 동시에 지원하는 것이 가능합니까? 매개변수에서 테스트하기 위해 완벽하게 삽입됩니다. 하지만 테스트를 하지 않고 Expert Advisor를 차트에 추가하면 입력 매개변수 탭이 삽입을 지원하지 않는 것 같고 동일한 매개변수를 손으로 채워야 합니다. 고맙습니다.

 
traveller00 :

그런 다음 어드바이저에 대한 입력 매개변수(CTRL + V를 통해) 삽입을 동시에 지원하는 것이 가능합니까? 매개변수에서 테스트하기 위해 완벽하게 삽입됩니다. 하지만 테스트를 하지 않고 Expert Advisor를 차트에 추가하면 입력 매개변수 탭이 삽입을 지원하지 않는 것 같고 동일한 매개변수를 손으로 채워야 합니다. 고맙습니다.

그리고 CTRL+C.

 

개발자 여러분, 안녕하세요!

어떤 이유로 OnTimer에서 이러한 검사는 전략 테스터 에서 Expert Advisor가 실행되는 동안 항상 발생하지는 않습니다(무엇과 연결되어 있는지 명확하지 않음).

     if ( MQLInfoInteger ( MQL_PROFILER ) == 0 && MQLInfoInteger ( MQL_TESTER ) == 0 ) {
         Print ("You can't use this version of EA in trade mode!");
         return ;
    }

OnInit에서는 항상 정상적으로 작동하는 것 같습니다.

추신. 동시에 거래가 항상 수행되는 것은 아닙니다. 테스트 모드에 대한 로그를 추가합니다. 거래가 금지된 이유입니다. 일부 부동 결함.
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

시각화 모드에서 MT5 테스터의 그래픽 개체가 예상대로 그려지지 않는다는 사실에 직면했습니다. 테스트 EA를 극도로 단순화하여 50번째 막대와 45번째 막대를 기준으로 취한 좌표에 따라 직사각형을 만들어야 합니다. 코드는 첨부 파일에 있지만 모든 논리는 한 줄에 있습니다.

if (!IsNewBar()) return;
RectangleCreate(0, "5BarZone", 0, iTime(NULL,0,50), iHigh(NULL,0,50), iTime(NULL,0,0), iLow(NULL,0,45), clrGreen, STYLE_SOLID, 1, true, true);
ChartRedraw(0);

EA는 현재 TF의 각 새 막대에 이러한 채널을 다시 그려야 합니다. 그림은 다음과 같아야 합니다.


실제로 직사각형은 길이와 너비가 무작위로 늘어나고 그림은 다음과 같습니다.


작동하는 EA 코드에는 더 많은 개체가 포함되어 있으며 각 개체는 훨씬 더 왜곡되어 엉망이 됩니다.

또한 테스트 EA의 시각적 테스트를 저속으로 실행하면 렌더링이 거의 항상 정확합니다. 최대 속도로 또는 그에 가까운 테스트 를 실행하거나 최소 속도에서도 많은 개체가 있는 실제 Expert Advisor를 실행하면 위에서 설명한 왜곡이 발생합니다.

무엇이 문제이고 해결할 수 있는지 알려주십시오. 답을 찾으려고 했지만 실패했습니다.

도움을 주셔서 감사합니다.

파일:
 
Andrey Pogoreltsev :

개발자 여러분, 안녕하세요!

어떤 이유로 OnTimer에서 이러한 검사는 전략 테스터 에서 Expert Advisor가 실행되는 동안 항상 발생하지는 않습니다(무엇과 연결되어 있는지 명확하지 않음).

OnInit에서는 항상 정상적으로 작동하는 것 같습니다.

추신. 그러나 거래가 항상 수행되는 것은 아닙니다. 테스트 모드에 대한 로그를 추가합니다. 거래가 금지된 이유입니다. 일부 부동 결함.
&&를 ||로 바꿉니다.
 
Grigori.SB :

시각화 모드에서 MT5 테스터의 그래픽 개체가 예상대로 그려지지 않는다는 사실에 직면했습니다. 테스트 EA를 극도로 단순화하여 50번째 막대와 45번째 막대를 기준으로 취한 좌표에 따라 직사각형을 만들어야 합니다. 코드는 첨부 파일에 있지만 모든 논리는 한 줄에 있습니다.

EA는 현재 TF의 각 새 막대에 이러한 채널을 다시 그려야 합니다. 그림은 다음과 같아야 합니다.


실제로 직사각형은 길이와 너비가 무작위로 늘어나고 그림은 다음과 같습니다.


작동하는 EA 코드에는 더 많은 개체가 포함되어 있으며 각 개체는 훨씬 더 왜곡되어 엉망이 됩니다.

또한 테스트 EA의 시각적 테스트를 저속으로 실행하면 렌더링이 거의 항상 정확합니다. 최대 속도로 또는 그에 가까운 테스트 를 실행하거나 최소 속도에서도 많은 개체가 있는 실제 Expert Advisor를 실행하면 위에서 설명한 왜곡이 발생합니다.

무엇이 문제이고 해결할 수 있는지 알려주십시오. 답을 찾으려고 했지만 실패했습니다.

도움을 주셔서 감사합니다.

일단 생성된 객체 의 좌표를 간단히 변경해 보십시오.
 
Grigori.SB :

시각화 모드에서 MT5 테스터의 그래픽 개체가 예상대로 그려지지 않는다는 사실에 직면했습니다. 테스트 EA를 극도로 단순화하여 50번째 막대와 45번째 막대를 기준으로 취한 좌표에 따라 직사각형을 만들어야 합니다. 코드는 첨부 파일에 있지만 모든 논리는 한 줄에 있습니다.

EA는 현재 TF의 각 새 막대에 이러한 채널을 다시 그려야 합니다. 그림은 다음과 같아야 합니다.


실제로 직사각형은 길이와 너비가 무작위로 늘어나고 그림은 다음과 같습니다.


작동하는 EA 코드에는 더 많은 개체가 포함되어 있으며 각 개체는 훨씬 더 왜곡되어 엉망이 됩니다.

또한 테스트 EA의 시각적 테스트를 저속으로 실행하면 렌더링이 거의 항상 정확합니다. 최대 속도로 또는 그에 가까운 테스트 를 실행하거나 최소 속도에서도 많은 개체가 있는 실제 Expert Advisor를 실행하면 위에서 설명한 왜곡이 발생합니다.

무엇이 문제이고 해결할 수 있는지 알려주십시오. 답을 찾으려고 했지만 실패했습니다.

도움을 주셔서 감사합니다.

코드에 오류가 있는지 확인하세요 . ERR_OBJECT_ALREADY_EXISTS일 가능성이 높습니다.

다시 만들기 전에 개체를 삭제하거나

슬라바 :
일단 생성된 객체 의 좌표를 간단히 변경해 보십시오.