코딩하는 방법? - 페이지 301

 

안녕 믈라덴

설명 감사합니다만 첫 번째 닫힌 막대 값은 무엇을 의미합니까? 첫 번째 닫힌 막대 값입니까 아니면 현재 막대 또는 그 이후입니까? 전류+0 또는 전류+1의 의미는 어떻습니까?

문안 인사

테런스

mladen:
테런스

MODE_MAIN은 확률적 선의 값을 읽고 있음을 의미합니다. MODE_SIGNAL은 확률적 신호 라인의 값을 읽고 있음을 의미합니다.

SHIFT 현재 : 모든 표시기(사용자 정의 표시기 포함)에 대해 동일합니다. 예를 들어: SHIFT=0은 현재 막대 값을 의미하고 SHIFT=1은 첫 번째 닫힌 막대 값을 의미하는 식입니다...
 

...

테런스

현재 막대는 정의상 여전히 닫힌 막대가 아닙니다.

현재 막대 앞의 첫 번째 막대는 첫 번째 닫힌 막대입니다.

tkuan77:
안녕 믈라덴

설명 감사합니다만 첫 번째 닫힌 막대 값은 무엇을 의미합니까? 첫 번째 닫힌 막대 값입니까 아니면 현재 막대 또는 그 이후입니까? 전류+0 또는 전류+1의 의미는 어떻습니까?

문안 인사

테런스
 

안녕 믈라덴

그래서 제가 이렇게 말하는 것이 옳습니다.

현재 + 0은 값 0과 동일합니다.

전류+1은 값 1과 동일하며,

전류+2는 값 2와 동일하며,

등등.... SHIFT용?

예:

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 현재 + 1); iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1)과 동일합니다.

내가 그렇게 말하는 것이 옳습니까?

문안 인사

테런스

mladen:
테런스

현재 막대는 정의상 여전히 닫힌 막대가 아닙니다.

현재 막대 앞의 첫 번째 막대는 첫 번째 닫힌 막대입니다.
 

...

테런스

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 0 ); 현재

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1 ); 첫 번째 닫힘(이전)

...

...

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 막대 -1 ); 차트에서 가장 오래된

추신: 이 게시물에는 바에 대한 추가 정보가 있습니다. https://www.mql5.com/en/forum/173124

tkuan77:
안녕 믈라덴

그래서 제가 이렇게 말하는 것이 옳습니다.

현재 + 0은 값 0과 동일합니다.

전류+1은 값 1과 동일하며,

전류+2는 값 2와 동일합니다.

등등 ..... SHIFT?

예:

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 현재 + 1); iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1)과 동일합니다.

내가 그렇게 말하는 것이 옳습니까?

문안 인사

테런스
 

안녕 믈라덴

항상 큰 도움 주셔서 감사합니다!

문안 인사

테런스

mladen:
테런스

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 0 ); 현재

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1 ); 첫 번째 닫힘(이전)

...

...

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 막대 -1 ); 차트에서 가장 오래된

추신: 이 게시물에는 바에 대한 추가 정보가 있습니다. https://www.mql5.com/en/forum/173124
 

몇 가지 문제

모두들 안녕,

나는 내 코드를 테스트했으며 거의 거기에 있습니다. 몇 가지 질문이 있습니다. 도움이 되셨으면 합니다.

나는 이것을 int init()에 넣었다:

if (막대 < D1FastMAPeriod || 막대 < D1SlowMAPeriod)

{

Alert("오류-일일 차트의 SMA를 계산하는 막대가 충분하지 않습니다.");

리턴(0);

}

SlowMAPeriod 는 200입니다. 2009년 1월 1일부터 백테스트를 할 때 2008년부터 200SMA를 계산하기에 충분한 막대가 있다는 것을 차트에서 명확하게 볼 수 있지만 이 오류가 발생합니다. 제가 여기서 뭔가를 놓치고 있습니까?

2. 나는 H4 차트의 거래를 하되 일별 추세의 방향으로만 합니다. 다음 코드를 사용하여 값을 그립니다.

