MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 134

 

Expert Advisor가 테스터에서 작업할 때 문제가 발생했습니다. 몇 분 안에 테스트 중입니다. 분 데이터를 사용하여 이전 시간대에 대한 확률을 직접 계산합니다.

분의 기록은 2001년부터 업로드되었습니다. <차트> 설정 탭에서는 이력과 표시되는 막대의 최대 개수를 설정합니다.

차트의 전체 기록이 스크롤됩니다.

문제는 디버그 인쇄의 도움으로 밝혀진 것처럼 테스터를 실행한 날짜에 관계없이 최대 막대 수가

테스트의 첫 번째 막대(시작 시)에 있는 Bars 변수에서는 항상 1001 또는 1002입니다. 다음 막대마다 Bars 값이 1씩 증가합니다.

따라서 처음에는 시니어 TF를 계산할 수 없습니다.

한 가지 해결책이 있습니다. Bars가 원하는 값에 도달하기 전에 거래 금지를 추가하십시오.

이 문제를 다른 방법으로 해결할 수 있습니까? 이 Bars의 시작 값이 테스터기에 어떻게 든 증가했습니까?

 
Igor733 :

Expert Advisor가 테스터에서 작업할 때 문제가 발생했습니다. 몇 분 안에 테스트 중입니다. 분 데이터를 사용하여 이전 시간대에 대한 확률을 직접 계산합니다.

분의 기록은 2001년부터 업로드되었습니다. <차트> 설정 탭에서 이력과 표시되는 막대의 최대 개수를 설정합니다.

차트의 전체 기록이 스크롤됩니다.

문제는 디버그 인쇄의 도움으로 밝혀진 것처럼 테스터를 실행한 날짜에 관계없이 최대 막대 수가

테스트의 첫 번째 막대(시작 시)에 있는 Bars 변수에서는 항상 1001 또는 1002입니다. 다음 막대마다 Bars 값이 1씩 증가합니다.

따라서 처음에는 시니어 TF를 계산할 수 없습니다.

한 가지 해결책이 있습니다. Bars가 원하는 값에 도달하기 전에 거래 금지를 추가하십시오.

이 문제를 다른 방법으로 해결할 수 있습니까? 이 Bars의 시작 값이 테스터기에 어떻게 든 증가 했습니까?

아니요, 증가하지 않습니다. 솔루션을 사용하십시오.
 
무엇이 틀릴 수 있습니다. Expert Advisor를 작성할 때 변경 사항을 추적하기 위해 여러 번 테스트해야 합니다. 임의의 수의 테스트 후에 전략 테스터는 코드의 변경 사항을 감지하지 않습니다. 때론 터무니 없는 상황에까지 이르게 된다. 코드 조각을 가져 와서 삭제할 수 있으며 올빼미는 이전에 작성된 알고리즘에 따라 테스터에서 작동합니다. CSV의 구문 분석 계산에서도 동일한 일이 발생합니다. CSV에서 특정 수의 테스트를 수행한 후 일종의 임의의 넌센스가 구문 분석되기 시작합니다.

추신 나는 컴파일 버튼을 눌렀습니다.
 

평활 이동 평균을 계산하는 알고리즘을 이해하는 것은 매우 필요합니다. 여러 가지 이유로 iMA 함수를 호출하는 것은 적절하지 않습니다.

https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/ma#smma 의 정보를 이해했습니다.

첫 번째 요소는 종가 합계를 기간으로 나눈 값입니다.

다음은 SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N 공식을 사용하여 계산됩니다.

2017년 2월 24일 19:00부터 2017년 2월 24일 23:00(GMT+2)까지의 기간 동안 5와 종가 EUR/USD H1인 기간을 가정해 보겠습니다. 마지막 5개의 촛불

종가 - 1.05681; 1.05702; 1.05639; 1.05612; 1.05592.

따라서 1 요소는 1.056452입니다. 두 번째 요소 - 1.056852 세 번째 요소 - 1.05676 네 번째 요소 - 1.056632 다섯 번째 요소 - 1.056489

그리고 SMMA 5 차트에서 종가는 1.05706 과 같습니다. 차이는 이미 세 번째 기호에 있습니다.

나는 무엇을 잘못 생각합니까?

1.05706을 얻기 위해 올바르게 계산하는 방법은 무엇입니까?

 
zsu1970 :

평활 이동 평균을 계산하는 알고리즘을 이해하는 것은 매우 필요합니다. 여러 가지 이유로 iMA 함수를 호출하는 것은 적절하지 않습니다.

https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/ma#smma 의 정보를 이해했습니다.

첫 번째 요소는 종가 합계를 기간으로 나눈 값입니다.

다음은 SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N 공식을 사용하여 계산됩니다.

