코딩 도움말 - 페이지 320

 

안녕하세요,

내가 이 근처에 없었던지 오래...

저는 EA Idea 작업을 하고 있습니다. 지표를 추가해야 하지만 이것을 EA에 포함시키는 방법을 모르겠습니다. 도와주시겠습니까?

표시기는 경사 방향선이며 일일 차트에서 작동하고 낮은 TF 차트에서 주문을 트리거하기를 원합니다. 표시기 코드는 다음과 같습니다.

//+----------------------------------------------- -------------------+

//| 경사 방향선 DLMmq4 |

//| 다니엘 루칭거 2014 |

//| MQL5: MetaTrader를 통한 자동화된 외환 거래, 전략 테스터 및 맞춤형 지표 |

//+----------------------------------------------- -------------------+

#속성 표시기_차트_창

#속성 표시기_버퍼 2

#property indicator_color1 파란색

#속성 표시기_너비1 3

#property indicator_color2 빨간색

#속성 표시기_너비2 3

//---- 입력 매개변수

외부 정수 기간 = 14;

extern int 메소드=3; // 모드_SMA

외부 정수 가격 = 0; // PRICE_CLOSE

//---- 버퍼

이중 상승세[];

이중 Dntrend[];

이중 ExtMapBuffer[];

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

표시 버퍼(3);

SetIndexBuffer(0, 상승 추세);

SetIndexBuffer(1, Dntrend);

SetIndexBuffer(2, ExtMapBuffer);

ArraySetAsSeries(ExtMapBuffer, true);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,3);

IndicatorShortName("경사 방향선");

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 해제 기능 |

//+----------------------------------------------- -------------------+

int 초기화(){반환(0);}

더블 WMA(int x, int p)

{

return(iMA(NULL, 0, p, 0, 방법, 가격, x));

}

//+----------------------------------------------- -------------------+

//| 사용자 지정 표시기 반복 기능 |

//+----------------------------------------------- -------------------+

정수 시작()

{

정수 counted_bars = IndicatorCounted();

if(counted_bars < 0)

리턴(-1);

정수 x = 0;

정수 p = MathSqrt(마침표);

int e = 막대 - counted_bars + 마침표 + 1;

이중 벡터[], 추세[];

if(e > 막대)

e = 막대;

ArrayResize(벡터, 전자);

ArraySetAsSeries(벡터, 참);

ArrayResize(추세, e);

ArraySetAsSeries(추세, 참);

for(x = 0; x < e; x++)

{

vect[x] = 2*WMA(x, 기간/2) - WMA(x, 기간);

}

for(x = 0; x < 전자 기간; x++)

ExtMapBuffer[x] = iMAOnArray(벡트, 0, p, 0, 메소드, x);

for(x = 전자 기간, x >= 0, x--)

{

추세[x] = 추세[x+1];

if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) 경향[x] =1;

if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) 경향[x] =-1;

(경향[x]>0)인 경우

{ 상승 추세[x] = ExtMapBuffer[x];

if (trend[x+1]<0) Uptrend[x+1]=ExtMapBuffer[x+1];

추세[x] = EMPTY_VALUE;

}

또 다른

(추세[x]<0)인 경우

{

Dntrend[x] = ExtMapBuffer[x];

if (trend[x+1]>0) Dntrend[x+1]=ExtMapBuffer[x+1];

상승 추세[x] = EMPTY_VALUE;

}

}

리턴(0);

---------------

--------------

다음과 같은 방법으로 코딩했습니다.

이중 UpTrend = iCustom(NULL,1440,"경사 방향선 DLM",20,3,0,1); // 여기서 0 = UptrendBuffer

이중 DnTrend = iCustom(NULL,1440,"경사 방향선 DLM",20,3,1,1); // 여기서 1 = DntrendBuffer

이중 _sl = 0,_tp = 0;

{

if(haMode == 0 || haMode == 1)

{

if(업트렌드)

{label("긴 조건 OK");

if(닫기[0] >= srDown && 닫기[0] < srUp)

//if(StopLoss > 0) _sl = 묻기 - StopLoss;

_sl = srDownHT-StopLossShift;

if(TakeProfit > 0) _tp = 묻기 + TakeProfit;

if(tt && 주문<MaxTrades)

{

openOrder(getLots(),MagicNumber,OP_BUY, _sl,_tp);

}

}}

}

}

이것이 작동하지 않는다고 확신하기 때문에 누군가가 저를 수정해 주실 수 있습니까?

감사해요

다니엘1983

 

도움을 주신 Mistertools에게 진심으로 감사드립니다.

하지만 ...

내가하고 싶은 것은 #_FullSSA_normalize 올바른 mtf nmc에 이동 평균 을 적용하는 것입니다.

이것은 MT4의 MA의 도움으로 정상적인 방법으로 M5에서 이 작업을 수행할 때 문제 없이 작동합니다.

MT4에서 유일하게 사용하는...

M1에서는 때때로 작동하고 다른 때는 작동하지 않습니다. 설정과 관련이 있을 수 있습니다.

사진만 봐도 SSA는 괜찮은데 MA는 안되네요...

직접 해보려고 했는데 '내 작업' 이후에 오류가 2개뿐인데 너무 복잡하네요..

운이 좋았을 것이지만 그럼에도 불구하고 SSA는 문제 없이 작동했지만 MA는 어디에도 보이지 않았습니다.

물론 SSA는 엘리트입니다....

얼마 전에 샀는데 그만한 가치가 있습니다 ...

파일:
ssa.png  72 kb
 
daniel1983:
안녕하세요,

내가 이 근처에 없었던지 오래...

저는 EA Idea 작업을 하고 있습니다. 지표를 추가해야 하지만 이것을 EA에 포함시키는 방법을 모르겠습니다. 도와주시겠습니까?

표시기는 경사 방향선이며 일일 차트에서 작동하고 낮은 TF 차트에서 주문을 트리거하기를 원합니다. 표시기 코드는 다음과 같습니다.

//+----------------------------------------------- -------------------+

//| 경사 방향선 DLMmq4 |

//| 다니엘 루칭거 2014 |

//| MQL5: MetaTrader를 통한 자동화된 외환 거래, 전략 테스터 및 맞춤형 지표 |

//+----------------------------------------------- -------------------+

#속성 표시기_차트_창

#속성 표시기_버퍼 2

#property indicator_color1 파란색

#속성 표시기_너비1 3

#property indicator_color2 빨간색

#속성 표시기_너비2 3

//---- 입력 매개변수

외부 정수 기간 = 14;

extern int 메소드=3; // 모드_SMA

외부 정수 가격=0; // PRICE_CLOSE

//---- 버퍼

이중 상승세[];

이중 Dntrend[];

이중 ExtMapBuffer[];

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

표시 버퍼(3);

SetIndexBuffer(0, 상승 추세);

SetIndexBuffer(1, Dntrend);

SetIndexBuffer(2, ExtMapBuffer);

ArraySetAsSeries(ExtMapBuffer, true);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,3);

IndicatorShortName("경사 방향선");

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 해제 기능 |

//+----------------------------------------------- -------------------+

int 초기화(){반환(0);}

더블 WMA(int x, int p)

{

return(iMA(NULL, 0, p, 0, 방법, 가격, x));

}

//+----------------------------------------------- -------------------+

//| 사용자 지정 표시기 반복 기능 |

//+----------------------------------------------- -------------------+

정수 시작()

{

정수 counted_bars = IndicatorCounted();

if(counted_bars < 0)

리턴(-1);

정수 x = 0;

정수 p = MathSqrt(마침표);

int e = 막대 - counted_bars + 마침표 + 1;

이중 벡터[], 추세[];

if(e > 막대)

e = 막대;

ArrayResize(벡터, 전자);

ArraySetAsSeries(벡터, 참);

ArrayResize(추세, e);

ArraySetAsSeries(추세, 참);

for(x = 0; x < e; x++)

{

vect[x] = 2*WMA(x, 기간/2) - WMA(x, 기간);

}

for(x = 0; x < 전자 기간; x++)

ExtMapBuffer[x] = iMAOnArray(벡트, 0, p, 0, 메소드, x);

for(x = 전자 기간, x >= 0, x--)

{

추세[x] = 추세[x+1];

if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) 경향[x] =1;

if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) 경향[x] =-1;

