Saya sedang mencoba indior pertama saya dan sangat menghargai bantuan dari pembuat kode MQL berpengalaman.
Skrip di bawah ini diturunkan dari contoh skrip MACD dan dimodifikasi untuk menempatkan panah ATAS ketika MACD telah melewati garis nol setelah 3 bar berturut-turut di atas garis nol dan juga panah BAWAH jika MACD melintasi di bawah garis nol dengan 3 bar berturut-turut Di bawah nol.
Saya mengalami masalah - tidak ada panah yang muncul sama sekali.
Jika Anda dapat melihat ke mana saya tersesat, ini akan sangat membantu.
terima kasih
# hak cipta properti Hak cipta © 2007, Systrader
#tautan properti http://www....
//---- pengaturan dalam ruangan
#property indior_separate_window
#properti indior_buffers 4
#properti indior_color1 Aqua
# properti indior_color2 Merah
#properti indior_color3 Hijau
# properti indior_color4 Merah
#properti indior_width1 2
//---- parameter dalam ruangan
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- buffer dalam ruangan
ganda Macd[];
sinyal ganda[];
//---- menangkal
int penghitung;
// -------------------------------------------------- -------------------
//| Fungsi inisialisasi indior kustom |
// -------------------------------------------------- -------------------
int init()
{
//---- pengaturan gambar
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetIndexPanah(2,233);
SetIndexPanah(3.234);
SetIndexDrawBegin(1,SignalSMA);
AngkaIndior(Digit 1);
//---- pemetaan buffer dalam ruangan
SetIndexBuffer(0,Macd);
SetIndexBuffer(1,Sinyal);
//---- nama untuk DataWindow dan label subwindow dalam
IndiorShortName(MACDZC( FastEMA , SlowEMA , SignalSMA ));
SetIndexLabel(0,MACD);
SetIndexLabel(1,Sinyal);
//---- inisialisasi selesai
kembali(0);
}
// -------------------------------------------------- -------------------
//| Moving Average Konvergensi/Divergensi |
// -------------------------------------------------- -------------------
int mulai()
{
int batas;
int count_bars=IndiorCounted();
//---- bilah yang dihitung terakhir akan dihitung ulang
if(counted_barsgt;0) count_bars--;
limit=Bar-counted_bars;
//---- macd dihitung dalam buffer pertama
untuk(int i=0; ilt;batas; i )
Macd[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- garis sinyal dihitung dalam buffer ke-2
untuk(i=0; ilt;batas; i )
Signal[i]=iMAOnArray(Macd,Batang,SignalSMA,0,MODE_SMA,i);
//---- Hitung jika 3-bar macd di atas atau di bawah nol
penghitung=0;
//mulai dari bar ke-3 untuk memungkinkan pengecekan dari 3 bar sebelumnya
untuk(int j=3; jlt;batas; j )
{
if (Macd[j] lt; 0) counter--;
if (Macd[j] gt; 0) penghitung ;
}
//hitung jika 3 batang telah terlihat di atas garis nol
if (penghitung gt; 2) {
SetIndexStyle(2,DRAW_ARROW);
ObjectCreate(UpAlert, OBJ_ARROW, 0, High[j],0);
ObjectSet(UpAlert, OBJPROP_ARROWCODE, 74);
}
//hitung jika 3 batang terlihat di bawah garis nol
if (penghitung lt; -2)
{
SetIndexStyle(3,DRAW_ARROW);
ObjectCreate(DnAlert, OBJ_ARROW, 0, Low[j],0);
ObjectSet(DnAlert, OBJPROP_ARROWCODE, 74);
}
//---- selesai
kembali(0);
}
// -------------------------------------------------- -------------------