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