Скачать MetaTrader 5

Скрипт

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Aleksandr Todorenko
196
Aleksandr Todorenko  
помогите со скриптом либо советником закрывающим ордера не по тп ,сл а по % указанному от депо ..( в случае импульса_ ) с возможностью менять условия процента (но при этом с возможностью установки стоп лосса и тейка  .может кто знает такой? спасибо
Vladislav Andruschenko
100068
Vladislav Andruschenko  
для какого терминала? мт4 мт5?
Aleksandr Todorenko
196
Aleksandr Todorenko  
мт4
Aleksandr Todorenko
196
Aleksandr Todorenko  
спс брат ))
Victor Nikolaev
Модератор
15100
Victor Nikolaev  
sss_1393:
помогите со скриптом либо советником закрывающим ордера не по тп ,сл а по % указанному от депо ..( в случае импульса_ ) с возможностью менять условия процента (но при этом с возможностью установки стоп лосса и тейка  .может кто знает такой? спасибо

Может поможет. Особо не проверял

//+------------------------------------------------------------------+
//|                                                          EA_UTIL |
//|                                            Copyright 2015, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+

#property  strict


input double prProfit=2; // Прибыль в процентах
input double prLoss=10;  // Просадка в процентах
input int    prClose=100; // Доля для закрытия только профитных сделок, 0 или 100 - закрывать полностью

input int Slippage=15;


double profit, loss;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   profit=prProfit/100.0;
   loss=-prLoss/100.0;

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {
   double CurProfit=CalcProfit();
   if (CurProfit>=profit && profit>0) Order_Close(prClose);
   if (CurProfit<=loss && loss<0) Order_Close();
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CalcProfit()
{
   double Res=0, Sum=0;
   for(int pos=0; pos<OrdersTotal();pos++)
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
         Sum+=OrderProfit()+OrderCommission()+OrderSwap();
   Res=Sum/(AccountEquity()-Sum);
   return(Res);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Order_Close(double pr=0)
  {
   for (int i=OrdersTotal()-1;i>=0;i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS)) continue;
      if (OrderSymbol()!=Symbol())        continue;

      double lot=OrderLots();
      if (pr>0 && pr<100) lot =CalcLots(OrderLots(), pr);
      
      bool Res=OrderClose(OrderTicket(),lot,OrderClosePrice(),Slippage);
      if (Res)
         Print("Close order");
      else
         Print("Order close error ",GetLastError());
   }
  }

double CalcLots(double lot, double pr=0)
{
   double Res=lot;
   double LotMin=MarketInfo(Symbol(),MODE_MINLOT);
   double LotMax=MarketInfo(Symbol(),MODE_MAXLOT);
   double LotStep=MarketInfo(Symbol(),MODE_LOTSTEP);
      Res=lot-MathRound(lot*pr/100.0/LotStep)*LotStep;
      if (lot-Res<LotMin) Res=lot-LotMin;


   return(Res);
}
Файлы:
EA_UTIL.mq4 4 kb
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий