Laman utama Indikator Teknikal Siaran

BeginnerAlert: Indikator Berguna untuk MetaTrader 5

Lampiran
16448.zip (3.75 KB, Muat turun 0 kali)

Pemilik sebenar:

EarnForex

Indikator ini memaparkan ekstremum trend (maksimum dan minimum) yang boleh digunakan sebagai titik sokongan dan rintangan. Ia sangat berguna untuk menentukan saluran trend semasa. Selain itu, indikator ini dilengkapi dengan pemberitahuan, yang menghantar e-mel dan notifikasi terus ke peranti mudah alih anda.

BeginnerAlert adalah indikator yang mudah yang menggunakan tempoh tertentu untuk mencari nilai maksimum dan minimum, dan menandainya dengan titik-titik.

Beberapa perubahan telah dibuat dalam kod indikator ini untuk melaksanakan pemberitahuan, mesej e-mel dan notifikasi:

  1. Parameter input baru telah diperkenalkan:
    input uint NumberofBar=1;//Nombor bar untuk isyarat
    input bool SoundON=true; //Aktifkan pemberitahuan bunyi
    input uint NumberofAlerts=2;//Bilangan pemberitahuan
    input bool EMailON=false; //Aktifkan penghantaran isyarat melalui e-mel
    input bool PushON=false; //Aktifkan penghantaran isyarat ke peranti mudah alih
    
  2. Tiga fungsi baru telah ditambah di akhir kod indikator: BuySignal(), SellSignal() dan GetStringTimeframe()
    //+------------------------------------------------------------------+
    //| Fungsi isyarat beli                                               |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // teks nama indikator untuk mesej e-mel dan notifikasi
                   double &BuyArrow[],        // buffer indikator dengan isyarat beli
                   const int Rates_total,     // bilangan bar semasa
                   const int Prev_calculated, // bilangan bar pada tick sebelumnya
                   const double &Close[],     // harga penutupan
                   const int &Spread[])       // spread
      {
    //---
       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);
         }
    
    //---
      }
    //+------------------------------------------------------------------+
    //| Fungsi isyarat jual                                             |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // teks nama indikator untuk mesej e-mel dan notifikasi
                    double &SellArrow[],       // buffer indikator dengan isyarat jual
                    const int Rates_total,     // bilangan bar semasa
                    const int Prev_calculated, // bilangan bar pada tick sebelumnya
                    const double &Close[],     // harga penutupan
                    const int &Spread[])       // spread
      {
    //---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool SellSignal=false;
       bool SeriesTest=ArrayGetAsSeries(SellArrow);
       int index;
       if(SeriesTest) index=int(NumberofBar);
       else index=Rates_total-int(NumberofBar)-1;
       if(NormalizeDouble(SellArrow[index],_Digits) && SellArrow[index]!=EMPTY_VALUE) SellSignal=true;
       if(SellSignal && 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("SELL signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
          if(EMailON) SendMail(SignalSirname+": SELL signal alert","SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
          if(PushON) SendNotification(SignalSirname+": SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  Mendapatkan timeframe sebagai string                               |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    
  3. Beberapa panggilan kepada fungsi BuySignal() dan SellSignal() telah ditambah selepas kitaran pengiraan indikator dalam blok OnCalculate()
    //---     
       BuySignal("BeginnerAlert",BuyBuffer,rates_total,prev_calculated,Close,spread);
       SellSignal("BeginnerAlert",SellBuffer,rates_total,prev_calculated,Close,spread);
    //--- 
    

Di mana BuyBuffer dan SellBuffer adalah nama buffer indikator untuk menyimpan isyarat beli dan jual. Nilai kosong dalam buffer indikator sama ada sifar atau EMPTY_VALUE mesti ditetapkan.

Diharapkan hanya satu panggilan kepada fungsi BuySignal() dan SellSignal() akan digunakan dalam blok OnCalculate() kod indikator.

Asal indikator ini ditulis dalam MQL4 dan pertama kali diterbitkan dalam Code Base pada 03.09.2008.

Fig1. Indikator BeginnerAlert pada carta

Fig1. Indikator BeginnerAlert pada carta

Fig.2. Indikator BeginnerAlert Menghasilkan pemberitahuan.

Fig.2. Indikator BeginnerAlert Menghasilkan pemberitahuan.

Siaran berkaitan

Komen (0)