백테스팅/최적화 - 페이지 82

 

백테스팅, 입찰/매도 가격에 대한 좋은 게시물:

https://www.mql5.com/en/forum/181204

 

전략 테스터: LotSize Limit MT4

안녕,

MT$ 전략 테스터 에서 최대 로트 크기 설정을 변경하려면 어떻게 해야 합니까? Atm 전략 테스터는 포션 >50 랏을 열지 않습니다.

전략 테스터에 잔액 제한이 있습니까?

도움을 주시면 감사하겠습니다. 감사해요!!

 
lsteixeira:
내가 사용한 일부 괜찮은 데이터는 여기에서 가져왔습니다.

http://www.histdata.com

건배!!

조언 감사합니다...저는 99% 모델링 품질 atm으로 Ducas의 tickdata를 사용하고 있습니다. 이것이 얼마나 현실에 가깝다고 말할 수는 없지만 충분히 가깝기를 바랍니다^^

 

[langtitle=fr]백테스트 문제[/langtitle]

[lang=fr]Bonjour tot le monde,

Je me tourne vers vous car j'ai un probleme lors du backtest de mon EA.

Comme vous pourrez voir sur le graphique, il ya une chute 잔인한 et je ne sais pas d ou cavient j ai un stop loss regler sur 10 pips

파일:
graphique.jpg  117 kb
rapport.jpg  97 kb
 

테스터의 정상 종료 중지

targetik:
[lang=fr]Bonjour tot le monde,

Je me tourne vers vous car j'ai un probleme lors du backtest de mon EA.

Comme vous pourrez voir sur le graphique, il ya une chute 잔인한 et je ne sais pas d ou cavient j ai un stop loss regler sur 10 pips

안녕하세요 Targetik입니다.

그것은 정상적인 " 전략 테스터 의 끝"스톱 아웃입니다 ...

테스터는 테스터가 종료되면 모든 미결 거래를 마감하고... 모든 활성 미결제 거래는 일반적으로 손실로 마감됩니다.

방금 마지막 거래를 무시합니다...또는 해당 거래를 통과할 날짜를 재설정하여 제대로 마감될 수 있습니다...또는 마지막으로 마감된 거래의 날짜를 설정하여 해당 거래에서 열린 거래가 없습니다. 테스트 끝.

도움이 되었기를 바랍니다,

로버트

 

[lang=fr]메르시 보쿠데 [/언어]

 

좋은 스레드!

--

 

최적화에서 가장 높은 자산을 검색하시겠습니까?

MT4에서 주어진 최적화 결과 세트의 각 실행에서 도달한 가장 높은 에퀴티에 대한 정보를 검색할 수 있습니까?

내가 말할 수 있는 한, MT4는 최적화 결과 또는 단일 수동 실행 보고서에서 백 테스트 동안 전략이 도달한 가장 높은 에퀴티에 대한 정보를 결과 창에 제공하지 않습니다. (가장 가까운 것은 $드로다운으로, 이전 고점이 무엇인지 결정하기 위해 관련 저점의 값을 알아야 한다고 생각합니다. 그리고 최종 균형에서만 추측할 수 있습니다.) 아마도 전략 테스터 는 계산 중 어느 시점에서 가장 높은 자기자본 수치를 알고 있었을 것입니다. 최적화 결과를 위해 해당 데이터를 검색할 수 있는 방법이 있습니까?

부분적인 해결 방법을 생각할 수 있습니다. 단일 수동 백 테스트 동안 도달한 가장 높은 자산은 자산 측면에서 도달한 "최고 워터 마크"의 기록 역할을 하는 변수를 EA에 추가한 다음 이를 마지막에 저널에 인쇄하여 볼 수 있습니다. (또는 때마다) 실행합니다. 문제는 동일한 전략이 최적화의 일부로 실행될 때 저널 정보를 사용할 수 없는 것 같습니다... 이것은 적은 수의 수동 실행에는 적합하지만 많은 수의 최적화에는 적합하지 않습니다.

내가 생각할 수 있는 유일한 해결 방법은 EA 역할을 하는 표시기를 사용하여 일반 터미널 차트에 로드하는 것입니다. "시작 시간"을 외부 변수로 입력하면 손익 집계를 유지할 수 있습니다(포지션이 촛대 내부에서 열리지 않는 한). 그러나 문제는 동일합니다. 최적화 가능성을 실행할 때마다 다른 외부 변수를 수동으로 입력해야 합니다. 여러 가지가 있을 수 있습니다!

또는 EA의 자산에 인위적인 상한선을 설정한 다음 모든 포지션을 닫고 미리 결정된 자산에 도달하면 EA의 거래를 종료할 수 있습니다. 그런 다음 최적화 결과에서 해당 값에서 종료된 실행 횟수 목록을 볼 수 있습니다. 그러나 다른 에퀴티 캡으로 많은 수의 런 스루를 실행하지 않는 한 주어진 런 스루가 더 높은 에퀴티에 도달했는지 여부를 알 수 없습니다. 이것은 매우 서투르고 비효율적인 작업처럼 보입니다.

(잔고 대 거래 수에 대한 간단한 차트를 볼 수 있는 것만으로도 시작이 될 것입니다. 그러나 최적화에서도 사용할 수 없는 것 같습니다).

최적화를 위해 더 효율적으로 작동하는 더 나은 방법을 아는 사람이 있습니까?

 

나는 내 자신의 질문에 대한 답을 방금 찾은 것 같아서 여전히 답을 알고 싶어하는 사람이 있을 경우를 대비하여 여기에 게시합니다.

