코딩 도움말 - 페이지 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과 비교됩니까?