Thema: Macd
Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 20.10.21
Sirocool Sirocool ist offline
Mitglied
 
Registriert seit: Feb 2014
Ort: Berlin
Beiträge: 42
Sirocool befindet sich auf einem aufstrebenden Ast
Standard Macd

Code:
#property copyright     "©2007-2021 SHARK_MACD_CLASSIC_V.21. Alle Rechte vorbehalten "
//#property strict
#property description   "*~~* SHARK_MACD_CLASSIC_V.21 *~~*"
#property description   "                                 "
#property description   "  The MACD Indicator With Alert  "
#property description   "                                 "
#property description   "WARNING : You use this software at your own risk."
#property description   "The creator of these plugins cannot be held responsible for damage or loss."
#property description   "                                 "

//#property icon          "\\Files\\Shark.ico"



#include <stdlib.mqh>
#include <stderror.mqh>




#property indicator_separate_window
#property indicator_buffers  5
#property indicator_color1   C'64,121,246'    // Dunkelblau
#property indicator_color2   C'248,86,13'    //  Orange
#property indicator_color3   clrSnow
#property indicator_color4   clrFireBrick
#property indicator_color5   clrForestGreen //     Grün


#property indicator_level1  0;

#property indicator_levelcolor clrLightSlateGray
#property indicator_levelstyle DRAW_ZIGZAG


//+------------------------------------------------------------------+
//| SIGNALMENÜ                                                       |
//+------------------------------------------------------------------+
enum ENUM_MACD_ALERT
  {
   OFF = 0,
   ON =  1,
  };




bool initFinished=false;

extern string  aSHARK_Administration ="~~* MACD_Administration *~~";

extern int    FAST_EMA = 12;
extern int    SLOW_EMA = 26;
extern int    MACD_SMA  = 9;

extern ENUM_APPLIED_PRICE USE_ON = PRICE_CLOSE;

//extern ENUM_MA_METHOD MA_Method = MODE_SMA; // MA Method
//extern ENUM_STO_PRICE Price_Field = 0; // Price Field 0 = Low/High or 1 = Close/Close)


extern string  bSHARK_Administration ="~~* MACD_Arrows *~~"; //RSI_Settings

extern ENUM_MACD_ALERT PopupAlerts   = true;


extern ENUM_MACD_ALERT   PushNotificationAlerts = false;
extern ENUM_MACD_ALERT   SoundAlerts            = false;
//extern string SoundFileLong          = "alert.wav";
//extern string SoundFileShort         = "alert2.wav";
//extern bool   EmailAlerts            = false;







datetime time_alert; //used when sending alert


double SHARK_BUFFER_M[],SHARK_BUFFER_S[],SHARK_BUFFER_T[],SHARK_BUFFER_DN[],SHARK_BUFFER_UP[];





//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(5);
   IndicatorDigits(Digits+1);//max. 2

   SetIndexBuffer(0,SHARK_BUFFER_M,INDICATOR_DATA);
   SetIndexStyle(0,DRAW_LINE,EMPTY,1);
   SetIndexDrawBegin(0,FAST_EMA+SLOW_EMA);
   SetIndexLabel(0,"MAIN");

   SetIndexBuffer(1,SHARK_BUFFER_S,INDICATOR_DATA);
   SetIndexStyle(1,DRAW_LINE,EMPTY,1);
//SetIndexDrawBegin(1,MACD_SMA);
   SetIndexLabel(1,"SIGNAL");

   SetIndexBuffer(2,SHARK_BUFFER_T,INDICATOR_DATA);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY_VALUE,3);
   SetIndexLabel(2,NULL);

   SetIndexBuffer(3,SHARK_BUFFER_DN,INDICATOR_DATA);
   SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,3);
   SetIndexLabel(3,NULL);

   SetIndexBuffer(4,SHARK_BUFFER_UP,INDICATOR_DATA);
   SetIndexStyle(4,DRAW_HISTOGRAM,EMPTY,3);
   SetIndexLabel(4,NULL);

   IndicatorShortName("SHARK_MACD_CLASSIC_V.21"+"("+FAST_EMA+","+SLOW_EMA+","+MACD_SMA+","+PriceTypeToString(USE_ON)+","+_Periods_of_Time(IntegerToString(Period()))+")");
   if(FAST_EMA < 0)
     {
      Print("Incorrect value for input variable InpPeriod = ",FAST_EMA);
      return(INIT_FAILED);
     }
   return(0);
  }


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectsDeleteAll();
//deleteArrows();
   return(0);
  }

