Selamat datang, rakan-rakan pedagang! Hari ini, kita akan membincangkan mengenai PPO_SignAlert, indikator yang sangat berguna untuk platform MetaTrader 5. Indikator ini menggunakan kadar perubahan harga yang diproses secara relatif untuk memberikan isyarat perdagangan.
Salah satu ciri menarik dari PPO_SignAlert adalah keupayaannya untuk memberikan amaran melalui email dan notifikasi push ke peranti mudah alih anda. Mari kita lihat lebih dekat beberapa perubahan yang telah dilakukan pada kod indikator ini untuk mengimplementasikan ciri-ciri tersebut:
- Parameter input baru telah ditambah:
- Tiga fungsi baru telah ditambah di akhir kod indikator:
- Panggilan ke fungsi BuySignal() dan SellSignal() telah ditambah selepas kitaran pengiraan indikator dalam blok OnCalculate():
input uint NumberofBar=1;//Bilangan bar untuk isyarat input bool SoundON=true; //Aktifkan amaran input uint NumberofAlerts=2;//Bilangan amaran input bool EMailON=false; //Aktifkan penghantaran isyarat melalui email input bool PushON=false; //Aktifkan penghantaran isyarat ke peranti mudah alih
//+------------------------------------------------------------------+ //| Fungsi isyarat beli | //+------------------------------------------------------------------+ void BuySignal(string SignalSirname, // nama indikator untuk mesej email dan push double &BuyArrow[], // buffer indikator dengan isyarat beli const int Rates_total, // jumlah bar semasa const int Prev_calculated, // bilangan bar pada tick sebelumnya const double &Close[], // harga tutup const int &Spread[]) // spread { u//--- static uint counter=0; if(Rates_total!=Prev_calculated) counter=0; bool BuySignal=false; bool SeriesTest=ArrayGetAsSeries(BuyArrow); int index; if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; if(NormalizeDouble(BuyArrow[index],_Digits) && BuyArrow[index]!=EMPTY_VALUE) BuySignal=true; if (BuySignal && counter<=NumberofAlerts) { counter++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); SeriesTest=ArrayGetAsSeries(Close); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; double Ask=Close[index]; double Bid=Close[index]; SeriesTest=ArrayGetAsSeries(Spread); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; Bid+=Spread[index]; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPeriod=GetStringTimeframe(ChartPeriod()); if(SoundON) Alert("BUY signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod); if(EMailON) SendMail(SignalSirname+": BUY signal alert","BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod); if(PushON) SendNotification(SignalSirname+": BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod); } u//--- } //+------------------------------------------------------------------+
u//--- BuySignal("PPO_Sign",BuyBuffer,rates_total,prev_calculated,close,spread); SellSignal("PPO_Sign",SellBuffer,rates_total,prev_calculated,close,spread); u//---
Di mana BuyBuffer dan SellBuffer ialah nama buffer indikator untuk menyimpan isyarat beli dan jual. Pastikan nilai kosong dalam buffer indikator ditetapkan kepada zeros atau EMPTY_VALUE.
Indikator ini menggunakan kelas daripada perpustakaan SmoothAlgorithms.mqh (salin ke <terminal_data_folder>\MQL5\Include). Penggunaan kelas ini telah diterangkan dengan terperinci dalam artikel "Averaging Price Series for Intermediate Calculations Without Using Additional Buffers".
Indicator ini asalnya ditulis dalam MQL4 dan pertama kali diterbitkan di Code Base pada 08.03.2008.

Fig.1. Indikator PPO_SignAlert pada carta
Fig.2. Indikator PPO_SignAlert. Menghasilkan amaran.
Siaran berkaitan
- Indikator Pembukaan Rentang Untuk MetaTrader 5: Panduan Lengkap
- Panduan Volume Profile + Range v6.0 untuk MetaTrader 5: Indikator Trading Utama
- WeightOscillator_Alert: Indikator Trend untuk MetaTrader 5 dengan Pemberitahuan
- ColorXdinMA_Alert: Indikator Trend untuk MetaTrader 5 dengan Notifikasi
- iSpread: Indikator Spread untuk Perdagangan Pasangan di MetaTrader 5
