İş tamamlandı
İş Gereklilikleri
Добрый день, уважаемые программисты.
Нужна помощь в написании советника.
Принцип работы советника прост: советник открывает первую позицию на покупку или продажу, в зависимости от выставленных настроек, но при этом реализована возможность открыть первую позицию вручную. Если вручную, то советник модернизирует ордер: устанавливает SL и TP (их размер одинаков и для последующих ордеров, и их можно задать в настройках).
Далее советник работает только отложенными ордерами.
SL и TP выставляются вместе с отложенным ордером, а не после его открытия.
Техническое задание:
Советник с мартингейлом
Обычный мартингейл, без сетки, с упором на ясность кода и отказоустойчивость при работе на реальном счете (с занятым потоком, перезапуском терминала, в том числе после перезагрузки серверов). Советник работает только с ордерами своего magic.
Логика входа и работы
Советник открывает первую позицию на покупку или продажу, в зависимости от выставленных настроек, но при этом реализована возможность открыть первую позицию вручную. Если вручную, то советник модернизирует ордер: устанавливает SL и TP (их размер одинаков и для последующих ордеров и их можно задать в настройках).
Далее советник работает только отложенными ордерами.
SL и TP выставляются вместе с отложенным ордером, а не после его открытия.
В момент открытия позиции, на заданном расстоянии (равном SL) выставляется отложенный ордер в противоположном направлении объемом, равным n*размер предыдущего лота (можно задать в настройках коэффициент умножения, а также реализована возможность прописать вручную размер лота для каждой сделки), с заранее определенным SL и TP. При этом, на расстоянии равном ТР устанавливается отложенный ордер в том же направлении, что и первый ордер с установленным изначально лотом.
Как только сработал один из выставленных отложенных ордеров, оставшиеся тут же удаляются (советник проверяет, что приказ на удаление принят сервером, если нет - повторяет 5 раз) и выставляются новые: на уровнях SL и TP.
Если позиция закрылась по TP, начинается новый цикл, но отложенными ордерами. Если по SL - включается логика мартингейла и к следующей позиции применяются соответствующие коэффициенты лотности (либо размеры лотов, прописанные вручную).
Таким образом, после закрытия позиции по SL советник выставляет отложенный ордер только в противоположном направлении (то есть после sell возможен только buy), если по ТР – наоборот – т.е. в направлении движения (после достижения ТР по sell - возможен только sell).
Таким образом уровни TP и SL соответствуют вплоть до тика отложенным ордерам.
Основные настройки
LOT=0.01; // Стартовый лот (он же лот первого отложенника после достижения любым ордером TP).
TP=5; // TP в пунктах
SL=5; // SL в пунктах
Magic = 777; // магический номер
Slippage = 3; // Допустимое проскальзывание
Manual_LOT = true/false; // при true – пользователь сам прописывает размер лотов для каждого последующего ордера, при false – применяется K_Lot.
K_Lot = 3; // Коэффициент (множитель) для лота, который можно менять в настройках вручную (т.е.: если первый лот = 0.01, то второй = 0.03, третий = 0.09, четвертый 0.27 и т.д. );
Lot 1 = 0.01; // Размер 1-го лота отложенного ордера
Lot 2 = 0.03; // Размер 2-го лота отложенного ордера
Lot 3 = 0.09; // Размер 3-го лота отложенного ордера
Lot 4 = 0.27; // Размер 4-го лота отложенного ордера
Lot 5 = 0.81; // Размер 5-го лота отложенного ордера
Lot 6 = 2.43; // Размер 6-го лота отложенного ордера
Lot 7 = 7.29; // Размер 7-го лота отложенного ордера
Lot 8 = 21.87; // Размер 8-го лота отложенного ордера
Lot 9 = 65.61; // Размер 9-го лота отложенного ордера
Lot 10 = 100.00; // Размер 10-го лота отложенного ордера
Lot 11 = 100.00; // Размер 11-го лота отложенного ордера
Lot 12 = 100.00; // Размер 12-го лота отложенного ордера
Lot 13 = 100.00; // Размер 13-го лота отложенного ордера
Lot 14 = 100.00; // Размер 14-го лота отложенного ордера
Lot 15 = 100.00; // Размер 15-го лота отложенного ордера
Время работы советника
Устанавливается пользователем: день недели, часы и минуты.
При этом, например, если советник должен прекратить торговлю в пятницу в 23.00, то это означает, что он не выставляет отложенные ордера после достижения тейк профита, т.е. только ордера на уровне стоп лоса: таким образом, в пятницу после 23:00 (или другого времени и дня, установленного пользователем) советник прекращает свою работу исключительно после достижения тейк профита и удаляет абсолютно все отложенные ордера.
Работу советник начинает ежедневно в 01:00 (или другой день и время, установленные пользователем в настройках советника).
Пример требуемого алгоритма работы советника во вложении.