코딩 도움말 - 페이지 73

 

여보세요,

누군가가 내가 하고 싶은 일을 하는 지표를 얻는 데 도움을 줄 수 있기를 바랍니다.

나는 몸체의 길이 / 또는 양초의 총 길이에 양초 막대의 시간을 더한 표시기가 있습니다.

단, 5 Digit 브로커에게는 적합하지 않습니다. 시간과 길이는 Digit 4에서 완벽하면서 서로 투영 됩니다.

누군가가 코드를 변경할 수 있고 기꺼이 변경할 수 있다면 매우 좋을 것입니다.

미리 감사드립니다.

문안 인사,

 

간단한 것을 놓치고

MA 크로스 EA, 모든 MA 크로스 EA용 TL 필터를 작업하고 있지만 간단한 것이므로 부착된 부분에 스터드를 박습니다.

기본적으로 TL 계산기는 TL 방향과 가격 교차에 따라 신호 1, 2 또는 3을 제공하고 TL이 충분히 기울어지지 않은 경우 불쾌한 "제로 분할"을 제공합니다.

나는 코딩을 배우고 있고 모든 Coders' Guru PDF와 MQL4 포럼에서 최대한 많이 읽었습니다.

포인터를 찾는 중....

문제: 가격이 TL을 건드리지 않고 매수해도 괜찮을 때 3 인 "TLfilter" 값을 호출하는 방법을 알 수 없습니다.

나는 그것을 매수/매도 기준에 &&TTLfilter = 3!으로 고정하려고 시도했고, 내가 알아낼 수 있는 다른 방법도 있지만 내가 얻을 수 있는 것은 거래가 전혀 없다는 것뿐입니다.

또한 OrderSelect 루프에 넣으려고 시도했지만 운이 없었습니다.

내가 누락 된 것과 같이 포인터를 찾고 있습니다.

관심이 있는 사람이 있다면.

EA를 첨부하기 전에 차트에 TL을 그리고 이름을 t6으로 지정합니다.

//--- Print("TLfilter = ",TLfilter); 반환(TL 필터); TL 섹션의 맨 아래에서 수행 중인 작업을 확인합니다.

이 EA에 대한 모드는 이중선 ======= 1 2 및 3으로 표시됩니다.

편집: 가능한 한 깨끗한지 확인하기 위해 이 코드에 내 코딩이 없습니다. x_trader_v2_tlmod.mq4

파일:
 

다중지표

안녕!

누군가 이와 같은 다중 표시기를 사용/가지고 있습니까?

다중 이동 평균 - MQL4 코드 기반

아래를 보면 "자유바" 표시기처럼 보입니다... 그래서... 이 입력 표시기를 변경하고 싶습니다. 4ema를 사용하고 싶지 않습니다.... 1ema(2 크로싱), CCI, STOCH 및 사르

멀티인디케이터를 찾았지만 이런 히스토리는 없었습니다.

누군가 도와주고 코드를 변경할 수 있습니까?

 

안녕하세요 Pearl1입니다.

내가 볼 수 있는 바로는 신호를 보낼 조건과 함께 사용하려는 지표로 다른 3개의 이동 평균 을 대체하는 콜을 입력하면 됩니다.

 

뭔가를 시도했지만 진전이 없었습니다

 

지금까지 코딩한 것을 게시하고 무엇을 하려고 하는지 설명하지 않으시겠습니까? 그렇게 하면 누군가가 당신을 도울 수 있습니다

pearl1:
뭔가를 시도했지만 진전이 없었습니다
 

정수 시작()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Counted.Bars>0) Counted.Bars--;

int Limit = 막대 - Counted.Bars;

색상 Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=한계, i>=0, i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); 나는 여기 빨랐다.... 그는 항상 이 MA0.Buffer.0....과 비교한다. 그래서 내가 RSI, Stoch를 사용한다면... 모든 요소에 대해 이 버퍼를 생성해야 합니까? RSI용 RSI0.Buffer.0?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.버퍼 = EMPTY_VALUE ;

MA1.DN.버퍼 = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down;

//----

MA2.UP.버퍼 = EMPTY_VALUE;

MA2.DN.버퍼 = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up;

else Text.Color.2 = Text.Color.Down;

//----

MA3.UP.버퍼 = EMPTY_VALUE;

MA3.DN.버퍼 = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up;

else Text.Color.3 = Text.Color.Down;

//----

MA4.UP.버퍼 = EMPTY_VALUE;

MA4.DN.버퍼 = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up;

else Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

리턴(0);

 

모든 요소에 대해 버퍼를 생성할 필요는 없습니다.

MA1.Buffer.0, MA1.Buffer.1, ....은 버퍼가 아니라 단순 변수입니다. 이름을 변경하지 않고 무엇이든 사용할 수 있습니다. 예를 들어 rsi에 대해 사용하려는 경우 코드를 다음과 같이 변경할 수 있습니다.

MA1.Buffer.0 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i); MA1.Buffer.1 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i+1);

변수 이름을 변경할 필요 없이 작동합니다(이 경우 RSI1.Period 및 RSI1.Price를 외부 매개변수 로 정의하기만 하면 됨)

pearl1:
정수 시작()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Counted.Bars>0) Counted.Bars--;

int Limit = 막대 - Counted.Bars;

색상 Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=한계, i>=0, i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); 나는 여기 빨랐다.... 그는 항상 이 MA0.Buffer.0....과 비교한다. 그래서 내가 RSI, Stoch를 사용한다면... 모든 요소에 대해 이 버퍼를 생성해야 합니까? RSI용 RSI0.Buffer.0?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.버퍼 = EMPTY_VALUE;

MA1.DN.버퍼 = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down;

//----

MA2.UP.버퍼 = EMPTY_VALUE;

MA2.DN.버퍼 = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up;

else Text.Color.2 = Text.Color.Down;

//----

MA3.UP.버퍼 = EMPTY_VALUE;

MA3.DN.버퍼 = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up;

else Text.Color.3 = Text.Color.Down;

//----

MA4.UP.버퍼 = EMPTY_VALUE;

MA4.DN.버퍼 = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up;

else Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

반환(0);
 
pearl1:
정수 시작()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Counted.Bars>0) Counted.Bars--;

int Limit = 막대 - Counted.Bars;

색상 Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=한계, i>=0, i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i);

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.버퍼 = EMPTY_VALUE;

MA1.DN.버퍼 = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0 ) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down;

//----

MA2.UP.버퍼 = EMPTY_VALUE;

MA2.DN.버퍼 = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0 ) Text.Color.2 = Text.Color.Up;

else Text.Color.2 = Text.Color.Down;

//----

MA3.UP.버퍼 = EMPTY_VALUE;

MA3.DN.버퍼 = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0 ) Text.Color.3 = Text.Color.Up;

else Text.Color.3 = Text.Color.Down;

//----

MA4.UP.버퍼 = EMPTY_VALUE;

MA4.DN.버퍼 = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = 간격 * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0 ) Text.Color.4 = Text.Color.Up;

else Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

반환(0);

아하, 감사합니다. 하지만 이 버퍼는 .... 모두 MA0.Buffer.0과 비교됩니까?

 

IMA() 호출을 원하는 호출(예: 내가 제공한 예제의 iRSI())로 바꾸면 작동해야 합니다. 변수 이름을 바꿀 필요가 없습니다.

pearl1:
아하, 감사합니다. 하지만 이 버퍼는 .... 모두 MA0.Buffer.0과 비교됩니까?