2017년 2월 24일 19:00부터 2017년 2월 24일 23:00(GMT+2)까지의 기간 동안 5와 종가 EUR/USD H1인 기간을 가정해 보겠습니다. 마지막 5개의 촛불

종가 - 1.05681; 1.05702; 1.05639; 1.05612; 1.05592.

따라서 1 요소는 1.056452입니다. 두 번째 요소 - 1.056852 세 번째 요소 - 1.05676 네 번째 요소 - 1.056632 다섯 번째 요소 - 1.056489

그리고 SMMA 5 차트에서 종가는 1.05706 과 같습니다. 차이는 이미 세 번째 기호에 있습니다.

나는 무엇을 잘못 생각합니까?

1.05706을 얻기 위해 올바르게 계산하는 방법은 무엇입니까?

지표 자체를 보면 더 명확해집니다.
 
Aleksey Maryaskin :
여러분, 발전했습니다! 모두에게 좋은 하루. 전문가 템플릿(스크립트)을 만들 때 만드는 질문에 관심이 있습니다. 이것은 어딘가에서 편집할 수 있으며 어떻게 수행됩니까?
그들은 아마도 여기에 직접 링크를 허용하지 않을 것입니다 ... Google에 "이 스레드에서 MQL4 과정을 게시 할 것입니다"(따옴표 제외) 한 다음 "템플릿"이라는 단어를 검색하십시오 (두 번째 페이지에있는 것 같습니다) ).
 
Vitaly Muzichenko :
지표 자체를 보면 더 명확해집니다.
결과 링크에서 모두 동일하게 보였습니다.

이중 SMMA(int 마침표)
{

// 종가로 배열 채우기
정수 k=마침표;
for(int i=1; i<=마침표; i++)
{
H1_닫기[i]=닫기[k];
// Print("H1_Close[",i,"] ",H1_Close[i]," Close[",k,"] ",Close[k]);
케이--;
}
// 첫 번째 요소를 종가의 평균으로 계산합니다.
이중 합=0;
for (int i=1; i<=period;i++)
합계=합+H1_닫기[i]; //SUM1 = SUM(닫기, N)
이중 TmpSMMA=합계/마침표; //SMMA1 = SUM1/N
// i번째 요소를 SMMA(i) = (SMMA(i - 1) * (N - 1) + CLOSE(i)) / N으로 계산
for(int i=2;i<=period;i++)
TmpSMMA=(TmpSMMA*(마침표-1)+H1_닫기[i])/마침표;
}
그러나 결과는 여전히 터미널의 지표 데이터와 매우 다릅니다. 왜요 ?
 
zsu1970 :

평활 이동 평균을 계산하는 알고리즘을 이해하는 것은 매우 필요합니다. 여러 가지 이유로 iMA 함수를 호출하는 것은 적절하지 않습니다.

https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/ma#smma 의 정보를 이해했습니다.

첫 번째 요소는 종가 합계를 기간으로 나눈 값입니다.

다음은 SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N 공식을 사용하여 계산됩니다.

2017년 2월 24일 19:00부터 2017년 2월 24일 23:00(GMT+2)까지의 기간 동안 5와 종가 EUR/USD H1인 기간을 가정해 보겠습니다. 마지막 5개의 촛불

종가 - 1.05681; 1.05702; 1.05639; 1.05612; 1.05592.

따라서 1 요소는 1.056452입니다. 두 번째 요소 - 1.056852 세 번째 요소 - 1.05676 네 번째 요소 - 1.056632 다섯 번째 요소 - 1.056489

그리고 SMMA 5 차트에서 종가는 1.05706 과 같습니다. 차이는 이미 세 번째 기호에 있습니다.

나는 무엇을 잘못 생각합니까?

1.05706을 얻기 위해 올바르게 계산하는 방법은 무엇입니까?

따라서 klyudnik에는 계산 알고리즘이 있습니다.

 
Alexey Viktorov :
따라서 klyudnik에는 계산 알고리즘이 있습니다.

그래서 나는 계산에서 모든 것을 하고 결과가 작동하지 않습니다. 4일째 앉아 있는데 도저히 알 수가 없다.
Vitaly Muzichenko 의 답변에 내가 받은 기능 코드를 작성했지만 오류가 무엇인지 알 수 없습니다
 
zsu1970 :
그래서 나는 계산에서 모든 것을 하고 결과가 작동하지 않습니다. 4일째 앉아 있는데 도저히 알 수가 없다.
Vitaly Muzichenko 의 답변에 내가 받은 기능 코드를 작성했지만 오류가 무엇인지 알 수 없습니다
가격을 즉시 대체합니까, 아니면 가격을 가져와 계산에 대체합니까?