//+------------------------------------------------------------------+
//| M65 PRO ROBOT |
//| Trend + RSI + Risk Management |
//+------------------------------------------------------------------+
#property strict
input double LotSize = 0.01;
input int StopLoss = 100; // points
input int TakeProfit = 200; // points
input int RSI_Period = 14;
int rsiHandle;
int ema50Handle;
int ema200Handle;
//+------------------------------------------------------------------+
int OnInit()
{
rsiHandle = iRSI(_Symbol, PERIOD_M5, RSI_Period, PRICE_CLOSE);
ema50Handle = iMA(_Symbol, PERIOD_M5, 50, 0, MODE_EMA, PRICE_CLOSE);
ema200Handle = iMA(_Symbol, PERIOD_M5, 200, 0, MODE_EMA, PRICE_CLOSE);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnTick()
{
double rsi[], ema50[], ema200[];
CopyBuffer(rsiHandle, 0, 0, 1, rsi);
CopyBuffer(ema50Handle, 0, 0, 1, ema50);
CopyBuffer(ema200Handle, 0, 0, 1, ema200);
if(PositionSelect(_Symbol)) return;
double Ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double Bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
// BUY CONDITION
if(ema50[0] > ema200[0] && rsi[0] > 55)
{
trade.Buy(LotSize, _Symbol, Ask, Ask - StopLoss * _Point, Ask + TakeProfit * _Point);
}
// SELL CONDITION
if(ema50[0] < ema200[0] && rsi[0] < 45)
{
trade.Sell(LotSize, _Symbol, Bid, Bid + StopLoss * _Point, Bid - TakeProfit * _Point);
}
}