코딩 도움말 - 페이지 197

 
mladen:
다음과 같이 추가 선을 한 번 더 그리도록 추가할 수 있습니다.
if (add>0) { drawLine(totalLevels,current+diff+add,addLinesColor,addLinesStyle); drawLine(totalLevels,current+diff-add ,addLinesColor,addLinesStyle); }
모든 "기본"선 주위에 추가 선을 그립니다.

다시 한 번 mladen 감사합니다.

 

경보 프로그래밍에 도움이 필요합니다.

안녕하세요, 저는 전체 mql4 프로그래밍 에 익숙하지 않습니다.

새로운 "올인원" 알람을 만들고 싶습니다.

알람 신호가 있는 Fx MNT, Super Signal 및 CHT Value Chart가 있습니다.

이제 MNT, Super Signal, Value Chart & RSI가 올바른 위치에 있을 때 하나의 알람만 갖고 싶습니다.

이것을 코딩하는 방법? 기존의 알람 부분을 사용하여 하나의 큰 코드에 모두 넣을 수 있습니까?

천천히 안부

 
Slow Moe:
안녕하세요, 저는 전체 mql4 프로그래밍에 익숙하지 않습니다.

새로운 "올인원" 알람을 만들고 싶습니다.

알람 신호가 있는 Fx MNT, Super Signal 및 CHT Value Chart가 있습니다.

이제 MNT, Super Signal, Value Chart & RSI가 올바른 위치에 있을 때 하나의 알람만 갖고 싶습니다.

이것을 코딩하는 방법? 기존의 알람 부분을 사용하여 하나의 큰 코드에 모두 넣을 수 있습니까?

천천히 안부

느린

그렇게 할 수 있지만 모든 표시기에서 데이터를 가져오는 "책임"이 있는 코드는 간단하지 않습니다(특히 찾기 위해 호출되는 모든 표시기에 외부 매개변수를 선언해야 하는 매개변수 가 있는 부분). 경고를 트리거해야 하는지 여부를 표시합니다.)

 

연속 높은/낮은 마감

첨부 파일은 참/거짓을 선택하여 포함될 수 있는 여러 조건을 가지고 있습니다.

다른 조건을 true/false로 통합하고 싶습니다.

롱 2연속 고가 종가?

있는 경우 true에 의해 활성화된 다른 조건이 있는 경우 위쪽 화살표가 생성됩니다.

반바지에 대한 2 연속 낮은 마감?

있는 경우 true에 의해 활성화된 다른 조건이 있는 경우 아래쪽 화살표가 생성됩니다.

닫기 횟수가 변수가 될 수 있습니까?

누군가 이 추가 조건을 Stoch_Indy 표시기에 코딩할 수 있습니까? 고맙습니다.

파일:
 
person77:
첨부 파일은 참/거짓을 선택하여 포함될 수 있는 여러 조건을 가지고 있습니다.

다른 조건을 true/false로 통합하고 싶습니다.

롱 2연속 고가 종가?

있는 경우 true에 의해 활성화된 다른 조건이 있는 경우 위쪽 화살표가 생성됩니다.

반바지에 대한 2 연속 낮은 마감?

있는 경우 true에 의해 활성화된 다른 조건이 있는 경우 아래쪽 화살표가 생성됩니다.

닫기 횟수가 변수가 될 수 있습니까?

누군가 이 추가 조건을 Stoch_Indy 표시기에 코딩할 수 있습니까? 고맙습니다.

사람77

이것을 사용해보십시오

이를 위해 UseConsecutiveCloseBars 옵션이 추가되었습니다. 테스트된 닫기 ID뿐만 아니라 연속적인 상승을 만들기 위해서는 그러한 막대에서 닫기가 열린 것보다 커야 하고 연속적인 하락을 만들기 위해서는 그러한 막대에서 열린 것보다 낮아야 합니다.

파일:
 
mladen:
사람77

이것을 사용해보십시오

이를 위해 UseConsecutiveCloseBars 옵션이 추가되었습니다. 테스트된 닫기 ID뿐만 아니라 연속적인 상승을 만들기 위해서는 그러한 막대에서 닫기가 열린 것보다 커야 하고 연속적인 하락을 만들기 위해서는 그러한 막대에서 열린 것보다 낮아야 합니다.

아주 좋은 mladen - 아주 잘 작동합니다. 고맙습니다!

내가 만난 몇 가지 사례에서 C = O를 허용하는 것이 대체로 유리합니다.

이것을 허용하도록 변경할 수 있습니까? 아니면 C = O가 허용되는지 여부에 대한 옵션이 있습니까?

파일:
 
person77:

아주 좋은 mladen - 아주 잘 작동합니다. 고맙습니다!

내가 만난 몇 가지 사례에서 C = O를 허용하는 것이 대체로 유리합니다.

이것을 허용하도록 변경할 수 있습니까? 아니면 C = O가 허용되는지 여부에 대한 옵션이 있습니까?

사람77

옵션이 하나 더 추가되었습니다. AllowCloseEqualOpen. 이제 해당 옵션으로 제어 할 수 있습니다.

파일:
 

안녕하세요 여러분,

코딩에 대해 질문이 있습니다

이 기본 설정으로 일반 차트에 이동 평균 을 그릴 수 있습니까?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

 
cain82:
안녕하세요 여러분,

코딩에 대해 질문이 있습니다

이 환경 설정으로 일반 차트에 이동 평균을 그릴 수 있습니까?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

작성한 것(dFactor 및 mFactor)은 모두 가격 및 막대 번호에 관계없이 일정한 값으로 평가되므로 차트에 수평선 이 표시됩니다.

 
mladen:
작성한 것(dFactor 및 mFactor)은 모두 가격 및 막대 번호에 관계없이 일정한 값으로 평가되므로 차트에 수평선이 표시됩니다.

답변 감사합니다!

그러나 이 인디 히스토그램 코드와 같이 일반 차트에서 MA의 각도 선을 어떻게 얻을 수 있습니까?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

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

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

for(i=0; i<nLimit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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