Laman utama Indikator Teknikal Siaran

PPO_SignAlert: Indikator untuk MetaTrader 5 yang Menghasilkan Isyarat Perdagangan

Lampiran
16108.zip (22.04 KB, Muat turun 0 kali)

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:

  1. Parameter input baru telah ditambah:
  2. 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
    
  3. Tiga fungsi baru telah ditambah di akhir kod indikator:
  4. //+------------------------------------------------------------------+
    //| 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//---
      }
    //+------------------------------------------------------------------+
  5. Panggilan ke fungsi BuySignal() dan SellSignal() telah ditambah selepas kitaran pengiraan indikator dalam blok OnCalculate():
  6. 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.1. Indikator PPO_SignAlert pada carta

Fig.2. Indikator PPO_SignAlert. Menghasilkan amaran.

Fig.2. Indikator PPO_SignAlert. Menghasilkan amaran.

Siaran berkaitan

Komen (0)