#property copyright "forex-station.com" #property link "http://www.forex-station.com" #property description "Mastermind: AntiAlligator.mq4" #property indicator_chart_window #property indicator_maximum 1 #property indicator_minimum 0 #property indicator_buffers 2 #property indicator_color1 DodgerBlue #property indicator_color2 Red enum enDouble1{arrows,dot}; enum enDouble2{BW,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15}; input enDouble1 Visualization = arrows; input enDouble2 Methods = m1; extern bool Reverse = false; extern int Jaw = 13; extern int JawsShift = 8; extern int Lips = 5; extern int LipsShift = 3; input int Sniper_Y_3 = 3; extern ENUM_MA_METHOD MA_Method = MODE_SMMA; extern ENUM_APPLIED_PRICE Price = PRICE_MEDIAN; extern bool alertsOn = false; extern bool alertsOnCurrent = false; extern bool alertsMessage = false; extern bool alertsSend = false; extern bool alertsEmail = false; extern bool alertsSound = false; extern string Sound = "alert3.wav"; double arsh; double B0[],B1[]; int init(){ IndicatorBuffers(2); int ar0,ar1; if(Visualization==arrows){ar0=233;ar1=234;}else{ar0=167;ar1=167;} SetIndexBuffer(0,B0); SetIndexStyle(0,3); SetIndexArrow(0,ar0); SetIndexBuffer(1,B1); SetIndexStyle(1,3); SetIndexArrow(1,ar1); IndicatorShortName("A_"+Methods); IndicatorDigits(0); for(int i=1000;i>0;i--){arsh=arsh+(High[i]-Low[i]);}arsh=arsh/1000/Sniper_Y_3; return(0);} int start(){int i,limit=Bars-IndicatorCounted()-1; double jaw,lips; for(i=limit;i>=0;i--){jaw=iMA(NULL,0,Jaw,JawsShift,MA_Method,Price,i);lips=iMA(NULL,0,Lips,LipsShift,MA_Method,Price,i); switch(Methods){ case 1: if(Close[i]High[i+1]+Low[i+1] && Close[i]>High[i+1]){B0[i]=Low[i]-arsh;}else{B0[i]=EMPTY_VALUE;} if(Close[i]>lips && lips>jaw && Close[i+1]*2jaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]>High[i+1]){B0[i]=Low[i]-arsh;}else{B0[i]=EMPTY_VALUE;} if(Close[i]>lips && lipsHigh[i+1]){B0[i]=Low[i]-arsh;}else{B0[i]=EMPTY_VALUE;} if(Close[i]>lips && lips>jaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]High[i+1]+Low[i+1] && Close[i]lips && lips>jaw && Close[i+1]*2Low[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break; case 5: if(Close[i]jaw && Close[i+1]*2High[i+1]){B0[i]=Low[i]-arsh;}else{B0[i]=EMPTY_VALUE;} if(Close[i]>lips && lipsHigh[i+1]+Low[i+1] && Close[i]lips && lips>jaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]>Low[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break; case 7: if(Close[i]jaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]lips && lipsLow[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break; case 8: if(Close[i]jaw && Close[i+1]*2lips && lipsHigh[i+1]+Low[i+1] && Close[i]>Low[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break; case 9: if(Close[i]>lips && lips>jaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]>High[i+1]){B0[i]=Low[i]-arsh;}else{B0[i]=EMPTY_VALUE;} if(Close[i]lips && lipsHigh[i+1]){B0[i]=Low[i]-arsh;}else{B0[i]=EMPTY_VALUE;} if(Close[i]jaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]lips && lipsHigh[i+1]+Low[i+1] && Close[i]jaw && Close[i+1]*2Low[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break; case 12: if(Close[i]>lips && lips>jaw && Close[i+1]*2High[i+1]){B0[i]=Low[i]-arsh;}else{B0[i]=EMPTY_VALUE;} if(Close[i]High[i+1]+Low[i+1] && Close[i]lips && lipsjaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]>Low[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break; case 14: if(Close[i]>lips && lips>jaw && Close[i+1]*2>High[i+1]+Low[i+1] && Close[i]Low[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break; case 15: if(Close[i]>lips && lips>jaw && Close[i+1]*2High[i+1]+Low[i+1] && Close[i]>Low[i+1]){B1[i]=High[i]+arsh;}else{B1[i]=EMPTY_VALUE;}break;} if(B0[i]!=EMPTY_VALUE && Reverse==true){B0[i]=EMPTY_VALUE;B1[i]=High[i]+arsh;}else if(B1[i]!=EMPTY_VALUE && Reverse==true){B1[i]=EMPTY_VALUE;B0[i]=Low[i]-arsh;}} if(alertsOn==true){manageAlerts();} return(0); } void manageAlerts(){ if(alertsOnCurrent) int whichBar=0; else whichBar=1; if(B0[whichBar]!=EMPTY_VALUE){doAlert(whichBar,"buy");} if(B1[whichBar]!=EMPTY_VALUE){doAlert(whichBar,"sell");} } void doAlert(int forBar,string doWhat){ static string previousAlert="nothing"; static datetime previousTime; string message; if(previousAlert!=doWhat || previousTime!=Time[forBar]){ previousAlert=doWhat; previousTime=Time[forBar]; message="A_"+Methods+" "+Symbol()+" "+Period()+" "+doWhat+" "+Hour()+":"+Minute(); if(alertsMessage)Alert(message); if(alertsSend) SendNotification(message); if(alertsEmail) SendMail("",message); if(alertsSound) PlaySound(Sound);} }