그래, 무슨 일이야??? - 페이지 4

 
SeriousRacoon :
그리고 현재 로직을 비활성화하고 일반 마우스로 교체해 보십시오. 고양이가 논리 또는 실행에서 어디를 뒤졌는지 즉시 분명해질 것입니다.

좋은 조언... 최적화가 단일 실행의 개별 인스턴스에 불과하다는 사실에 대해 생각할 때까지는 최소한 사용자가 원하는 방식이고 개발자가 의도한 방식입니다.

Expert Advisor의 알고리즘이 아무리 복잡하더라도 단일 실행의 결과는 최적화 동안 실행 그룹의 일부로 얻은 결과와 동일해야 합니다.

TS 실험은 위의 주장을 반박합니다. 나는 (생성된 파일 힙 사이의 검색을 단순화하기 위해) 매개변수로 구성된 이름을 가진 파일로 트랜잭션 기록을 최적화할 때 각 실행이 끝날 때마다 (Renat이 조언한 대로) 인쇄하고 단일 실행으로 동일한 작업을 수행합니다. 이렇게 하면 최적화 후 결과와 단일 실행 사이에 불일치가 있는 부분을 식별할 수 있습니다. 이것이 진실의 바닥에 도달하는 유일한 방법인 것 같습니다.

그러나 논리에 따르면 단일 실행이 배치 최적화 실행과 동일하다면 원칙적으로 불가능하다고 제안하기 때문에 최적화 및 단일 패스 동안 정확히 어떤 뉘앙스가 다른 결과를 생성할 수 있는지는 여전히 매우 궁금합니다.

 
Алексей Тарабанов :

"거의 모든 데이터가 루프에서 초기화됩니다."

여러분, 루프에서 초기화할 수 없습니다. 루프에서 계산해야 합니다.

어떤 경우에 그것이 가능할 뿐만 아니라 필요하며 다른 방법은 없음을 보여주었습니다.

 

@Andrey Dik , 출력물을 파일에 첨부하는 방법에 대해 생각하고 있습니다. 파일을 작성하는 대로 작성해야 할 것 같습니다. 그리고 거기에 정확히 무엇을 써야합니까? 가격은 정보가 아닙니다. 불일치의 원인을 이해하는 데 도움이 되는 몇 가지 정보를 작성해야 합니다. 이 정보는 무엇입니까? 어디서 얻나요? 아직 아이디어가 없습니다.

 
Сергей Таболин :

@Andrey Dik , 출력물을 파일에 첨부하는 방법에 대해 생각하고 있습니다. 파일을 작성하는 대로 작성해야 할 것 같습니다. 그리고 거기에 정확히 무엇을 써야합니까? 가격은 정보가 아닙니다. 불일치의 원인을 이해하는 데 도움이 되는 몇 가지 정보를 작성해야 합니다. 이 정보는 무엇입니까? 어디서 얻나요? 아직 아이디어가 없습니다.

OnTester() 함수에서 이름이 InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +....인 파일을 만들고 모든 트랜잭션의 기록을 여기에 씁니다. (즉, 포지션이 아닌 거래), 분석에 필요한 모든 정보, 시간, 가격 등은 있을 것입니다. 동일한 파일에 특정 Expert Advisor에 대해 매우 흥미로운 다른 것을 작성할 수 있습니다. 이는 옵티마이저 불일치 및 단일 실행을 찾는 데 유용할 수 있습니다.

MQLInfoInteger(MQL_OPTIMIZATION))를 확인하는 것을 잊지 마십시오. 최적화 후 동일한 파일을 덮어쓰지 않도록 단일 실행 중에 파일 이름에 접미사를 추가합니다.


추신. 내용이 다른 두 개의 해당 파일이 있으면 개발자에게는 충분하지 않지만 더 파고들어야 할 방향만 제공하므로 문제를 재현하는 코드를 제공해야 합니다. 문제가 EA 코드에 있기를 바랍니다.

 
Andrey Dik :

