Скрипт

 
помогите со скриптом либо советником закрывающим ордера не по тп ,сл а по % указанному от депо ..( в случае импульса_ ) с возможностью менять условия процента (но при этом с возможностью установки стоп лосса и тейка  .может кто знает такой? спасибо
 
для какого терминала? мт4 мт5?
 
мт4
 
спс брат ))
 
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
Причина обращения: