Пример D1:
1 — Все WPR сходятся ниже -80, открывается сделка на Buy. Если цена пошла вниз и появляется еще один сигнал 2 (СЛ не ставим, а ТП не закрывается), советник просчитывает от момента открытия первого ордера до сегодняшнего дня (появления 2 сигнала), на сколько пипсов цена уходила против позиции, в зависимости от величины просадки, зная лотность убыточной позиции 1, рассчитать лотность для входа для 2 позиции за выбранный период времени, открывается вторая сделка на Buy с увеличенным лотом, расчитанным от просадки.
3 — пункты закрытия задаются в настройках, к примеру, при достижении открытых ордеров 200 пунктов закрываются все открытые сделки.
Как то так. Подробнее написано еще выше.
Жду Вашего ответа.
Действия примерно такие: в цикле перебирать все ордера, что есть в рынке. Как только находим первую позицию — определить её цену открытия — OrderOpenPrice(), время — OrderOpenTime(), лот — OrderLots() и тип позиции — OrderType(). Тут же, зная время, находим номер бара с помощью ф-ции iBarShift(). Теперь нужно найти бар на котором начался «сегодняшний» день, ведь мы его не учитываем. Запрос времени для текущего бара по ТФ D1: iTime(NULL,PERIOD_D1,0), тем самым мы получим время без часов и минут, зная время, узнаем какой ему соответствует номер бара на текущем ТФ, опять же, используем ф-цию iBarShift() в которой указываем полученное время. Теперь нам известно время/бары от открытия позиции до «сегодня», в зависимости от типа ордера, обратимся к ф-ции iHighest(), если позиция селл или к ф-ции iLowest(), если на бай. Зная номер бара на котором открылась позиция, минус бар наступления «сегодня» — находим значение за сколько баров будем искать макс/мин. Полученные данные вносим в соответствующую ф-цию: iHighest() / iLowest(), которая вернет нам макс/мин. значение цены за указанный период. Исходя из этого уже можно найти на сколько пипсов цена уходила против позиции, зная лотность позиции — находим в деньгах. Теперь тут мы должны прописать свое условие по просадке: если выполняется — тогда, думаю, нужно ввести булевую переменную, состояние которой будет зависеть от того, достигли ли макс. просадки для отдельно взятой позиции или нет. Это все делаем в одном цикле, то, что описано, это только для одной, первой позиции. Если в рынке есть еще позиции, то цикл продолжится, теперь будет выбрана следующая позиция в списке и с ней будет проделано все то же самое. Попутно, если у позиций была просадка — суммируем её, заносим в переменную, которую нужно будет обнулить перед входом в цикл, и получим общую просадку.
Вроде так подробнее будет.
Получится реализовать?
Как-то так:
Сперва узнать цену открытия ордера и его лотность. Если позиция на бай, тогда узнать, начиная от момента открытия ордера до сегодняшнего дня, минимальное значение цены за выбранный период времени. Тогда можно узнать насколько пипсов цена уходила против позиции, зная её лотность — узнать в деньгах. А там уже согласно условию, в зависимости от величины просадки, зная лотность убыточной позиции, рассчитать лотность для входа по мартину.
И количество пунктов вынести в настройки.
Можно так прописать?
Андрей, здравствуйте. Все отлично работает, только хотела спросить один момент. Можете добавить в сову закрытие по стрелочному индикатору?
Если появилась красная стрелка вверху тренда, все сделки закрываются и ждем дальнейшего сигнала(как и раньше). Анологично внизу синяя.
Индикатор прикреплю вверху. А то здесь не получается.
Большая просто огромная просьба подправить сову. Надеюсь на Вас.
так первый ордер на продажу пошел вниз, значит в плюсе. приблизительно на уровне 1 должен был активироваться бу. разве не так? или я то-то не так понимаю?
anna8889