OnTester() 함수에서 이름이 InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +....인 파일을 만들고 모든 트랜잭션의 기록을 여기에 씁니다. (즉, 포지션이 아닌 거래), 분석에 필요한 모든 정보, 시간, 가격 등은 있을 것입니다. 동일한 파일에 특정 Expert Advisor에 대해 매우 흥미로운 다른 것을 작성할 수 있습니다. 이는 옵티마이저 불일치 및 단일 실행을 찾는 데 유용할 수 있습니다.

MQLInfoInteger(MQL_OPTIMIZATION))를 확인하는 것을 잊지 마십시오. 최적화 후 동일한 파일을 덮어쓰지 않도록 단일 실행 중에 파일 이름에 접미사를 추가합니다.


추신. 내용이 다른 두 개의 해당 파일이 있으면 개발자에게는 충분하지 않지만 더 파고들어야 할 방향만 제공하므로 문제를 재현하는 코드를 제공해야 합니다. 문제가 EA 코드에 있기를 바랍니다.

고맙습니다. 내가 할 것이다.

 
Сергей Таболин :

고맙습니다. 내가 할 것이다.


 
Сергей Таболин :

고맙습니다. 내가 할 것이다.

전역적으로 선언 된 변수의 초기화를 확인하십시오 .

초기화가 OnInit()에 있지 않지만 선언될 때와 코드에서 값이 변경된 경우.

 
Andrey F. Zelinsky :

전역적으로 선언 된 변수의 초기화를 확인하십시오 .

초기화가 OnInit()에 있지 않지만 선언될 때와 코드에서 값이 변경된 경우.

변수 초기화 여부, 그러나 결과는 두 테스터 모드(최적화 및 단일 실행)에서 일치해야 합니다.

 
Andrey Dik :

좋은 조언... 최적화가 단일 실행의 개별 인스턴스에 불과하다는 사실에 대해 생각할 때까지는 최소한 사용자가 원하는 방식이고 개발자가 의도한 방식입니다.

Expert Advisor의 알고리즘이 아무리 복잡하더라도 단일 실행의 결과는 최적화 동안 실행 그룹의 일부로 얻은 결과와 동일해야 합니다.

TS 실험은 위의 주장을 반박합니다. 나는 (생성된 파일 힙 사이의 검색을 단순화하기 위해) 매개변수로 구성된 이름을 가진 파일로 트랜잭션 기록을 최적화할 때 각 실행이 끝날 때마다 (Renat이 조언한 대로) 인쇄하고 단일 실행으로 동일한 작업을 수행합니다. 이렇게 하면 최적화 후 결과와 단일 실행 사이에 불일치가 있는 부분을 식별할 수 있습니다. 이것이 진실의 바닥에 도달하는 유일한 방법인 것 같습니다.

그러나 논리에 따르면 단일 실행이 배치 최적화 실행과 동일하다면 원칙적으로 불가능하다고 제안하기 때문에 최적화 및 단일 패스 동안 정확히 어떤 뉘앙스가 다른 결과를 생성할 수 있는지는 여전히 매우 궁금합니다.

일반적으로 동의합니다. 올빼미가 환경에 따라 분기를 만들지 않는 경우(옵티마이저에서 실행 중인지 테스터에서 실행 중인지 여부) 가정할 수 있는 유일한 것은 최적화 모드에서 테스터의 일부 API 호출이 속도에 너무 최적화되어 있다는 것입니다. , 동어반복 죄송합니다. 아마도 사용된 기능의 플래그에 따라 다릅니다. 자세한 거래 로그와 주문 전송 결과가 도움이 될 것입니다.

나는 이것을 개인적으로 만난 적이 없다.

 
Andrey Dik :

변수 초기화 여부, 그러나 결과는 두 테스터 모드(최적화 및 단일 실행)에서 일치해야 합니다.

변수를 전역적으로 선언하고 선언할 때 초기화합니다(예: int kk=0;

그런 다음 OnTick()에서 인쇄를 취소하고 값을 변경합니다(예: Print ("kk=",kk); ++ㅁ;

그런 다음 TF 또는 매개변수를 변경하고 결과를 보십시오.