Встречное закрытие ордеров. - страница 2

 
TarasBY:

Когда новая версия пройдёт проверку модератором, библиотека по ссылке будет доступна.

Иногда, ответить на вопрос USERa сложнее, чем просто промолчать: не понимаю, как можно придумывать причины на неспособность открыть ЛЮБОЙ архив???

Чего проще - выложил для Вас шаблон, через который можно пользоваться НЕ ТОЛЬКО функцией встречного закрытия, НО и другими функциями торговых операций из моей библиотеки, не заморачиваясь с её структурой.

ХОРОШО, когда у каждого из нас существует выбор. Но нужно понимать - есть структура на уровне функции, есть на уровне комплекса функций (библиотека), выполняющих единую задачу, а есть структура на уровне комплекса библиотек - это РАЗНЫЕ вещи.

В Вашем случае - ничем помочь не смогу.

Спасибо и на этом! Желаю держаться на Вашем уровне!
 
khorosh:

Вот попроще (автор getch):

 

Спасибо! Немного поправил, чтобы не ругался МТ4 (код ниже). 

Подскажите, что нужно прописать в коде, чтобы закрывались ордера на установленной паре только в случае одинаковых объемов открытых рыночных ордеров и только в сумме прибыльных (с учетом комиссии и свопов)? 

 

 void LockOFF( )

 {

  bool ret;

  int BuyTicket, SellTicket;

    

  BuyTicket  = GetOrderTicket1(Symbol(), OP_BUY, MagicNumber);

  SellTicket = GetOrderTicket1(Symbol(), OP_SELL, MagicNumber);

  

  while ((BuyTicket != -1) && (SellTicket != -1))

  {

   ret=OrderCloseBy(BuyTicket, SellTicket);

    BuyTicket = GetOrderTicket1(Symbol(), OP_BUY, MagicNumber);

    SellTicket = GetOrderTicket1(Symbol(), OP_SELL, MagicNumber);

  } 

  return;

 }

bool ret2;

int GetOrderTicket1( string inSymbol, int Type,  int mn=-1 )

{

  int Pos, Total = OrdersTotal();

  

  for (Pos = 0; Pos < Total; Pos++)

  {

   ret2=OrderSelect(Pos, SELECT_BY_POS);

   if (OrderMagicNumber()==mn)  

    if (OrderSymbol() == inSymbol)

      if (OrderType() == Type)

        return(OrderTicket());

  }

Причина обращения: