• Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)
General chit-chat
Help Users
  • No one is chatting at the moment.

      Close All Orders

      Onyx MIB

      Member
      Credits
      0
      Hello semua,

      Berikut saya share code EA untuk close semua order saat mencapai target tertentu atau floating loss.
      Bisa dipadukan dengan magicNumber untuk filter order.
      EA ini bisa menjadi alat bantu untuk melengkapi EA Anda yang tidak memiliki fitur close berdasarkan target atau harus cutloss dengan batas loss tertentu.

      Code:
      //+------------------------------------------------------------------+
      //|                                                  CloseOrders.mq4 |
      //|                                     Copyright 2021, Signal Forex |
      //|                                           https://signalforex.id |
      //+------------------------------------------------------------------+
      #property copyright "Copyright 2021, Signal Forex"
      #property link      "https://signalforex.id"
      #property version   "1.00"
      #property strict
      #property description   "Group sharing t.me/codeMQL"
      
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      extern    double         inTargetProfitMoney     = 10;       //Target Profit ($)
      extern    double         inCutLossMoney          = 0.0;      //Cut Loss ($)
      extern    int            inMagicNumber           = 0;        //Magic Number
      
      int      slippage    = 3;
      
      //+------------------------------------------------------------------+
      //| Expert initialization function                                   |
      //+------------------------------------------------------------------+
      int OnInit()
        {
      //---
         if(inTargetProfitMoney <= 0)
           {
            Alert("Invalid input");
            return(INIT_PARAMETERS_INCORRECT);
           }
      
         inCutLossMoney = MathAbs(inCutLossMoney) * -1;
      
      //---
         return(INIT_SUCCEEDED);
        }
      //+------------------------------------------------------------------+
      //| Expert deinitialization function                                 |
      //+------------------------------------------------------------------+
      void OnDeinit(const int reason)
        {
      //---
         Print("Thank you for using this EA");
        }
      //+------------------------------------------------------------------+
      //| Expert tick function                                             |
      //+------------------------------------------------------------------+
      void OnTick()
        {
      //---
      
         double   tFloating = 0.0;
         int tOrder  = OrdersTotal();
         for(int i=tOrder-1; i>=0; i--)
           {
            if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
              {
               if(OrderMagicNumber() == inMagicNumber)
                 {
                  tFloating   += OrderProfit()+OrderCommission() + OrderSwap();
                 }
              }
           }
      
         if(tFloating >= inTargetProfitMoney || (tFloating <= inCutLossMoney && inCutLossMoney < 0))
           {
            fCloseAllOrders();
           }
      
        }
      //+------------------------------------------------------------------+
      
      
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      void fCloseAllOrders()
        {
         double   priceClose = 0.0;
         int tOrders = OrdersTotal();
         for(int i=tOrders-1; i>=0; i--)
           {
            if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
              {
               if(OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL))
                 {
                  priceClose  = (OrderType()==OP_BUY)?Bid:Ask;
                  if(!OrderClose(OrderTicket(), OrderLots(), priceClose, slippage, clrGold))
                    {
                     Print("WARNING: Close Failed");
                    }
                 }
              }
           }
        }
      //+------------------------------------------------------------------+
       

      Attachments

      Kalau script close all Order by symbol ada brow?

      udah dikit aja modul fCloseAllOrders() nya.
      Tinggal di copy aja contoh code dibawah ini.

      Code:
      void fCloseAllOrders(string pair=all)
        {
         double   priceClose = 0.0;
         int tOrders = OrdersTotal();
         for(int i=tOrders-1; i>=0; i--)
           {
            if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
              {
               if(OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL) && (OrderSymbol()== pair || pair == "all"))
                 {
                  priceClose  = (OrderType()==OP_BUY)?Bid:Ask;
                  if(!OrderClose(OrderTicket(), OrderLots(), priceClose, slippage, clrGold))
                    {
                     Print("WARNING: Close Failed");
                    }
                 }
              }
           }
        }
       
      mungkin bisa dicoba juga pakai script ini

      Code:
      //+------------------------------------------------------------------+
      //|                                              CloseAllOrders.mq4  |
      //|                                  Script to close all orders       |
      //|                                           Copyright 2023, Ardian Fariz|
      //|                                      https://linktr.ee/officialfariz |
      //+------------------------------------------------------------------+
      
      // Pengaturan
      input bool closeProfitOrders = true;     // Menutup semua posisi yang menghasilkan profit
      input bool closeAllOrders = true;        // Menutup semua posisi
      input bool closeLimitOrders = true;      // Menutup semua limit orders
      input bool closePendingOrders = true;    // Menutup semua pending orders
      
      //+------------------------------------------------------------------+
      //| Script program start function                                    |
      //+------------------------------------------------------------------+
      void OnStart()
      {
         // Menutup semua posisi yang menghasilkan profit
         if (closeProfitOrders)
         {
            CloseProfitOrders();
         }
      
         // Menutup semua posisi
         if (closeAllOrders)
         {
            CloseAllOrders();
         }
      
         // Menutup semua limit orders
         if (closeLimitOrders)
         {
            CloseLimitOrders();
         }
      
         // Menutup semua pending orders
         if (closePendingOrders)
         {
            ClosePendingOrders();
         }
      }
      
      //+------------------------------------------------------------------+
      //| Function to close all positions with profit                      |
      //+------------------------------------------------------------------+
      void CloseProfitOrders()
      {
         int total = OrdersTotal();
         
         for (int i = total - 1; i >= 0; i--)
         {
            if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
               if (OrderProfit() > 0)
               {
                  OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, clrGreen);
               }
            }
         }
      }
      
      //+------------------------------------------------------------------+
      //| Function to close all positions                                   |
      //+------------------------------------------------------------------+
      void CloseAllOrders()
      {
         int total = OrdersTotal();
         
         for (int i = total - 1; i >= 0; i--)
         {
            if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
               OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, clrRed);
            }
         }
      }
      
      //+------------------------------------------------------------------+
      //| Function to close all limit orders                                |
      //+------------------------------------------------------------------+
      void CloseLimitOrders()
      {
         int total = OrdersTotal();
         
         for (int i = total - 1; i >= 0; i--)
         {
            if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
               if (OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT)
               {
                  OrderDelete(OrderTicket());
               }
            }
         }
      }
      
      //+------------------------------------------------------------------+
      //| Function to close all pending orders                              |
      //+------------------------------------------------------------------+
      void ClosePendingOrders()
      {
         int total = OrdersTotal();
         
         for (int i = total - 1; i >= 0; i--)
         {
            if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
               if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
               {
                  OrderDelete(OrderTicket());
               }
            }
         }
      }
       
      Back
      Top