Торговый советник. Закрытие позиции через день.


Продолжаю описывать интересные задачи, с которыми я столкнулся при написании советников MetaTrader, и решения которых не обнаружил на форумах. При подсчете количества дней, в течении которых цена изменяется в одном направлении (для статьи про определение понятия тренда) столкнулся с необходимостью закрывать открытую позицию, через определенное время (например один день). Решение далее:
Сначала нам нужно запомнить время открытия позиции. Для этого используем функцию TimeCurrent(), которая возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года. Значение TimeCurrent() вносим в поле OrderMagicNumber() при открытие ордера.
Далее нам необходимо находить ордеры открытые день назад и закрывать их. Для этого в цикле будем перебирать все открытые ордеры и если текущее время отличается от OrderMagic на день, то закрывать данный ордер:

for (int i=0; i86400 && (OrderType()==OP_SELL)) CLOSEORDER(«Sell»); //*
if (TC-OM>86400 && (OrderType()==OP_BUY)) CLOSEORDER(«Buy»); //*
}
}
* поскольку время в функции TimeCurrent() отсчитывается в секундах, то и разница между временем открытия ордера и текущим временем берется то же в секундах:
1День = 24Часа*60Минут*60Секунд=24*60*60=86400Секунд

Еще полезная информация о MetaTrader тут:
Торговые советники
Элементы mql4 кода