78 lines
2.1 KiB
Text
78 lines
2.1 KiB
Text
//+------------------------------------------------------------------+
|
|
//| GOLD_SCALPER_MT4.mq4 |
|
|
//+------------------------------------------------------------------+
|
|
#property strict
|
|
|
|
// === PARAMÈTRES ===
|
|
input double LotSize = 0.01;
|
|
input int StopLoss = 200; // points
|
|
input int TakeProfit = 300; // points
|
|
input int Slippage = 3;
|
|
input int MagicNumber = 777;
|
|
|
|
input int FastEMA = 20;
|
|
input int SlowEMA = 50;
|
|
input int RSIPeriod = 14;
|
|
|
|
// === FILTRE ===
|
|
input int MaxTradesPerDay = 20;
|
|
input int StartHour = 8;
|
|
input int EndHour = 20;
|
|
|
|
// === VARIABLES ===
|
|
int tradesToday = 0;
|
|
datetime lastTradeDay;
|
|
|
|
//+------------------------------------------------------------------+
|
|
int OnInit()
|
|
{
|
|
lastTradeDay = TimeDay(TimeCurrent());
|
|
return(INIT_SUCCEEDED);
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
void OnTick()
|
|
{
|
|
// Reset trades journaliers
|
|
if (TimeDay(TimeCurrent()) != lastTradeDay)
|
|
{
|
|
tradesToday = 0;
|
|
lastTradeDay = TimeDay(TimeCurrent());
|
|
}
|
|
|
|
// Filtre horaires
|
|
int hour = TimeHour(TimeCurrent());
|
|
if (hour < StartHour || hour > EndHour) return;
|
|
|
|
if (tradesToday >= MaxTradesPerDay) return;
|
|
if (OrdersTotal() > 0) return;
|
|
|
|
// Indicateurs
|
|
double emaFast = iMA(Symbol(), 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, 0);
|
|
double emaSlow = iMA(Symbol(), 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, 0);
|
|
double rsi = iRSI(Symbol(), 0, RSIPeriod, PRICE_CLOSE, 0);
|
|
|
|
double ask = NormalizeDouble(Ask, Digits);
|
|
double bid = NormalizeDouble(Bid, Digits);
|
|
|
|
// === BUY ===
|
|
if (emaFast > emaSlow && rsi > 55)
|
|
{
|
|
OrderSend(Symbol(), OP_BUY, LotSize, ask, Slippage,
|
|
ask - StopLoss * Point,
|
|
ask + TakeProfit * Point,
|
|
"Gold Buy", MagicNumber, 0, clrGreen);
|
|
tradesToday++;
|
|
}
|
|
|
|
// === SELL ===
|
|
if (emaFast < emaSlow && rsi < 45)
|
|
{
|
|
OrderSend(Symbol(), OP_SELL, LotSize, bid, Slippage,
|
|
bid + StopLoss * Point,
|
|
bid - TakeProfit * Point,
|
|
"Gold Sell", MagicNumber, 0, clrRed);
|
|
tradesToday++;
|
|
}
|
|
}
|
|
//+------------------------------------------------------------------+
|