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