(경향[x]>0)인 경우

{ 상승 추세[x] = ExtMapBuffer[x];

if (trend[x+1]<0) Uptrend[x+1]=ExtMapBuffer[x+1];

추세[x] = EMPTY_VALUE;

}

또 다른

(추세[x]<0)인 경우

{

Dntrend[x] = ExtMapBuffer[x];

if (trend[x+1]>0) Dntrend[x+1]=ExtMapBuffer[x+1];

상승 추세[x] = EMPTY_VALUE;

}

}

리턴(0);

---------------

--------------

다음과 같은 방법으로 코딩했습니다.

이중 UpTrend = iCustom(NULL,1440,"경사 방향선 DLM",20,3,0,1); // 여기서 0 = UptrendBuffer

이중 DnTrend = iCustom(NULL,1440,"경사 방향선 DLM",20,3,1,1); // 여기서 1 = DntrendBuffer

이중 _sl = 0,_tp = 0;

{

if(haMode == 0 || haMode == 1)

{

if(업트렌드)

{label("긴 조건 OK");

if(닫기[0] >= srDown && 닫기[0] < srUp)

//if(StopLoss > 0) _sl = 묻기 - StopLoss;

_sl = srDownHT-StopLossShift;

if(TakeProfit > 0) _tp = 묻기 + TakeProfit;

if(tt && 주문<MaxTrades)

{

openOrder(getLots(),MagicNumber,OP_BUY, _sl,_tp);

}

}}

}

}

이것이 작동하지 않는다고 확신하기 때문에 누군가가 저를 수정해 주실 수 있습니까?

감사해요

다니엘1983

경사 방향 선이 다시 그리기 표시기이기 때문에 단순히 작동하지 않습니다. 일반적인 선체 평균("경사 방향선"은 선체 평균)을 취하면 모든 것이 더 쉬워집니다.

 

Mladen 감사합니다. 시간 내주셔서 감사합니다.

속도 제어로 만든 HMA에 대한 게시물을 통해 찾았습니다.

경사 방향 표시기로 원했던 것과 동일한 아이디어인 EA로 시도하고 싶습니다.

그러나 이 HMA 표시기를 사용하여 "Hull Moving Averages 2.0 &SR 라인"을 게시했습니다.

이 코드가 내 EA에서 작동하도록 하려면 어떻게 해야 합니까?

나는 썼다:

입력 int IndicatorTF = 1440 //(일일 TimeFrame의 표시기)

입력 int HMAPeriod = 35; //(이 매개변수를 변경할 수 있음)

입력 ENUM_HMAP가격 = PRICE_CLOSE; //(이 매개변수를 변경할 수 있음)

입력 정수 HMASpeed = 2.0; //(이 매개변수를 변경할 수 있음)

double trendUp = iCustom(Symbol(),IndicatorTF,"선체 이동 평균 2.0 & sr 라인",HMAPeriod,ENUM_HMAPrice,HMASpeed,0,0);

double trendDn = iCustom(Symbol(),IndicatorTF,"선체 이동 평균 2.0 & sr 라인",HMAPeriod,ENUM_HMAPrice,HMASpeed,1,0);

if(trendUp > 0)

{

구매 열기

}

표시기 코드는 다음과 같습니다.

//+----------------------------------------------- -------------------+

//| 선체 이동 평균 |

//| 믈라덴 |

//+----------------------------------------------- -------------------+

#재산 저작권 " www.forex-tsd.com "

#속성 링크 " www.forex-tsd.com "

#속성 표시기_차트_창

#속성 표시기_버퍼 3

#property indicator_color1 라임그린

#property indicator_color2 창백한 바이올렛레드

#property indicator_color3 창백한 바이올렛레드

#속성 표시기_너비1 2

#속성 표시기_너비2 2

#속성 표시기_너비3 2

//

//

//

//

//

extern string TimeFrame = "현재 시간 프레임";

extern int HMAPeriod = 35;

