나는 첫 번째 indior를 시도하고 있으며 노련한 MQL 코더의 도움에 감사드립니다.
아래 스크립트는 샘플 MACD 스크립트에서 파생되었으며 MACD가 0선 위의 3개의 연속 막대 후에 0선을 교차했을 때 위쪽 화살표를 배치하고 마찬가지로 MACD가 3개의 연속 막대가 있는 0선 아래를 교차하는 경우 아래쪽 화살표를 배치하도록 수정되었습니다. 영하.
문제가 있습니다. 화살표가 전혀 표시되지 않습니다.
내가 잘못된 방향으로 가고 있는 것을 볼 수 있다면 큰 도움이 될 것입니다.
감사
#property copyright 저작권 © 2007, Systrader
#속성링크 http://www....
//---- 실내 설정
#property indior_separate_window
#속성 indior_buffers 4
#property indior_color1 아쿠아
#property indior_color2 레드
#property indior_color3 그린
#property indior_color4 레드
#속성 indior_width1 2
//---- 실내 매개변수
extern int FastEMA=12;
extern int SlowEMA=26;
extern int 신호SMA=9;
//---- 실내 버퍼
이중 Macd[];
이중 신호[];
//---- 카운터
정수 카운터;
// ------------------ -------------------
//| 커스텀 인디오 초기화 기능 |
// ------------------ -------------------
int 초기화()
{
//---- 그리기 설정
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetIndexArrow(2,233);
SetIndexArrow(3,234);
SetIndexDrawBegin(1,SignalSMA);
IndiorDigits(숫자 1);
//---- 실내 버퍼 매핑
SetIndexBuffer(0,Macd);
SetIndexBuffer(1,Signal);
//---- DataWindow 및 내부 하위 창 레이블의 이름
IndiorShortName(MACDZC( FastEMA , SlowEMA , SignalSMA ));
SetIndexLabel(0, MACD);
SetIndexLabel(1, 신호);
//---- 초기화 완료
반환(0);
}
// ------------------ -------------------
//| 이동 평균 수렴/발산 |
// ------------------ -------------------
정수 시작()
{
정수 제한;
int counted_bars=IndiorCounted();
//---- 마지막으로 계산된 막대가 다시 계산됩니다.
if(counted_barsgt;0) counted_bars--;
limit=막대-계산_막대;
//---- 첫 번째 버퍼에서 계산된 macd
for(int i=0;ilt;한계;i )
Macd[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- 2번째 버퍼에서 카운트된 신호 라인
for(i=0;ilt;한계;i )
Signal[i]=iMAOnArray(Macd,Bars,SignalSMA,0,MODE_SMA,i);
//---- macd의 3-바가 0보다 크거나 작은 경우 카운트
카운터=0;
//이전 3개의 마디를 확인할 수 있도록 3번째 마디에서 시작
for(int j=3; jlt;limit; j )
{
if (Macd[j] lt; 0) 카운터--;
if (Macd[j] gt; 0) 카운터 ;
}
//0선 위로 3개의 막대가 보이면 카운트
if (카운터 gt; 2) {
SetIndexStyle(2,DRAW_ARROW);
ObjectCreate(UpAlert, OBJ_ARROW, 0, 높음[j],0);
ObjectSet(UpAlert, OBJPROP_ARROWCODE, 74);
}
//0선 아래에 3개의 막대가 보이면 카운트
if (카운터 lt; -2)
{
SetIndexStyle(3,DRAW_ARROW);
ObjectCreate(DnAlert, OBJ_ARROW, 0, 낮음[j],0);
ObjectSet(DnAlert, OBJPROP_ARROWCODE, 74);
}
//---- 완료
반환(0);
}
// ------------------ -------------------