Thema: Neues Projekt
Einzelnen Beitrag anzeigen
  #7 (permalink)  
Alt 07.12.21
Sirocool Sirocool ist offline
Mitglied
 
Registriert seit: Feb 2014
Ort: Berlin
Beiträge: 42
Sirocool befindet sich auf einem aufstrebenden Ast
Standard Project MACD

Project 2



Kann mal bitte einer drüber schauen mit den alert wenn man von chart zu chart weckselt leiert der sehr lange oder kommt keine rückmeldung im browser das dauert ca 2 min dann geht wieder.

Code:
//+------------------------------------------------------------------+
//|                 SHARK_MACD_CLASSIC_V.2.1.0 - 1221                |
//|                         Copyright 2020                           |
//|                     www.expert-advisor.com                       |
//+------------------------------------------------------------------+
/*
#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  7
#property indicator_level1  0;
#property indicator_levelcolor C'117,134,150'
#property indicator_levelstyle DRAW_ZIGZAG

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

extern string  a_SHARK_SETTINGS ="~~* MACD SETTINGS *~~";

extern int    FAST_LENGTH = 12;
extern int    SLOW_LENGTH = 26;

extern ENUM_APPLIED_PRICE SOURCE = PRICE_CLOSE;

extern int    SIGNAL_SMOOTHING  = 9;

extern  ENUM_MA_METHOD OSCILLATOR_MA_TYPE = 1;
extern  ENUM_MA_METHOD SIGNAL_LINE_MA_TYPE = 1;

extern string  b_SHARK_SETTINGS ="~~* COLOR SETTINGS *~~";

extern color MACD_LINIE   = C'41,98,255';
extern color SIGNAL_LINIE = C'255,109,0';

extern string  c_SHARK_SETTINGS ="~~* COLOR HISTORGRAM *~~";

extern color ABOVE_UP   = C'38,166,154';
extern color ABOVE_DN   = C'178,223,219';

extern color BELOW_DN   = C'255,82,82';
extern color BELOW_UP   = C'255,205,210';

extern string d_SHARK_SETTINGS ="~~* ALERT SETTINGS *~~";

extern bool PopupAlerts   = true;

//Premium noch in Arbeit

//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_DN_UP[],SHARK_BUFFER_UP[],SHARK_BUFFER_UP_DN[];




bool ExtParameters=false;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(7);
   IndicatorDigits(Digits);//max. 2

   SetIndexBuffer(0,SHARK_BUFFER_M,INDICATOR_DATA); // MACD_LINIE
   SetIndexStyle(0,DRAW_LINE,EMPTY,1,MACD_LINIE);
   SetIndexDrawBegin(0,FAST_LENGTH);
   SetIndexLabel(0,"MAIN");

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

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


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

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

   SetIndexBuffer(5,SHARK_BUFFER_UP_DN,INDICATOR_DATA);
   SetIndexStyle(5,DRAW_HISTOGRAM,EMPTY,3,ABOVE_DN);
   SetIndexLabel(5,NULL);

   SetIndexBuffer(6,SHARK_BUFFER_DN_UP,INDICATOR_DATA);
   SetIndexStyle(6,DRAW_HISTOGRAM,EMPTY,3,BELOW_UP);
   SetIndexLabel(6,NULL);


   IndicatorShortName("SHARK_MACD_CLASSIC_V.21"+"( "+ FAST_LENGTH + " " + SLOW_LENGTH + " " +PriceTypeToString(SOURCE)+" " + SIGNAL_SMOOTHING +" " +  _MA_METHOD_TYPETOSTRING(OSCILLATOR_MA_TYPE)+" " + _MA_METHOD_TYPETOSTRING(SIGNAL_LINE_MA_TYPE) +  " )");
//--- check for input parameters
   if(FAST_LENGTH <=1 || SLOW_LENGTH <=1 || SIGNAL_SMOOTHING<=1 || FAST_LENGTH >= SLOW_LENGTH)
     {
      Print("Wrong input parameters");
      ExtParameters=false;
      return(INIT_FAILED);
     }
   else
      ExtParameters=true;
//--- initialization done
   return(INIT_SUCCEEDED);
  }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {

//ObjectsDeleteAll();
//deleteArrows();
   return(0);
  }

//+------------------------------------------------------------------+
int start()
  {
   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                                                     |
      //+------------------------------------------------------------------+

      SHARK_BUFFER_M[i] = iMA(Symbol(),Period(),FAST_LENGTH,0,OSCILLATOR_MA_TYPE,PRICE_CLOSE,i)-iMA(Symbol(),Period(), SLOW_LENGTH,0,OSCILLATOR_MA_TYPE,PRICE_CLOSE,i);
      SHARK_BUFFER_S[i] = iMAOnArray(SHARK_BUFFER_M,0,SIGNAL_SMOOTHING,0,SIGNAL_LINE_MA_TYPE,i);
      SHARK_BUFFER_T[i] = (SHARK_BUFFER_M[i] - SHARK_BUFFER_S[i]);

      //+------------------------------------------------------------------+
      //| SHARK_TREND_UP                                                   |
      //+------------------------------------------------------------------+
      if((SHARK_BUFFER_T[i] > 0)&& (SHARK_BUFFER_T[i+1] < SHARK_BUFFER_T[i]))
        {
         SHARK_BUFFER_UP[i]=SHARK_BUFFER_T[i];
        }
      else
         if((SHARK_BUFFER_T[i] > 0)&& (SHARK_BUFFER_T[i+1] > SHARK_BUFFER_T[i]))
           {
            SHARK_BUFFER_UP_DN[i]=SHARK_BUFFER_T[i];
           }
      //+------------------------------------------------------------------+
      //| SHARK_TREND_DN                                                   |
      //+------------------------------------------------------------------+
      if((SHARK_BUFFER_T[i] < 0)&& (SHARK_BUFFER_T[i+1] > SHARK_BUFFER_T[i]))
        {
         SHARK_BUFFER_DN[i]=SHARK_BUFFER_T[i];
        }
      else
         if((SHARK_BUFFER_T[i] < 0)&& (SHARK_BUFFER_T[i+1] < SHARK_BUFFER_T[i]))
           {
            SHARK_BUFFER_DN_UP[i]=SHARK_BUFFER_T[i];
           }

      //+------------------------------------------------------------------+
      //| ALERTSIGNALE                                                     |
      //+------------------------------------------------------------------+
      if((SHARK_BUFFER_M[i] >= 0) && (SHARK_BUFFER_S[i] >= 0))
         if((SHARK_BUFFER_T[i+1] > 0)&&(SHARK_BUFFER_T[i] < 0))
           {
            if(i == 0 && Time[0] != time_alert)
              {
               Alert("SIGNAL","SHORT",Symbol(),Bid);
               time_alert = Time[0];
              }

            if((SHARK_BUFFER_M[i] <= 0) && (SHARK_BUFFER_S[i] <= 0))
            if((SHARK_BUFFER_T[i+1] < 0) && (SHARK_BUFFER_T[i] > 0))
              {
               if(i == 0 && Time[0] != time_alert)
                 {
                  _MACD_Alert("SIGNAL","LONG",Symbol(),Ask);
                  time_alert = Time[0];
                 }
              }

           }



     }

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

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string _MA_METHOD_TYPETOSTRING(int MATYP)
  {
   string Typ;
   switch(MATYP)
     {
      case 0:
         Typ = "SMA"    ;
         break;
      case 1:
         Typ = "EMA"    ;
         break;
      default:
         Typ = "Invalid price field requested";
         Alert(Typ);
     }
   return(Typ);
  }

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

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| ALERT                                                            |
//+------------------------------------------------------------------+
void _MACD_Alert(string Type, string Messagetyp,string Paar, double Price)
  {
   string Temp_Message = "Live "+" "+Type +" "+ Messagetyp + ":"+Paar+" " +Price;
   if(Type == "Print")
      Print(Messagetyp);
   else
      if(Type == "Error")
        {
         Print(Type+" | MACD @ "+Symbol()+","+IntegerToString(Period())+" | "+Messagetyp);
        }
      else
         if(Type == "SIGNAL")
           {
            if(PopupAlerts)
               Alert(Temp_Message);
           }

  }
//+------------------------------------------------------------------+


/*
//+------------------------------------------------------------------+
//| noch in arbeit                                                   |
//+------------------------------------------------------------------+
void drawArrow(int i,color theColor,int theCode,bool up)
  {
   string name = "SHARK_RSI_CLASSIC_V.21"+":"+Time[i];
   double gap  = 3.0*iATR(NULL,0,10,i)/4.0; //20

   ObjectCreate(name,OBJ_ARROW,0,Time[i],0);
   ObjectSet(name,OBJPROP_ARROWCODE,theCode);
   ObjectSet(name,OBJPROP_COLOR,theColor);
   ObjectSet(name,OBJPROP_WIDTH,1);
   if(up)
      ObjectSet(name,OBJPROP_PRICE1,High[i]+gap);
   else
      ObjectSet(name,OBJPROP_PRICE1,Low[i] -gap);
  }


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deleteArrows()
  {
   string lookFor       = "SHARK_RSI_CLASSIC_V.21"+":";
   int    lookForLength = StringLen(lookFor);
   for(int i=ObjectsTotal()-1; i>=0; i--)
     {
      string objectName = ObjectName(i);
      if(StringSubstr(objectName,0,lookForLength) == lookFor)
         ObjectDelete(objectName);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deleteArrow(datetime time)
  {
   string lookFor ="SHARK_RSI_CLASSIC_V.21"+":"+time;
   ObjectDelete(lookFor);
  }


//+------------------------------------------------------------------+
*/

Geändert von Sirocool (07.12.21 um 16:51 Uhr)