extern int HMAPrice = PRICE_CLOSE;

외부 이중 HMAS속도 = 2.0;

extern bool LinesVisible = 거짓;

외부 정수 LinesNumber = 5;

외부 색상 ColorUp = LimeGreen;

외부 색상 ColorDown = PaleVioletRed;

외부 문자열 UniqueID = "HullLines1";

extern bool alertsOn = 거짓;

extern 부울 alertsOnCurrent = true;

extern bool alertsMessage = true;

extern bool alertsSound = false;

extern bool alertsEmail = 거짓;

//

//

//

//

//

이중 hma[];

더블 hmada[];

이중 hmadb[];

이중 작업[];

이중 추세[];

int HalfPeriod;

int HullPeriod;

문자열 표시기 파일 이름;

부울 returnBars;

부울 계산값;

int timeFrame;

//------------------------------------------------ ------------------

//

//------------------------------------------------ ------------------

//

//

//

//

//

정수 초기화()

{

표시 버퍼(5);

SetIndexBuffer(0,hma);

SetIndexBuffer(1,hmada);

SetIndexBuffer(2,hmadb);

SetIndexBuffer(3, 경향);

SetIndexBuffer(4, 작업);

//

//

//

//

//

HMAPeriod = MathMax(2,HMAPeriod);

HalfPeriod = MathFloor(HMAPeriod/HMASpeed);

HullPeriod = MathFloor(MathSqrt(HMAPeriod));

IndicatorFileName = WindowExpertName();

계산값 = TimeFrame=="계산값"; if (calculateValue) { 반환(0); }

returnBars = TimeFrame=="반환막대"; if (returnBars) { 반환(0); }

timeFrame = stringToTimeFrame(TimeFrame);

//

//

//

//

//

IndicatorShortName(timeFrameToString(timeFrame)+" HMA("+HMAPeriod+")");

리턴(0);

}

무효 deinit()

{

삭제라인();

}

무효 deleteLines()

{

int lookForLength = StringLen(고유ID);

for (int i= ObjectsTotal()-1; i>=0; i--)

{

문자열 이름 = ObjectName(i);

if (StringSubstr(이름,0,lookForLength)==고유ID) ObjectDelete(이름);

}

}

//------------------------------------------------ ------------------

//

//------------------------------------------------ ------------------

//

//

//

//

//

정수 시작()

{

int i,counted_bars = IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit=MathMin(막대-카운트된_막대,막대-1);

if (returnBars) { hma[0] = MathMin(limit+1,Bars-1); 리턴(0); }

//

//

//

//

//

if (calculateValue || timeFrame == Period())

{

if (trend[limit] == -1) CleanPoint(limit,hmada,hmadb);

for(i=limit; i>=0; i--) 작업 = 2.0*iMA(NULL,0,HalfPeriod,0,MODE_LWMA,HMAPrice,i)-iMA(NULL,0,HMAPeriod,0,MODE_LWMA,HMAPrice, 나);

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

{

hma = iMAOnArray(작업,0,HullPeriod,0,MODE_LWMA,i);

hmada = EMPTY_VALUE;

hmadb = EMPTY_VALUE;

추세 = 추세;

if (hma > hma) 경향 = 1;

if (hma < hma) 경향 = -1;

if (경향 == -1) PlotPoint(i,hmada,hmadb,hma);

}

삭제라인();

if (LinesVisible)

{

정수 k = 0;

for (i=0; i<막대 && k<LinesNumber; i++)

if (추세!=추세)

{

문자열 이름 = UniqueID+(문자열)시간;

ObjectCreate(이름,OBJ_TREND,0,시간,hma,시간+기간()*60,hma);

만약 (추세==1)

ObjectSet(이름,OBJPROP_COLOR,ColorUp);

else ObjectSet(이름,OBJPROP_COLOR,ColorDown);

k++;

}

}

관리 경고();

리턴(0);

}

//

//

//

//

//

limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));

if (trend[limit]==-1) CleanPoint(limit,hmada,hmadb);

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

{

정수 y = iBarShift(NULL, 시간 프레임, 시간);

Trend = iCustom(NULL, timeFrame,indicatorFileName,"calculateValue",HMAPeriod,HMAPrice,HMASpeed,LinesVisible,LinesNumber,ColorUp,ColorDown,UniqueID,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,3,y);

hma = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",HMAPeriod,HMAPrice,HMASpeed,LinesVisible,LinesNumber,ColorUp,ColorDown,UniqueID,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,0,y)

hmada = EMPTY_VALUE;

hmadb = EMPTY_VALUE;

}

for (i=limit;i>=0;i--) if (trend==-1) PlotPoint(i,hmada,hmadb,hma);

리턴(0);

}

//+----------------------------------------------- --------------------

//|

//+----------------------------------------------- --------------------

//

//

//

//

//

무효 관리 경고()

{

if(경고 켜짐)

{

if (alertsOnCurrent)

int whichBar = 0;

그렇지 않으면 whichBar = 1;

if (추세[ whichBar] != 추세[ whichBar+1])

{

if (trend[whichBar] == 1) doAlert( whichBar,"up");

if (trend[whichBar] == -1) doAlert( whichBar,"down");

}

}

}

//

//

//

//

//

무효 doAlert(int forBar, 문자열 doWhat)

{

정적 문자열 previousAlert="아무것도";

정적 날짜 시간 이전 시간;

문자열 메시지;

if (previousAlert != doWhat || previousTime != 시간[forBar]) {

이전 경고 = 할 일;

이전 시간 = 시간[forBar];

//

//

//

//

//

message = Symbol()+" "+timeFrameToString(Period())+" at "+TimeToStr(TimeLocal(),TIME_SECONDS)+" HMA 추세가 "+doWhat;

if (alertsMessage) 경고(메시지);

if (alertsEmail) SendMail(Symbol()+" HMA ", 메시지);

if (alertsSound) PlaySound("alert2.wav");

}

}

//------------------------------------------------ -------------------

//

//------------------------------------------------ -------------------

//

//

//

//

//

무효 CleanPoint(int i,double& 첫 번째[],double& 두 번째[])

{

if ((초 != EMPTY_VALUE) && (초 != EMPTY_VALUE))

두 번째 = EMPTY_VALUE;

또 다른

if ((첫 번째 != EMPTY_VALUE) && (첫 번째 != EMPTY_VALUE) && (첫 번째 == EMPTY_VALUE))

첫 번째 = EMPTY_VALUE;

}

//

//

//

//

//

무효 PlotPoint(int i,double& 첫 번째[],double& 두 번째[],double& from[])

{

if (첫 번째 == EMPTY_VALUE)

{

if (첫 번째 == EMPTY_VALUE) {

첫 번째 = ~에서;

첫 번째 = ~에서;

두 번째 = EMPTY_VALUE;

}

또 다른 {

두 번째 = ~에서;

두 번째 = ~에서;

첫 번째 = EMPTY_VALUE;

}

}

또 다른

{

첫 번째 = ~에서;

두 번째 = EMPTY_VALUE;

}

}

//------------------------------------------------ -------------------

//

//------------------------------------------------ -------------------

//

//

//

//

//

문자열 sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};

int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};

//

//

//

//

//

int stringToTimeFrame(문자열 tfs)

{

tfs = stringUpperCase(tfs);

(int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period()));

반환(마침표());

}

문자열 timeFrameToString(int tf)

{

(int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tf==iTfTable) return(sTfTable);

반품("");

}

//

//

//

//

//

문자열 stringUpperCase(문자열 str)

{

문자열 s = str;

(int 길이=StringLen(str)-1; 길이>=0; 길이--)

{

int tchar = StringGetChar(들, 길이);

if((문자 > 96 && 문자 223 && 문자 < 256))

s = StringSetChar(s, 길이, tchar - 32);

else if(문자열 > -33 && 문자형 < 0)

s = StringSetChar(s, 길이, tchar + 224);

}

보고);

}

 
mladen:
다른 지표가 간섭하는 문제가 아닙니다(같은 차트에서 동일한 지표의 여러 인스턴스를 사용하지 않는 한). 이 경우 해당 지표가 동일한 차트에서 다중 인스턴스 지표로 사용되도록 작성되지 않았기 때문에 발생할 수 있습니다.