SlowMACurrent = iMA(Symbol(), PERIOD_D1, D1SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

FastMACurrent = iMA(Symbol(), PERIOD_D1, D1FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

그런 다음 긴 위치를 검색할 때 다음을 사용하여 참조합니다.

if (FastMACurrent > SlowMACurrent && ... 등 ... )

내 거래를 제대로 필터링하지 않는 것 같기 때문에 이것이 맞습니까?

3. 또한 가격이 지난 120개 기간의 이전 고점을 초과한 경우(그리고 120개 기간의 저점 위에 머무를 때만) 매수 포지션을 취함으로써 H4 차트의 추세 필터를 사용합니다. 이 코드를 사용합니다.

Donchian_Low = 낮음;

Donchian_High = 높음;

정적 부울 UpTrend = FALSE;

정적 부울 DownTrend = FALSE;

if (질문 > Donchian_High) {UpTrend = TRUE; 하락 추세 = 거짓;}

if (입찰가 < Donchian_Low) {UpTrend = FALSE; 하락 추세 = 참;}

그런 다음 다음 코드를 사용합니다(긴 위치의 경우).

if (FastMACurrent > SlowMACurrent && UpTrend == TRUE && DownTrend == FALSE ... etc... )

그러나 120개 기간의 Donchian 채널에 대해 백테스트된 차트를 확인할 때 연결되지 않기 때문에 작동하지 않는 것 같습니다. 어떤 아이디어?

미리 감사드립니다.

 

...

1. start() 함수 의 시작 부분에 배치합니다. Bar와 같은 데이터와 관련하여 Init는 신뢰할 수 없습니다.

2. 해당 조건은 FastMACurrent > SlowMACurrent일 때마다 참입니다. 그것이 당신이 원했던 것입니까 아니면 십자가에서 찾고 있습니까?

3. 아마도 2번 항목과 관련이 있을 것입니다. 이렇게 하면 너무 많은 가능성을 다루기 때문에 주문을 입력할 수 있는 조건을 "좁혀야" 합니다.

crsnape@btinternet.com:
모두들 안녕,

나는 내 코드를 테스트했으며 거의 거기에 있습니다. 몇 가지 질문이 있습니다. 도움이 되셨으면 합니다.

나는 이것을 int init()에 넣었다:

if (막대 < D1FastMAPeriod || 막대 < D1SlowMAPeriod)

{

Alert("오류-일일 차트의 SMA를 계산하는 막대가 충분하지 않습니다.");

리턴(0);

}

SlowMAPeriod는 200입니다. 2009년 1월 1일부터 백테스트를 할 때 2008년부터 200SMA를 계산하기에 충분한 막대가 있다는 것을 차트에서 명확하게 볼 수 있지만 이 오류가 발생합니다. 제가 여기서 뭔가를 놓치고 있습니까?

2. 나는 H4 차트의 거래를 하되 일별 추세의 방향으로만 합니다. 다음 코드를 사용하여 값을 그립니다.

SlowMACurrent = iMA(Symbol(), PERIOD_D1, D1SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

FastMACurrent = iMA(Symbol(), PERIOD_D1, D1FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

그런 다음 긴 위치를 검색할 때 다음을 사용하여 참조합니다.

if (FastMACurrent > SlowMACurrent && ... 등 ... )

내 거래를 제대로 필터링하지 않는 것 같기 때문에 이것이 맞습니까?

3. 또한 가격이 지난 120개 기간의 이전 고점을 초과한 경우(그리고 120개 기간의 저점 위에 머무를 때만) 매수 포지션을 취함으로써 H4 차트의 추세 필터를 사용합니다. 이 코드를 사용합니다.

Donchian_Low = 낮음;

Donchian_High = 높음;

정적 부울 UpTrend = FALSE;

정적 부울 DownTrend = FALSE;

if (질문 > Donchian_High) {UpTrend = TRUE; 하락 추세 = 거짓;}

if (입찰가 < Donchian_Low) {UpTrend = FALSE; 하락 추세 = 참;}

그런 다음 다음 코드를 사용합니다(긴 위치의 경우).

if (FastMACurrent > SlowMACurrent && UpTrend == TRUE && DownTrend == FALSE ... etc... )

그러나 120개 기간의 Donchian 채널에 대해 백테스트된 차트를 확인할 때 연결되지 않기 때문에 작동하지 않는 것 같습니다. 어떤 아이디어?

미리 감사드립니다.
 

안녕하세요 mladen님

1. 확인하겠습니다.

2. 네 맞습니다. 저는 십자가에서 벗어나고 싶지 않습니다. 예를 들어 빠른 MA가 일일 차트의 느린 MA보다 높은 경우 단기 차트의 장/단기 필터에 사용하기만 하면 됩니다. H4 차트의 위치. 그래서 나는 이것을 올바르게 코딩했다고 생각합니까?

3. 무슨 말인지 잘 모르겠지만 init start() 아래에 넣었습니다.

정적 부울 UpTrend = FALSE;

정적 부울 DownTrend = FALSE;

if (질문 > Donchian_High) {UpTrend = TRUE; 하락 추세 = 거짓;}

if (입찰가 < Donchian_Low) {UpTrend = FALSE; 하락 추세 = 참;}

전역 변수로 만들려면 맨 처음에 정적 bool 변수를 넣어야 합니까? 이것이 원인이 될 수 있습니까?

 

...

3. Ask Donchian_Low (대부분의 경우)가 발생하면 어떻게 됩니까? 정적 변수는 더 이상 유효하지 않은 경우에도 여전히 "이전" 상태를 표시합니다(상태를 "상속"하므로 더 이상 상태가 아닐 때도 위 또는 아래에 있음을 알립니다). 그것이 문제의 원인인지 확인하십시오 .

crsnape@btinternet.com:
안녕하세요 mladen님

1. 확인하겠습니다.

2. 네 맞습니다. 저는 십자가에서 벗어나고 싶지 않습니다. 예를 들어 빠른 MA가 일일 차트의 느린 MA보다 높은 경우 단기 차트의 장/단기 필터에 사용하기만 하면 됩니다. H4 차트의 위치. 그래서 나는 이것을 올바르게 코딩했다고 생각합니까?

3. 무슨 말인지 잘 모르겠지만 init start() 아래에 넣었습니다.

정적 부울 UpTrend = FALSE;

정적 부울 DownTrend = FALSE;

if (질문 > Donchian_High) {UpTrend = TRUE; 하락 추세 = 거짓;}

if (입찰가 < Donchian_Low) {UpTrend = FALSE; 하락 추세 = 참;}

전역 변수로 만들려면 맨 처음에 정적 bool 변수를 넣어야 합니까? 이것이 원인이 될 수 있습니까?
 

좋은 지적. 그것에 대해 살펴보겠습니다.

함수 에 대한 질문, 함수 내에서 함수를 호출할 수 있습니까? 예를 들어 이 기능이 있습니다.

문자열 GetWinLossPreviousShort(int LastOpenTicket, 문자열 WinLossPreviousShort)

{

만약 (... 등

나중에 나는 그것을 다음과 같이 부른다.

이중 GetLotsLong(int LowRisk, int HighRisk, 이중 SLDistanceLong, 문자열 GetWinLossPreviousShort)

사유: