Robot trading forex anti loss
Find a file
DGFUND COIN 4432e83370 Robot_MA
//+------------------------------------------------------------------+
//|                                                MA3_MA20_1H.mq5   |
//| Strategi: MA3 potong MA20 - Kerangka 1 Jam                       |
//| Untuk XAUUSD / Forex di Dupoin MT5                               |
//+------------------------------------------------------------------+
#property copyright "Dola Trading"
#property version   "1.00"
#property strict

//=== PENGATURAN ===
input int                MA3_Periode        = 3;
input int                MA20_Periode       = 20;
input double              Lot               = 0.01;
input int                 StopLoss_Poin      = 50;
input int                 TakeProfit_Poin    = 80;
input ENUM_MA_METHOD     Metode_MA          = MODE_SMA;
input ENUM_APPLIED_PRICE Harga_Pakai        = PRICE_CLOSE;

//=== VARIABEL ===
int handle_ma3, handle_ma20;

//+------------------------------------------------------------------+
int OnInit()
{
   handle_ma3  = iMA(_Symbol, _Period, MA3_Periode, 0, Metode_MA, Harga_Pakai);
   handle_ma20 = iMA(_Symbol, _Period, MA20_Periode, 0, Metode_MA, Harga_Pakai);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
void OnTick()
{
   double ma3[2], ma20[2];
   if(CopyBuffer(handle_ma3, 0, 0, 2, ma3) < 2 ||
      CopyBuffer(handle_ma20, 0, 0, 2, ma20) < 2)
      return;

   TutupSemuaPosisi();

   // Sinyal Beli
   if(ma3[1] < ma20[1] && ma3[0] > ma20[0])
   {
      BukaPosisi(OP_BUY);
   }

   // Sinyal Jual
   if(ma3[1] > ma20[1] && ma3[0] < ma20[0])
   {
      BukaPosisi(OP_SELL);
   }
}

//+------------------------------------------------------------------+
void BukaPosisi(ENUM_ORDER_TYPE tipe)
{
   double harga = (tipe == OP_BUY) ? Ask : Bid;
   double poin = Point();
   double sl = 0, tp = 0;

   if(StopLoss_Poin > 0)
      sl = (tipe == OP_BUY) ? harga - StopLoss_Poin * poin : harga + StopLoss_Poin * poin;
   if(TakeProfit_Poin > 0)
      tp = (tipe == OP_BUY) ? harga + TakeProfit_Poin * poin : harga - TakeProfit_Poin * poin;

   MqlTradeRequest req = {0};
   MqlTradeResult res = {0};
   req.action = TRADE_ACTION_DEAL;
   req.symbol = _Symbol;
   req.volume = Lot;
   req.type = tipe;
   req.price = harga;
   req.sl = sl;
   req.tp = tp;
   req.deviation = 5;
   req.magic = 202606;
   req.comment = "MA3-MA20 1H";
   OrderSend(req, res);
}

//+------------------------------------------------------------------+
void TutupSemuaPosisi()
{
   for(int i = PositionsTotal() - 1; i >= 0; i--)
   {
      if(PositionGetSymbol(i) == _Symbol && PositionGetInteger(POSITION_MAGIC) == 202606)
      {
         MqlTradeRequest req = {0};
         MqlTradeResult res = {0};
         req.action = TRADE_ACTION_DEAL;
         req.symbol = _Symbol;
         req.volume = PositionGetDouble(POSITION_VOLUME);
         req.type = (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) ? OP_SELL : OP_BUY;
         req.price = (req.type == OP_BUY) ? Ask : Bid;
         req.deviation = 5;
         req.magic = 202606;
         OrderSend(req, res);
      }
   }
}

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   IndicatorRelease(handle_ma3);
   IndicatorRelease(handle_ma20);
}
//+------------------------------------------------------------------+
2026-06-16 11:09:36 +00:00
MA3_MA20_1H.mq5 Add MA3_MA20_1H.mq5 2026-06-16 11:04:29 +00:00
Robot_MA Robot_MA 2026-06-16 11:09:36 +00:00