//+------------------------------------------------------------------+
int start()
  {
//_OVERLINIEN();

   int counted_bars=IndicatorCounted(),limit,i;

   if(counted_bars<0)
      return(-1);
   if(counted_bars>0)
      counted_bars--;

   limit=MathMin(Bars-counted_bars,Bars-1);

   for(i = limit; i >= 0 && !IsStopped(); i--)
     {
      //+------------------------------------------------------------------+

      SHARK_BUFFER_M[i] = iMA(Symbol(),Period(),12,0,MODE_EMA,PRICE_CLOSE,i)- iMA(Symbol(),Period(),26,0,MODE_EMA,PRICE_CLOSE,i);
      SHARK_BUFFER_S[i] = iMAOnArray(SHARK_BUFFER_M,0,9,0,MODE_SMA,i);
      SHARK_BUFFER_T[i] = (SHARK_BUFFER_M[i] - SHARK_BUFFER_S[i]);

      //+------------------------------------------------------------------+
      //| TRENDBESTIMMUNG                                                  |
      //+------------------------------------------------------------------+
      if((SHARK_BUFFER_T[i+2] < 0 && SHARK_BUFFER_T[i] > 0))
        {SHARK_BUFFER_UP[i+1] = SHARK_BUFFER_T[i+1];}

      if((SHARK_BUFFER_T[i+2]> 0 && SHARK_BUFFER_T[i] < 0 ))
        {SHARK_BUFFER_DN[i+1] = SHARK_BUFFER_T[i+1];}

      //+------------------------------------------------------------------+
      //| ALERTSIGNALE                                                     |
      //+------------------------------------------------------------------+
      if((SHARK_BUFFER_T[i+2] < 0 && SHARK_BUFFER_T[i] > 0))
        {
         if(i == 0 && Time[0] != time_alert)
           {
            myAlert("Indicator", "LONG");
            time_alert = Time[0];
           }
        }

      if((SHARK_BUFFER_T[i+2]> 0 && SHARK_BUFFER_T[i] < 0 ))
        {
         if(i == 0 && Time[0] != time_alert)
           {
            myAlert("indicator", "SHORT");
            time_alert = Time[0];
           }
        }



     }

   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string PriceTypeToString(int pt)
  {
   string answer;
   switch(pt)
     {
      case 0:
         answer = "Close"    ;
         break;
      case 1:
         answer = "Open"     ;
         break;
      case 2:
         answer = "High"     ;
         break;
      case 3:
         answer = "Low"      ;
         break;
      case 4:
         answer = "Median"   ;
         break;
      case 5:
         answer = "Typical"  ;
         break;
      case 6:
         answer = "Wighted"  ;
         break;
      default:
         answer = "Invalid price field requested";
         Alert(answer);
     }
   return(answer);
  }

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|  Time_Periods                                                    |
//+------------------------------------------------------------------+
string _Periods_of_Time(int pot)
  {
   string Timetemp;
   switch(pot)
     {
      case 1 :
         Timetemp = "M1";
         break;

      case 5 :
         Timetemp = "M5";
         break;

      case 15 :
         Timetemp = "M15";
         break;

      case 30 :
         Timetemp = "M30";
         break;

      case 60 :
         Timetemp = "H1";
         break;

      case 240 :
         Timetemp = "H4";
         break;

      case 1440 :
         Timetemp = "D1";
         break;

      case 10080 :
         Timetemp = "W1";
         break;

      case 43200 :
         Timetemp = "MN";
         break;

      default:
         Timetemp = "Invalid time field requested";
         Alert(Timetemp);

     }
   return(Timetemp);
  }







//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void myAlert(string type, string message)
  {
   string Temp_Message = type+" | SHARK_MACD_CLASSIC_V.21"+" | Timechart.: "+_Periods_of_Time(IntegerToString(Period()))+" | Symbol.: "+Symbol()+" | Signal.: "+ message;
   if(type == "print")
      Print(message);
   else
      if(type == "error")
        {
         Print(type+" | MACD @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
        }
      else
         if(type == "Indicator")
           {
            if(PopupAlerts)
               Alert(Temp_Message);                                   //type+" |SHARK_MACD_CLASSIC_V.21 @ "+Symbol()+","+_Periods_of_Time(IntegerToString(Period()))+" | "+message);
            //if(EmailAlerts) SendMail("SHARK_MACD_CLASSIC_V.21"+AccountNumber()+", "+WindowExpertName()+" - Alert on "+Symbol()+", period ","SHARK_MACD_CLASSIC_V.21"+Symbol()+", period ");
            if(SoundAlerts)
               PlaySound("alert.wav");
            if(PushNotificationAlerts)
               SendNotification(Temp_Message);//"SHARK_MACD_CLASSIC_V.21"+AccountNumber()+", "+WindowExpertName()+message);
           }
  }