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

image_pdfimage_print

Продолжаю описывать интересные задачи, с которыми я столкнулся при написании советников 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 кода

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Поиск