GOLDRULE2/Goldrule2.mql5

44 lines
2 KiB
Text
Raw Permalink Normal View History

//+------------------------------------------------------------------+
//| GOLD RULE2 - XAUUSD ONLY 🪙 IPHONE READY |
//+------------------------------------------------------------------+
#property version "1.00"
#property strict
input string Symbol="XAUUSD";
input double Risk=1.0;
input int SL=20;
input int TP=40;
int T1=8,T2=11;
int T3=16,T4=18;
double ExtH,ExtL;
bool ExtOK=false,CloseOK=false;
double CRTH=0,CRTL=0;
void OnTick()
{
if(Symbol()!=Symbol) return;
MqlDateTime dt; TimeCurrent(dt); int H=dt.hour;
bool Morn=(H>=T1&&H<=T2);
bool Even=(H>=T3&&H<=T4);
if(!Morn&&!Even) return;
if(Morn&&!ExtOK) { ExtH=iHigh(_Symbol,PERIOD_H1,1); ExtL=iLow(_Symbol,PERIOD_H1,1); ExtOK=true; }
if(ExtOK&&!CloseOK) {
double O=iOpen(_Symbol,PERIOD_M15,0); double C=iClose(_Symbol,PERIOD_M15,0);
if((C>=ExtH&&O<=ExtH)||(C<=ExtL&&O>=ExtL)) CloseOK=true;
}
if(CloseOK) {
if(CRTH==0) { bool Dn=(iClose(_Symbol,PERIOD_M15,1)<iOpen(_Symbol,PERIOD_M15,1)&&iClose(_Symbol,PERIOD_M15,0)>iOpen(_Symbol,PERIOD_M15,0)); if(Dn) CRTH=iHigh(_Symbol,PERIOD_M15,0); }
if(CRTL==0) { bool Up=(iClose(_Symbol,PERIOD_M15,1)>iOpen(_Symbol,PERIOD_M15,1)&&iClose(_Symbol,PERIOD_M15,0)<iOpen(_Symbol,PERIOD_M15,0)); if(Up) CRTL=iLow(_Symbol,PERIOD_M15,0); }
if(CRTH>0&&OrdersTotal()==0&&iHigh(_Symbol,PERIOD_M15,0)>=CRTH&&Check()) {Sell(); Reset();}
if(CRTL>0&&OrdersTotal()==0&&iLow(_Symbol,PERIOD_M15,0)<=CRTL&&Check()) {Buy(); Reset();}
}
}
bool Check() { return(iHigh(_Symbol,PERIOD_M1,2)<iLow(_Symbol,PERIOD_M1,0)||iLow(_Symbol,PERIOD_M1,2)>iHigh(_Symbol,PERIOD_M1,0)); }
void Buy() { double Lot=NormalizeDouble(AccountBalance()*Risk/100/(SL*10),2); OrderSend(_Symbol,0,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point,"BUY",101,0,Green); }
void Sell() { double Lot=NormalizeDouble(AccountBalance()*Risk/100/(SL*10),2); OrderSend(_Symbol,1,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point,"SELL",102,0,Red); }
void Reset() {ExtOK=false;CloseOK=false;CRTH=0;CRTL=0;}