Когда и как частично закрыть позицию? - страница 2

 
Vladimir Karputov :

Вот этот? (MQL5\Experts\Examples\Moving Average\Moving Average.mq5)

Да, это поможет. Это будет образец для работы.

 
jaffer wilson:

Да, это поможет. Это будет образец для работы.

Вот код. Частичное закрытие в функции CheckForClose

//+------------------------------------------------------------------+
//| Check for close position conditions                              |
//+------------------------------------------------------------------+
void CheckForClose(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average
   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;
     }
//--- positions already selected before
   bool signal=false;
   long type=PositionGetInteger(POSITION_TYPE);

   if(type==(long)POSITION_TYPE_BUY && rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=true;
   if(type==(long)POSITION_TYPE_SELL && rt[0].open<ma[0] && rt[0].close>ma[0])
      signal=true;
//--- additional checking
   if(signal)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionClose(_Symbol,3);
     }
//--- partial close
   double profit=PositionGetDouble(POSITION_PROFIT);
   if(profit>InpPartial)
     {
      double volume=PositionGetDouble(POSITION_VOLUME);
      /*
      volume,in lot  -> profit, in money
      x,in lot       -> InpPartial, in money
      x=volume*InpPartial/profit;
      */
      double partial_volume=LotCheck(volume*InpPartial/profit);
      if(partial_volume>0.0)
         ExtTrade.PositionClosePartial(Symbol(),partial_volume,-1);
     }
//---
  }
Файлы:
 
Vladimir Karputov :

Вот код. Частичное закрытие в функции CheckForClose

Большое спасибо. Это поможет мне точно.

 

@Vladimir Karputov Пример очень хороший.

У меня есть запрос. Вы показали частичное закрытие с символом

 

ExtTrade.PositionClosePartial (  

Symbol 

 (), partial_volume, -  

1 

 ); 

Я хотел бы использовать его с номером билета.

ExtTrade.PositionClosePartial( PositionGetInteger ( POSITION_TICKET ),partial_volume,- 1 );

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

 
jaffer wilson:

У меня есть запрос. Если я хочу закрыть сделку частично и с прибылью, как я могу это сделать, используя MQL5?

как альтернатива (и хэдж. система учета позиций) открывать несколько сделок по одному сигналу

 
Igor Yeremenko :

как альтернатива (и хэдж. система учета позиций) открывать несколько сделок по одному сигналу

Метод номера билета работает так же? Поскольку я пытаюсь в одной из моих логики, я не понимаю, почему я получаю разные результаты при использовании метода PartialClose.