İş Gereklilikleri

//+------------------------------------------------------------------+
//|                   RSI + Bollinger Bands EA (MT5)                |
//|                        Built for Jonah                           |
//+------------------------------------------------------------------+
#property strict
#property version   "1.00"

//================ INPUTS =================
input string   SymbolName      = "XAUUSD";
input double   LotSize         = 0.01;
input int      RSIPeriod       = 14;
input double   RSI_Buy_Level   = 30;
input double   RSI_Sell_Level  = 70;
input int      BB_Period       = 20;
input double   BB_Deviation    = 2.0;
input double   MaxSpread       = 0.2;
input int      StopLossPoints  = 300;
input int      TakeProfitPoints= 600;

//================ HANDLES =================
int rsiHandle;
int bbHandle;

//================ INIT ====================
int OnInit()
{
   rsiHandle = iRSI(SymbolName, PERIOD_CURRENT, RSIPeriod, PRICE_CLOSE);
   bbHandle  = iBands(SymbolName, PERIOD_CURRENT, BB_Period, BB_Deviation, 0, PRICE_CLOSE);

   if(rsiHandle == INVALID_HANDLE || bbHandle == INVALID_HANDLE)
      return INIT_FAILED;

   return INIT_SUCCEEDED;
}

//================ TICK ====================
void OnTick()
{
   if(!SpreadOK()) return;
   if(PositionSelect(SymbolName)) return;

   double rsi[1];
   double upper[1], lower[1];
   double price = SymbolInfoDouble(SymbolName, SYMBOL_BID);

   CopyBuffer(rsiHandle, 0, 0, 1, rsi);
   CopyBuffer(bbHandle, 1, 0, 1, upper);
   CopyBuffer(bbHandle, 2, 0, 1, lower);

   // BUY CONDITION
   if(rsi[0] <= RSI_Buy_Level && price <= lower[0])
      OpenTrade(ORDER_TYPE_BUY);

   // SELL CONDITION
   if(rsi[0] >= RSI_Sell_Level && price >= upper[0])
      OpenTrade(ORDER_TYPE_SELL);
}

//================ SPREAD CHECK =================
bool SpreadOK()
{
   double spread = SymbolInfoDouble(SymbolName, SYMBOL_SPREAD);
   return spread <= MaxSpread;
}

//================ TRADE EXECUTION =================
void OpenTrade(ENUM_ORDER_TYPE type)
{
   MqlTradeRequest req;
   MqlTradeResult  res;
   ZeroMemory(req);

   double price = (type == ORDER_TYPE_BUY)
                  ? SymbolInfoDouble(SymbolName, SYMBOL_ASK)
                  : SymbolInfoDouble(SymbolName, SYMBOL_BID);

   req.action   = TRADE_ACTION_DEAL;
   req.symbol   = SymbolName;
   req.volume   = LotSize;
   req.type     = type;
   req.price    = price;
   req.sl       = (type == ORDER_TYPE_BUY)
                  ? price - StopLossPoints * _Point
                  : price + StopLossPoints * _Point;
   req.tp       = (type == ORDER_TYPE_BUY)
                  ? price + TakeProfitPoints * _Point
                  : price - TakeProfitPoints * _Point;
   req.deviation= 10;
   req.magic    = 111222;

   OrderSend(req, res);
}

//================ DEINIT =================
void OnDeinit(const int reason)
{
   IndicatorRelease(rsiHandle);
   IndicatorRelease(bbHandle);
}

Yanıtlandı

1
Geliştirici 1
Derecelendirme
(1)
Projeler
0
0%
Arabuluculuk
2
0% / 50%
Süresi dolmuş
0
Çalışıyor
2
Geliştirici 2
Derecelendirme
Projeler
0
0%
Arabuluculuk
1
0% / 100%
Süresi dolmuş
0
Serbest
3
Geliştirici 3
Derecelendirme
Projeler
0
0%
Arabuluculuk
0
Süresi dolmuş
0
Çalışıyor
4
Geliştirici 4
Derecelendirme
(1)
Projeler
1
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
Yayınlandı: 2 makale
5
Geliştirici 5
Derecelendirme
Projeler
0
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
Benzer siparişler
1.Sinyal Perdagangan : Sinyal beli: garis MACD utama memotong garis sinyal ke atas (macd_current>signal_current && macd_previous<signal_previous). Sinyal jual: garis MACD utama memotong garis sinyal ke bawah (macd_current<signal_current && macd_previous>signal_previous). Gambar di bawah menunjukkan kasus beli dan jual. 2. Posisi ditutup pada sinyal yang berlawanan: Posisi beli ditutup pada sinyal jual, dan posisi

Proje bilgisi

Bütçe
30+ USD

Müşteri

Verilmiş siparişler1
Arabuluculuk sayısı0