한 가지 솔루션은 전역 변수( 전역 변수 - MQL4 설명서 )를 사용하는 것입니다. 결과적으로 전역 변수는 최적화를 실행할 때마다 설정되거나 업데이트됩니다. 여기서는 EA 내의 "전역 변수"뿐만 아니라 클라이언트 터미널 전체 전역 변수를 언급하고 있습니다. 변수는 전역 변수이므로 전략 테스터 외부의 항목을 사용하여 쿼리할 수 있습니다. 매 틱마다 가장 높은 에퀴티로 업데이트되는 일반(이중) 변수를 EA 내부에 추가한 다음, 동일한 EA의 deinit() 섹션에서 전역 변수를 해당 값으로 설정할 수 있습니다. 이 전역 변수는 최적화의 각 단계가 완료되면 터미널의 일반 차트 창에 있는 스크립트에서 GlobalVariableGet()을 사용하여 쿼리할 수 있으며 결과 값은 주석으로 표시되거나 인쇄를 사용하여 터미널 저널에 기록될 수 있습니다.

이 접근 방식의 유일한 문제는 최적화의 각 단계를 실행할 때마다 스크립트를 수동으로 실행해야 한다는 것입니다(다음 실행이 완료되기 전에). 따라서 여전히 앉아서 최적화를 지켜봐야 합니다. EA는 최적화의 여러 실행을 캡처하기 위해 여러 번 실행해야 하기 때문에 전역 변수를 쿼리하는 데 사용할 수 있다고 생각하지 않습니다. 스프레드 설정을 유지하기 위해 라이브 데이터와의 연결이 끊어지기 때문에 최적화 중에 틱을 수신하지 않을 가능성이 가장 높습니다. EA에 "가짜 틱"을 보내는 다양한 방법이 최적화 실행에서 일반 터미널 차트까지 작동하지 않을 것이라고 추측하고 있습니다...

안정적인 스프레드 크기를 가진 계정을 사용하는 경우 문제가 되지 않습니다. 이 경우 스프레드 데이터를 변경할 위험 없이 들어오는 라이브 데이터에 연결된 상태에서 최적화를 실행할 수 있습니다. 그래도 주말에 최적화하려는 경우 여전히 문제가 될 것입니다. 또한 새 틱이 수신되기 전에 다음 최적화 단계가 완료되면 마지막 단계의 데이터가 기록되지 않습니다.

각 최적화 단계에서 SEPARATE 전역 변수를 설정하여 이 문제를 해결할 수 있습니다. 그런 다음 F3 키를 눌러 마지막에 모두 읽을 수 있습니다. 이는 deinit()에서 순환 연산을 사용하여 현재 전역 변수 수("n")를 검색한 다음 현재 전역 변수의 이름을 "n+1"로 지정하고 관련 자산 값으로 설정할 수 있습니다. 그런 식으로 F3 키를 눌러 마지막에 모두 볼 수 있으며 변수 이름은 실행의 통과 횟수와 동일합니다(시작할 때 전역 변수가 존재하지 않는 한 최적화 - 각 최적화 전에 GlobalVariablesDeleteAll() 스크립트를 실행하여 쉽게 달성할 수 있습니다. 전역 변수의 최대 개수가 얼마인지는 확실하지 않지만 적절한 수의 최적화가 있는 한 괜찮을 것 같습니다. 불행히도 F3 키를 눌러 데이터를 내보낼 수 있다고 생각하지 않으므로 스크린 캡이나 오래된 펜과 종이를 사용하여 복사해야 합니다(또는 엄청난 수를 사용하는 경우 각 최적화에 대해 별도의 MT4 설치가 있어야 합니다. 패스). 대안으로 스크립트를 작성하여 최적화가 완료된 후 전역 변수의 모든 이름과 값을 터미널 저널에 인쇄한 다음 해당 저널을 내보낼 수 있다고 가정합니다.

물론 이 방법은 Strategy Tester 최적화 결과 창의 제한된 정보에 의존하는 대신 최적화에서 거의 모든 데이터를 검색하는 데 사용할 수 있습니다! 그것이 누군가를 돕기를 바랍니다 :-)

 

ps - Print와 Alert 모두 64자만 허용한다는 것을 방금 깨달았습니다. 따라서 몇 가지 이상의 최적화를 사용하고 있다면 전역 변수를 인쇄하는 스크립트를 작성할 수 없습니다. (터미널 저널의 별도 줄에 각 전역 변수를 인쇄한 다음 클릭하여 하나씩 엑셀이나 이와 유사한 것으로 복사하지 않는 한. 언제든지 저널).

이 문제를 해결하려면 대신 순환 연산을 사용하여 전역 변수 각각의 값을 대규모 문자열에 순서대로 쓰고(\n을 사용하여 각 전역 변수 값 을 새 줄에 배치) 다음을 이메일로 보낼 수 있습니다. SendMail()을 사용하여 자신에게 문자열을 보냅니다. 메일 보내기의 글자수 제한은 없는 것 같습니다. 이 이메일 데이터를 컴퓨터의 텍스트 문서에 쉽게 복사하고 Excel의 데이터\외부 데이터 가져오기\데이터 가져오기 버튼을 사용하여 원하는 형식으로 해당 데이터를 가져올 수 있습니다. 또한 최적화 결과를 텍스트 문서에 복사한 다음 동일한 방법을 사용하여 Excel로 가져오는 경우(첫 번째 화면에서 "구분됨"을 선택한 다음 "기타" 확인란을 선택하고 해당 입력 상자에 "="를 입력합니다. 숫자에서 텍스트를 분리하기 위해), 그런 다음 최적화에서 직접 내보낸 데이터까지 이메일의 데이터를 간단히 정렬할 수 있습니다. 그렇게 하면 주어진 패스에 대해 최적화에서 내보낸 관련 데이터와 동일한 행의 전역 변수를 사용하여 최적화에서 추출한 모든 정보를 갖게 됩니다. 단순.

사유: