44 lines
No EOL
2 KiB
Text
44 lines
No EOL
2 KiB
Text
//+------------------------------------------------------------------+
|
|
//| 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;} |