Как закрыть все ордера в конце дня - страница 2

[Удален]  
borilunad:

https://docs.mql4.com/ru/dateandtime

Смотрите Hour() и Minute() ! Нельзя же быть таким беспомощным и ленивым!


как вычислить время я знаю.

у меня вопрос как закрыть ордер по этому времени.

вы не нервничайте) можете просто не отвечать)

Paladin80  
sipulpa:


да мне надо закрыть все открытые ордера неважно в плюсе они или в минусе примерно в 23:50

отложенные ордера у меня закрываются по expiration с этим проблем нет.

Ок. Для тотального закрытия всех открытых позиций (не отложенных ордеров), без приверки на символ и магик-номер, можно так:

if (Hour()==23 && Minute()>=50)
{  if (OrdersTotal()>0)
   {  for (int i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  
            if (OrderType()==OP_BUY)
            {  RefreshRates();
               OrderClose(OrderTicket(),OrderLots(),Bid,1000);
               return(0);
            }
            if (OrderType()==OP_SELL)
            {  RefreshRates();
               OrderClose(OrderTicket(),OrderLots(),Ask,1000);
               return(0);
            }
         }
}  }  }
В этом случае у вас будет только 10 мин на закрытие. Если очень много позиций то сами смотрите много это времени или мало. Тут сделал так что после выслания приказа на закрытие следующий приказ будет обработан на новом тике. Ночью может дойти до дого, что 1 тик придётся на 1-2 минуты и можно не успеть.
[Удален]  
paladin80:

Ок. Для тотального закрытия всех открытых позиций (не отложенных ордеров), без приверки на символ и магик-номер, можно так:



спасибо!

сегодня вечером буду пробовать)

Paladin80  

Если бы я делал для себя советник с таким алгоритмом, то я бы на первых тиках нового дня закрывал все открытые позиции, а только потом "открывал дорогу" для дальшей части кода:

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  
         if (OrderType()==OP_BUY && OrderOpenTime()<iTime(Symbol,PERIOD_D1,0)
         {  RefreshRates();
            OrderClose(OrderTicket(),OrderLots(),Bid,1000);
            return(0);
         }
         if (OrderType()==OP_SELL && OrderOpenTime()<iTime(Symbol,PERIOD_D1,0))
         {  RefreshRates();
            OrderClose(OrderTicket(),OrderLots(),Ask,1000);
            return(0);
         }
      }
}  }
Mikhail Kozhemyako  
paladin80:

Если бы я делал для себя советник с таким алгоритмом, то я бы на первых тиках нового дня закрывал все открытые позиции, а только потом "открывал дорогу" для дальшей части кода:

Какой смысл ставить промежуточную точку на первых тиках нового дня, особенно если этот день - понедельник? Т.е. резкое увеличение спрэдов под занавес в пятницу Вам пофигу? А Гэп, любящий понедельники, никто не обещал что он будет в Вашу сторону?
victoribr  

мне нужно похожую функцию написать.

Надо, чтобы советник в определенное время по магик номеру находил свои ордера и закрыл все ордера через 5 минут, после окончания торгов, которое задается в настройках.

Функция торговли по времени есть, могу ее написать, а вот с поиском ордеров не совсем понимаю как правильно написать. Помогите пожалуйста.

Надо для mt5

MrBrooklin  
victoribr #:

мне нужно похожую функцию написать.

Надо, чтобы советник в определенное время по магик номеру находил свои ордера и закрыл все ордера через 5 минут, после окончания торгов, которое задается в настройках.

Функция торговли по времени есть, могу ее написать, а вот с поиском ордеров не совсем понимаю как правильно написать. Помогите пожалуйста.

Надо для mt5

Здравствуйте! Здесь в примерах всё подробно описано, как искать отложенные ордера и позиции.

С уважением, Владимир.

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