안녕하세요 MLaden님, 정말 감사합니다만 차트에서 하나 이상의 인스턴스를 사용하는 경우는 아닙니다. 하나만 사용합니다. 그냥 라인이 이동하고 있습니다.

명확하지 않은 경우 걱정하지 마십시오. 그대로 유지하겠습니다. 입력해 주셔서 감사합니다! 좋은 하루 되세요...

지그플립

 
zigflip:
안녕하세요 MLaden님, 정말 감사합니다. 하지만 차트에서 하나 이상의 인스턴스를 사용하는 경우가 아니라 하나만 사용하는 경우입니다. 그냥 라인이 이동하고 있습니다.

명확하지 않은 경우 걱정하지 마십시오. 그대로 유지하겠습니다. 입력해 주셔서 감사합니다! 좋은 하루 되세요...

지그플립

내가 게시 한 것을 시도했지만 그들은 움직이지 않았습니다.

시도해보십시오. 아마도 도움이 될 것입니다.

 

HMA 표시기를 EA로 호출하려면 어떻게 해야 합니까?

이중(NULL,0,"HMA",??????)

그리고 조건은

if(trendUp) 다음 구매, 또는 if(trendUp =1) 다음 구매 또는 이와 유사한 것?

감사해요

 
daniel1983:
HMA 표시기를 EA로 호출하려면 어떻게 해야 합니까?

이중(NULL,0,"HMA",??????)

그리고 조건은

if(trendUp) 다음 구매, 또는 if(trendUp =1) 다음 구매 또는 이와 유사한 것?

감사해요

표시기 매개변수에 따라 다르지만 iCustom()을 사용해야 합니다.

몇 가지 예와 함께 더 많은 정보를 여기에서 찾을 수 있습니다: https://www.mql5.com/en/forum/173108

 
mladen:
표시기 매개변수에 따라 다르지만 여기에는 iCustom()을 사용해야 합니다. 여기에서 찾을 수 있는 몇 가지 예와 함께 훨씬 더 많은 정보를 얻을 수 있습니다. https://www.mql5.com/en/forum/173108

안내해 주셔서 감사합니다. 여전히 혼란스럽습니다. 슬로프 라인 코드와 유사한 코드인 "HMA_Russian_Color"를 찾았지만 여전히 판매 추세에서 구매 추세를 필터링하는 조건에 문제가 있습니다.

내가 썼다

이중 상승 추세 = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,0); // 마지막 0 = UptrendBuffer

이중 Dntrend = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,1); // 마지막 1 = DntrendBuffer

//기간 = 20 / 유형 = 3 / 가격 = 0이 맞습니까?

if(Uptrend) //이걸 어떻게 쓰나요??

{

오픈 구매

}

HMA 하락세 또는 붉은 색 동안 주문 매수가 여전히 열렸습니다 ...

저를 수정하거나 이 문제를 해결할 수 있도록 도와주세요...

감사해요

 
daniel1983:
안내해 주셔서 감사합니다. 여전히 혼란스럽습니다. 슬로프 라인 코드와 유사한 코드인 "HMA_Russian_Color"를 찾았지만 여전히 판매 추세에서 구매 추세를 필터링하는 조건에 문제가 있습니다.

내가 썼다

이중 상승 추세 = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,0); // 마지막 0 = UptrendBuffer

이중 Dntrend = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,1); // 마지막 1 = DntrendBuffer

//기간 = 20 / 유형 = 3 / 가격 = 0이 맞습니까?

if(Uptrend) //이걸 어떻게 쓰나요??

{

오픈 구매

}

HMA 하락세 또는 붉은 색 동안 주문 매수가 여전히 열렸습니다 ...

저를 수정하거나 이 문제를 해결할 수 있도록 도와주세요...

감사해요

기울기 변경을 위해 다음과 같이 시도하십시오.

double current = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,0);

double previous1 = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,1);

double previous2 = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,2);

if (current>previous1 && previous1<previous2)

{

// slope changed to up

}

if (currentprevious2)

{

// slope changed to down

}