Работа завершена
![](https://c.mql5.com/i/avatar/avatar_na2.png)
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Техническое задание
Мне нужен стабильно работающий советник для MetaTrader 4, для работы на реальном счете.
Данный советник должен одинаково хорошо работать на Минутном графике и графиках старших периодов.
Данный советник должен одинаково хорошо работать на 4-х и 5-ти значных котировках и с нестандартными названиями инструментов (например, EURUSDFXF).
Если в терминале имеется позиция открытая вручную, а в советнике указан Мэджик номер, равный 0, советник не будет открывать позицию до того, как открытая вручную позиция не будет закрыта, или Мэджик номер советника не будет изменен на любое число, отличное от 0.
Советник: Открытие от Moving Average
Советник открывает только одну позицию, когда котировка Бид!!! стала равной Moving Average (МА), заданной в настройках советника (НЕ пробила на 1 пункт, а именно стала равной).
Если котировка двигалась слишком быстро и сразу пробила Moving Average (МА), такое событие должно расцениваться как возможность открытия сделки по лучшей цене и советник сделку должен открыть обязательно, воспользовавшись лучшей котировкой.
Если котировка двигалась в сторону МА размеренно, Советник должен открыть сделку, когда котировка БИД!!!станет равна предустановленной в его настройках МА.
Привязка к котировке БИД носит визуальный характер поведения котировок на графике инструмента, и СОВСЕМ НЕ означает, что ордер на Buy должен каким то образом открываться по котировке БИД, равно как и ордер Sell закрываться по котировке БИД.
Если котировка стала равна МА, но брокер сделку не открыл, советник не должен открывать сделку по изменившейся котировке, если она стала хуже, чем когда она была равной МА, если иное не задано в настройках, пункт настроек 6. (Пример: как только котировка стала равна МА, произошел мгновенный резкий отскок на несколько, а может быть и десяток пунктов. Советник НЕ должен открывать ордер только потому, что котировка сначала сравнялась с МА, без учета изменившихся условий)
Должна быть реализована более жесткая проверка котировки открытия ордера.
Если при попытке открытия ордера, котировка изменилась и стала лучше, чем когда она была равной МА, советник сделку должен открыть.
Количество попыток открытия первого ордера на уровне, где котировка БИД равна МА, не должно быть ограничено. Количество открываемых ордеров должно быть строго ограничено 1 штукой.
При возникновении любых ошибок, должно появиться окно с описанием ошибки.
Когда позиция уже открыта советником, и котировка Бид!!! повторно стала равна Moving Average, новая позиция не открывается.
Если позиция, открытая советником, закрыта по T/P или S/L, или позиция закрыта вручную или другим советником, и повторно котировка Бид!!! стала равна Moving Average, новая позиция не открывается.
Данное ограничение на повторное открытие сделки не должно быть привязано ко времени или другим переменным. Это ограничение должно быть привязано к уже открытой этим советником, и или затем закрытой сделке.
Если советнику не удалось с первого раза открыть сделку, по вине брокера, это не должно стать причиной, что сделку советник больше не сможет открыть, потому что он имеет ограничение на открытие только одной сделки (здесь я имею ввиду, что попытка открытия, не должна приравниваться к действительно открытой сделке). Ограничение на открытие только одной сделки должно вступать в силу только тогда, когда первая сделка уже открыта.
Ограничение на открытие только одной сделки, если оно наступило, должно иметь возможность отмениться, если советник удален с графика и затем снова установлен на график, или если в настройках советника изменен период МА или Метод МА.
Советник должен иметь возможность открытия позиции в заданном направлении: Buy или Sell, при условии, что котировка БИД!!! стала равна установленной МА.
Это значит, если в настройках указано торговать Buy, то при любом варианте подхода цены к МА, то есть сверху вниз или снизу вверх, всё равно будет открыта сделка на Buy. Если в настройках указано торговать Sell, то при любом варианте подхода цены, сверху вниз или снизу вверх, будет открыт ордер Sell.
В настройках советника должна присутствовать возможность настройки значений:
1. Размер лота
2. Take Profit - размер тейк профит в пунктах (если 0, нет тейк профит)
3. Stop Loss - стоп лосс в пунктах (если 0, нет стоп лосс)
4. Дистанция в пунктах ДО МА, для открытия ордера до момента когда котировка БИД станет равна Moving Average (например: котировка приблизилась к Moving Average на расстояние 1 пункт, сделка открывается.) 0 по умолчанию.
5. Дистанция в пунктах ОТ МА, для открытия ордера после момента когда котировка БИД станет равна Moving Average (например: котировка пробила Moving Average на расстояние 1 пункт, сделка открывается на этой котировке.) 0 по умолчанию.
6. Направление открытия позиции: Buy, Sell
7. Maximum Deviation — Максимальное отклонение от запрошенной цены. (если 0, нет Отклонения) 0 по умолчанию.
8. Sound — Включение / отключение звука когда котировка БИД станет равна Moving Average, заданной в настройках советника.
9. Желаемое количество повторений звукового оповещения (сколько раз повторится звуковой сигнал, когда котировка БИД стала равна МА.
10. Trade - Включение / отключение возможности открытия и закрытия ордеров, для случаев, кода требуется исключительно только звуковое оповещение.
В настройках советника должна присутствовать возможность настройки значений Moving Average:
1. Период МА
3. Метод МА: Simple, Exponential, Smoothed, Linear Weighted.
4. Применить к: Close, Open, High, Low.
5. Magic — Уникальный номер ордеров советника
При запуске на реальном счете советник должен создать на графике кнопку, разрешающую работу советника. Работа должна начинаться только после того, как пользователь на нее нажмет. Кнопка должна находиться в районе левого верхнего угла графика.
Под этой кнопкой должна находиться небольшая вертикальная информационная табличка, в которой будет отображаться:
1. Направление открытия позиции: Buy, Sell
2. Размер лота
3. Метод МА
4. Период МА
5. Разрешена возможности открытия и закрытия ордеров или запрещена.
При смене счета советник должен уведомить об этом пользователя и прекратить работу до нового запуска (альтернативное решение - спросить пользователя, можно ли ему продолжать работу).
При смене периода на графике советник должен прекратить работу до нового запуска и уведомить об этом пользователя.
Нужна возможность запускать несколько копий программы с похожими (или одинаковыми) параметрами одновременно в одном терминале на разных инструментах.
Этот советник будет работать в терминале, в котором вместе с ним будут работать другие советники.
Если из-за позиций, открытых другими советниками, не хватит маржи для открытия позиции этим советником, этот советник пропускает сигнал.
Права на использование и возможное распространение Советника должны принадлежать мне. Советник нужен с открытым кодом.
Моя идея на графике выглядит следующим образом:
Когда я открываю график (Пример графика я прикрепил) с определенной МА и смотрю на него когда на этом графике есть только касание МА в точке 1 и только 4 черные свечи вниз, когда еще нет точек касания 2 и 3, и уж тем более 4,5,6.... Когда только появляется первая свеча вверх, я начинаю предполагать, что если вдруг котировки снова вернутся к МА еще раз снизу, стоит там продать, в надежде, что котировки снова отскочат. Затем, когда снова начал зарождаться вариант подхода в точки 4 и 5, можно так же было смело рассчитывать на отскок.
В точке 6 я бы уже на отскок не рассчитывал, однозначно!
А вот в точке 7 уже наверняка можно было ждать что 7 отскока точно не будет и МА с первого раза сильно пробьют и необходимо установить советник с настройкой Buy в точке, где котировка станет равна МА.