Lavoro terminato
Specifiche
Рядовой мартингейл, без сетки. С заданной периодичностью выставляет отложенные ордера (по выбору пользователя limit или stop) на заданном расстоянии от текущей цены. При закрытии по SL очередной ордер создает с применением коэффициента к размеру лота, уровней TP и SL. ТЗ ниже.
Мартингейл с коэффициентами Lot, SL, TP.
Мартингейл без сетки, с упором на ясность кода и отказоустойчивость при работе в реале (с занятым потоком, перезапуском терминала, в том числе после перезагрузки серверов). Советник работает только с ордерами своего magic.
Логика входа и работы
Работает отложенными ордерами. Раз в заданный Period секунд устанавливает (если они не сработали - переустанавливает заново) отложенные лимитные ордера на заданном расстоянии Distance от текущей цены. Ниже - Buy Limit, выше - Sell limit. При StopOrders=true, наоборот: ниже цены устанавливается - Sell Stop, выше - Buy Stop.
SL и TP выставляются вместе с отложенным ордером, а не после его открытия.
Как только сработал один из выставленных отложенных ордеров, оставшийся тут же удаляется (советник проверяет, что приказ на удаление принят сервером, если нет - повторяет 5 раз). На всякий случай ордера сразу создаются и со временем истечения, равным Period минус 5 секунд.
Если позиция закрылась по TP, начинается новый цикл. Если по SL - включается логика мартингейла и к следующей позиции применяются соответствующие коэффициенты лотности, TP и SL.
Настройки входа
Period = 900; // Период выставления отложенных ордеров, в секундах
Distance = 30; // На каком расстоянии от текущей цены выставляются отложенные ордера
StopOrders=true/false; // При true используются стоп-ордера, при false - лимитные ордера.
Дополнительные настройки входа
SameDirectionAllowed? = true/false; // фильтр, разрешается ли внутри цикла открывать следующую позицию в том же направлении, что и предыдущую (т.е. разрешаются ли два sell или два buy подряд). Если true, то после закрытия позиции по SL советник выставляет отложенный ордер только в противоположном направлении (то есть после sell возможен только buy)/
Interval = input; // интервал в минутах после закрытия позиции по SL до открытия следующей (пауза в работе советника).
Основные настройки
Lot=0.01; // Стартовый лот
MaxLot=10; // Максимально возможный размер лота. Если алгоритм эксперта хочет открыть лот больше, то используется размер, указанный в MaxLot.
TP=10; // Стартовый TP в пунктах
MaxTP=20; // Максимально возможный размер TP. Если алгоритм эксперта в результате применения коэффициентов собирается установить TP больше, то используется размер, указанный в MaxTP.
MinTP=5; // Миниммально возможный размер TP. Если алгоритм эксперта в результате применения коэффициентов собирается установить TP меньше, то используется размер, указанный в MinTP.
SL=10; // Стартовый SL в пунктах
MaxSL=20; // Максимально возможный размер SL. Если алгоритм эксперта в результате применения коэффициентов собирается установить SL больше, то используется размер, указанный в MaxSL.
MinSL=5; // Миниммально возможный размер SL. Если алгоритм эксперта в результате применения коэффициентов собирается установить SL меньше, то используется размер, указанный в MinSL.
Magic = 0; // магический номер
Slippage = 3; // Допустимое проскальзывание
Коэффициенты мартингейла
Коэффициенты для следующей сделки в случае проигрыша
Loss_K_Lot = 1.25; //Коэффициент для лота
Manual_Lot_Size = 0.01, 0.01, 0.01, 0.02, 0.02, 0.04… // Поскольку 0,01 на коэффициенты типа 1,25 не умножается, здесь можно вручную ввести ряд - последовательность размеров лота.
Loss_K_TP = 1,25; //Коэффициент для TP
Loss_K_SL =1,25; //Коэффициент для SL
Блок пятничного открытия и закрытия позиций
AllowFriday=true/false; // разрешена ли торговля в пятницу?
Close_All_Friday = true/false; // закрывать ли открытую позицию в пятницу в 23.00? Воспринимает как SL.
Мелкие детали
На одном счете будет работать несколько копий этого советника, поэтому необходимо предусмотреть вероятность занятости потока, чтобы попытки шли через определенный (вырастающий) интервал времени: например, через 1, 2, 3...5...n секунд.
При перезагрузке терминала сброс цикла не должен происходить (т.е. советник ориентируется на историю ордеров со своим мейджиком в терминале).