CloseAllOrders() - страница 2

 
на закрытие там используется условия, или бай или селл.
 
Здравствуйте

меня заинтересовал предложенный Vladon код для закрытия всех позиций.

Я хочу вставить этоот код для закрытия всех позиций в терминале при  достижении определённой

совокупной прибыли собранной по всем позициям

Вот он:


 
void CloseAllPosSell()
  {
   int pos=PositionsTotal(); // получим количество открытых позиций
   for(int ip=0;ip<=pos;ip++)
     {
      string sSymbol=PositionGetSymbol(ip);
      if(PositionSelect(sSymbol)==true)
         CloseAllPosSellF(sSymbol,ip);    
     }
  }
void CloseAllPosSellF(string sSymbol,int ip)
  {
   MqlTradeRequest request; // структура запроса
   MqlTradeResult result; // структура ответа
   request.symbol = sSymbol;
   request.volume = PositionGetDouble( POSITION_VOLUME );
   request.action=TRADE_ACTION_DEAL; // операция с рынка
   request.tp=0;
   request.sl=0;
   request.deviation=(ulong) ((SymbolInfoDouble(sSymbol,SYMBOL_ASK)-SymbolInfoDouble(sSymbol,SYMBOL_BID))/SymbolInfoDouble(sSymbol,SYMBOL_POINT)) ; // по спреду
   request.type_filling=ORDER_FILLING_CANCEL;
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      request.type=ORDER_TYPE_SELL;
      request.price=SymbolInfoDouble(sSymbol,SYMBOL_BID);
     }
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
     {
      request.type=ORDER_TYPE_BUY;
      request.price=SymbolInfoDouble(sSymbol,SYMBOL_ASK);
     }   
  if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL){ OrderSend(request,result);}
  }

при вставке этого кода в мой робот компилятор ругается на
   void CloseAllPosSell()
и
   void CloseAllPosSellF(string sSymbol,int ip)

говорит что 'void' - illegal use of 'void' tipe

если не очень сложно, ответьте пожалуйста что нужно сделать чтобы компилятор "проглотил" этот код

ответ конечно лежит на поверхности но фишка в том что я не программист

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
BlinGoblin:

при вставке этого кода в мой робот компилятор ругается на
   void CloseAllPosSell()
и
   void CloseAllPosSellF(string sSymbol,int ip)

говорит что 'void' - illegal use of 'void' tipe


куда вы его вставляете? внутрь какой то функции?

это самостоятельные функции, и их надо в код вставлять отдельно от всех остальных. можете просто в самом низу


 
sergeev:


куда вы его вставляете? внутрь какой то функции?

это самостоятельные функции, и их надо в код вставлять отдельно от всех остальных. можете просто в самом низу



Сергееву респект и уважуха, я вставил код в самый низ и компилятор "заткнулся" )))



 
ValmarsПоследняя строчка вообще непонятна, OrderSend(...) и для buy и для sell должен быть.

Если речь идёт о закрытии всех позиций, то вы, Валерий, несомненно правы.  В данном же случае будут закрыты только позиции на продажу (SELL).

 
Victuar:

Если речь идёт о закрытии всех позиций, то вы, Валерий, несомненно правы.  В данном же случае будут закрыты только позиции на продажу (SELL).

Ага, и для полного счастья нужно добавить аналогичную функцию закрытия ордеров на покупку, по которой можно будет закрывать вторую половину ордеров

void CloseAllPosBuy()  
  {
   int pos=PositionsTotal(); // получим количество открытых позиций
//      for(int ip=0;ip<=pos;ip++)
//+------------------------------------------------------------------+
//|                                                          Valmars |
//|                                         valmars@mail.primorye.ru |
//|                                https://www.mql5.com/ru/forum/1050 |
//+------------------------------------------------------------------+
//При закрытии позиций порядок перебора переменной цикла должен быть обратный,
// т.е. в Вашем случае:
        for(int ip=pos-1;ip>=0;ip--)
//+------------------------------------------------------------------+
//|                                                           Vladon |
//|                                              expoforex@yahoo.com |
//|                                                expoforex@meta.ua |
//|                                https://www.mql5.com/ru/forum/1050 |
//+------------------------------------------------------------------+
     {
      string sSymbol=PositionGetSymbol(ip);
      if(PositionSelect(sSymbol)==true)
         CloseAllPosBuyF(sSymbol,ip);  
     }
  }
void CloseAllPosBuyF(string sSymbol,int ip)
  {
   request.symbol = sSymbol;
  // request.Profit = PositionGetDouble( POSITION_PROFIT );
   request.action=TRADE_ACTION_DEAL; // операция с рынка
   request.tp=0;
   request.sl=0;
   request.deviation=(ulong) ((SymbolInfoDouble(sSymbol,SYMBOL_ASK)-
   SymbolInfoDouble(sSymbol,SYMBOL_BID))/SymbolInfoDouble(sSymbol,SYMBOL_POINT)) ; // по спреду
   request.type_filling=ORDER_FILLING_CANCEL;
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      request.type=ORDER_TYPE_SELL;
      request.price=SymbolInfoDouble(sSymbol,SYMBOL_BID);
     }
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
     {
      request.type=ORDER_TYPE_BUY;
      request.price=SymbolInfoDouble(sSymbol,SYMBOL_ASK);
     }
     if  (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      OrderSend(request,result);
     }

  }  



не могу понять только по какому сигналу у Vladon происходит закрытие всех позиций

Ответ конечно лежит на поверхности но фишка в том что я не программист

 
подскажите пожалуйсто, какой функцией закрывается позиция?
 
m_a_sim:
подскажите пожалуйсто, какой функцией закрывается позиция?

Открытием встречной позиции, однако...


 
Valmars:

Если учесть, что при создании объекта CTrade m_deviation устанавливается в 10, то при 5-значных котировках этого явно недостаточно, и нам необходимо принудительно устанавливать m_deviation

А какие рекомендации по проскальзыванию? Я использовал 10 на пятизначных на демо и на реале (правда не в МК) - никаких проблем. Особенно хотелось бы услышать ответ от организаторов чемпионата, чтобы чрезмерно не напрягать обработкой реквотов сервера.
 
marketeer:
А какие рекомендации по проскальзыванию? Я использовал 10 на пятизначных на демо и на реале (правда не в МК) - никаких проблем. Особенно хотелось бы услышать ответ от организаторов чемпионата, чтобы чрезмерно не напрягать обработкой реквотов сервера.
Использовать или нет проскальзывание зависит от стратегии. Если хотите больших гарантий отработки, ставьте хотя бы 1 пипс (10 на 5 знаке).
Причина обращения: