코딩 도움말..경보 대신 필터링할 지표를 얻으려면 어떻게 해야 합니까?

 

이것은 가격이 상한선이나 하한선에 도달할 때 경고를 생성합니다.

거래가 이 라인에 가까워질 때까지 실행되도록 하고 싶습니다. 가격이 너무 가까워지면 거래를 열 수 없습니다.

여기에 있는 모든 것이 배열일 때 현재 표시줄 닫기에서 해당 논리가 발생하도록 하려면 어떻게 해야 합니까?

for(int x=0; x<limit; x++) {

Xdown[x] = 0; Xup[x] = 0;

middle1[x] = iMA(NULL, 0, period, 0, MODE_EMA, PRICE_TYPICAL, x);// drawn line

middle2= iMA(NULL, 0, period, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands

avg = findAvg(period, x);

upper[x] = middle2 + (3.5*avg);

lower[x] = middle2 - (3.5*avg);

if (MathAbs(upper[x] - High[x]) < 2*Point)

{

Xdown[x] = upper[x];

if (NewBar() && x == 0)

Alert(Symbol()," ",Period()," reach upper edge");

}

if (MathAbs(lower[x] - Low[x]) < 2*Point)

{

Xup[x] = lower[x];

if (NewBar() && x == 0)

Alert(Symbol()," ",Period()," reach lower edge");

}

}

return(0);

}
 

열심히 하는 모습이 보이네요 잘 봤습니다! 이 단계에서 가장 필요한 것은 스스로를 돕는 방법을 아는 것이므로 MQL의 "내비게이터->검색" 기능을 _광범위하게_ 사용하는 것이 좋습니다. 그러면 많은 질문에 대한 답변을 찾을 수 있습니다. 표시기의 호출은 버퍼이며 이것은 iCustom()을 통해 수행됩니다. 객체는 배열 등이 아니며 훨씬 더 많습니다. 예를 들어 "배열"을 검색하면 현재 표시줄의 배열 인덱스가 0이고 마지막 표시줄의 배열 인덱스가 1인 식이라는 것을 알 수 있습니다.

검색 기능 항목이 모두 압도적인 경우 이 단계에서 너무 어려운 작업을 수행하려고 하는 것일 수 있습니다. 위의 예제 대부분은 codersguru의 초급 과정에서 다루었으므로 두 번째 읽기를 권장합니다.

간단한 EA를 사용하여 약간 단순화/수정하면 작동 방식을 배울 수 있습니다. 완료되면 복잡하게 만들 수 있습니다.

표시를 벗어난 경우 죄송합니다.

이제 일반적으로 Close price 에서 작업하려면 새 막대의 열기를 테스트한 다음 배열의 인덱스 1에 조건을 작성합니다. 새 막대의 열기를 감지하는 가능한 코드:

bool NewBar()

{

정적 날짜 시간 dt = 0;

if (시간[0] != dt)

{

dt = 시간[0];

반환(참);

}

반환(거짓);

}

도움이 되기를 바랍니다. 행운을 빕니다.

 

예, 올바른 길을 가고 있습니다.

나는 모든 것을 멈추고 C++ 프로그래밍을 다시 읽을 것입니다.

불행히도 객체 지향은 mq4에 그다지 좋지 않으므로 기본으로 보완해야 합니다.

힘내세요, 당신은 거기에 도착할 겁니다.

 
Aaragorn:
이것은 가격이 상한선이나 하한선에 도달할 때 경고를 생성합니다.

거래가 이 라인에 가까워질 때까지 실행되도록 하고 싶습니다. 가격이 너무 가까워지면 거래를 열 수 없습니다.

여기에 있는 모든 것이 배열일 때 현재 표시줄 닫기에서 해당 논리가 발생하도록 하려면 어떻게 해야 합니까?

이것을 예로 들 수 있습니다. 그것은 당신이 얻고 싶은 것에 가깝습니다. 내가 볼 수있는 한, 당신이 사용하고있는 것과 동일한 지표입니다.

 
pipeline:
열심히 하는 모습이 보이네요 잘 봤습니다! 이 단계에서 가장 필요한 것은 스스로를 돕는 방법을 아는 것이므로 MQL의 "내비게이터->검색" 기능을 _광범위하게_ 사용하는 것이 좋습니다. 그러면 많은 질문에 대한 답변을 찾을 수 있습니다. 표시기의 호출은 버퍼이며 이것은 iCustom()을 통해 수행됩니다. 객체는 배열 등이 아니며 훨씬 더 많습니다. 예를 들어 "배열"을 검색하면 현재 표시줄의 배열 인덱스가 0이고 마지막 표시줄의 배열 인덱스가 1인 식이라는 것을 알 수 있습니다.

검색 기능 항목이 모두 압도적인 경우 이 단계에서 너무 어려운 작업을 수행하려고 하는 것일 수 있습니다. 위의 예제 대부분은 codersguru의 초급 과정에서 다루었으므로 두 번째 읽기를 권장합니다.

간단한 EA를 사용하여 약간 단순화/수정하면 작동 방식을 배울 수 있습니다. 완료되면 복잡하게 만들 수 있습니다.

표시를 벗어난 경우 죄송합니다.

이제 일반적으로 종가에 대해 작업하려면 새 막대의 열기를 테스트한 다음 배열의 인덱스 1에 조건을 작성합니다. 새 막대의 열기를 감지하는 가능한 코드:

bool NewBar()

{

정적 날짜 시간 dt = 0;

if (시간[0] != dt)

{

dt = 시간[0];

반환(참);

}

반환(거짓);

}

도움이 되기를 바랍니다. 행운을 빕니다.

그 검색 기능 에 대해서는 ...아무것도 반환하지 않습니다. 메타에디터에서 여러 번 사용해 보았습니다. 원하는 것을 입력하고 Return 키를 누르면 아무 일도 일어나지 않거나, 검색 문자열 옆에 있는 작은 이동 상자를 클릭해도 아무 일도 일어나지 않습니다. 나는 그것이 전혀 작동하지 않기 때문에 그것이 얼마나 절름발이인지 알아차리고 있었습니다. 메타에디터 내비게이터 창의 검색 기능을 언급하는 것입니다...내가 모르는 작동하도록 하는 프로토콜이 있습니까?

 
fx-programmer:
예, 올바른 길을 가고 있습니다.

나는 모든 것을 멈추고 C++ 프로그래밍을 다시 읽을 것입니다.

불행히도 객체 지향은 mq4에 그다지 좋지 않으므로 기본으로 보완해야 합니다.

힘내세요, 당신은 거기에 도착할 겁니다.

격려 감사합니다. 도덕적 지원이 중요합니다. 여기 내 이론적 목표가 무엇인지 알 수 있습니까? 이 목표를 달성하기 위해 더 나은 방법(기본이라고 부르는 방법)을 제안할 수 있습니까?

 
pipeline:

이제 일반적으로 종가에 대해 작업하려면 새 막대의 열기를 테스트한 다음 배열의 인덱스 1에 조건을 작성합니다. 새 막대의 열기를 감지하는 가능한 코드:

bool NewBar()

{

정적 날짜 시간 dt = 0;

if (시간[0] != dt)

{

dt = 시간[0];

반환(참);

}

반환(거짓);

}

도움이 되기를 바랍니다. 행운을 빕니다.

내가 의미하는 바를 알면 거의 도움이 됩니다. 그러면 true를 반환한다고 가정하면 새 막대가 있는 것으로 감지된 지금 현재 닫기에서 배열에서 표시기의 값을 어떻게 얻을 수 있습니까?

 
 
Aaragorn:

어제 밤에 구글링을 하다가 발견한...

http://www.gordago.com/?act=download

누구든지 이것에 대한 경험이 있습니까? 진짜야?

Gordago는 사용자 지정 지표를 처리하지 않거나 여전히 처리할 수 없습니다. 이것이 큰 단점입니다.

프로그래밍을 배우는 유일한 방법은 지금 하고 있는 것처럼 ... 예제에서 배우는 것입니다. Coders' Guru의 자료는 학습에 좋습니다.

행운을 빕니다,

마지

 
나는 오늘 지표를 가지고 지옥에 말할 생각을 하고 있고 내가 이전(x) 막대의 최고점과 최저점을 참조할 수 있는 무언가를 만들 수 있는지 확인하려고 합니다.

지표는 보면 볼수록 매력적인 것 같습니다....

좋아, 미리 정의된 변수에 high()가 표시됩니다. 예를 들어 지난 30시간 중 가장 높은 값을 얻으려면 어떻게 사용합니까?

 

지표를 작성하는 것과 EA를 작성하는 것은 별개입니다. 섞지 마세요. 표시기에서 올바르게 그리려면 기록도 처리해야 합니다. EA를 작성할 때 현재 틱만 있고 매 틱마다 값을 계산해야 합니다(거래 손실을 원하지 않는 경우). 따라서 CURRENT 눈금의 위쪽 및 아래쪽 가장자리 값을 얻으려면 2가지 작업을 수행할 수 있습니다.

  1. 원래 지표를 사용자 지정 지표로 사용
  2. EA 내부에 표시기의 논리를 작성하십시오.

첫 번째 옵션은 어렵지 않습니다. 먼저 윗줄과 아랫줄에 사용하는 버퍼 인덱스 가 무엇인지 알아야 합니다.

그것을 찾으십시오 표시기 코드를 봐야합니다

SetIndexBuffer(0, 위);

SetIndexBuffer(1,중간1);

SetIndexBuffer(2,낮음);

보시다시피 위쪽 라인은 인덱스 0, 중간은 인덱스 1, 아래쪽은 인덱스 2입니다.

이제 이 정보가 있으므로 표시기에 포함된 매개변수의 수를 알아야 합니다. 이 정보를 얻으려면 외부 라는 단어로 시작하는 행을 찾아야 합니다.

1줄만 찾았습니다

외부 정수 기간 = 34;

이제 지표를 맞춤형 지표로 사용할 수 있습니다.

이중 upLevel = iCustome(NULL, 0, "트렌드 밴드", 34, 0, 0);

이중 LowLevel = iCustome(NULL,0, "트렌드 밴드", 34, 2, 0);

34는 표시기에 대한 매개변수입니다.

0은 버퍼 인덱스입니다(하위는 2).

마지막 0은 막대 이동입니다(EA에서는 전류가 필요하므로 0을 사용합니다)

이제 상한값과 하한값이 있으므로 가격과 비교하여 확인할 수 있습니다.

그것이 당신을 발전시킬 수 있기를 바랍니다.

엘리

사유: