ТЗ параметры Lot - 0,01 MM - true (Включает/выключает расчет объема ордера). RiskTrade - 2 (Рассчитывает объем ордера как процент от баланса счета). EAPerfomance - 70 (Рассчитывает количество баров в периоде в %). TradeParts - 1 (Сколько раз используется частичное закрытие ордера. Если 0, ордер закрывается полностью). Min TP - 40 (профит в пунктах) TP Next - 20 (профит для следующего частичного закрытия ордера. В пунктах.) Trail - true (Включить/выключить стандартный трал профита). Trail - 20 (Отступ для запуска трала) Init Trail - 5 (шаг трала) StopLoss - 50 (стоп лосс в пунктах) StopLoss Next - 20 (используется после первого частичного закрытия ордера) Buy Offset - 5 (отступ от максимума в пунктах. Может быть положительным или отрицательным.) Sell Offset - 5 (отступ от минимума. Может быть положительным или отрицательным. ) Start - 07:15 (Время начала работы) End - 22:45 (Время конца работы) Slippage - 5 (проскальзывание) Magic - 77777 Логика При наступлении параметра "Start". Выставляем отложенные ордера Buy Stop и Sell Stop. Для расчета уровня отложенных ордеров, вычисляем экстремумы согласно "EAPerfomance". Для этого берем количество баров в периоде на котом работает советник. Например если работаем на H1, то берем последние 24 бара не считая текущий бар. Если на М15 - 96 бара не считая текущего. Потом к этому количеству баров применяем параметр " EAPerfomance". Например если EAPerfomance=70, то для Н1 получаем 24*70%=16,8 свечей. Округляем до 17 свечей, не считая текущей свечи. На полученном количестве баров вычисляем минимум и максимум. Для Buy Stop берем максиму и прибавляем/отнимаем " Buy Offset". Для Sell Stop берем максиму и прибавляем/отнимаем " Sell Offset". Для ордера Sell Stop меняем знак параметра " Sell Offset" на противоположный. То есть при положительном значении ордера должен быть за пределами экстремумов. При отрицательном значении внутри экстремумов. Если максимум/минимум образуется на ближней свече, то ждем появления закрывшейся свечи в обратном направлении. Или появления свечи, тело которой занимает менее 25% от размера свечи. Для Buy Stop в нижней части свечи. Для Sell Stop в верхней части свечи. После открытия каждого нового бара проверяем корректность выставленных ордеров. При необходимости меняем уровень отложенного ордера. Отложенные ордера выставляем со стоп лоссом. Сразу после активации отложенного ордера, проверяем соответствие параметра "StopLoss". Если при открытии было проскальзывание, то приводим стоп лосс в соответствие с параметром "StopLoss". После этого при каждом изменении цены в нашу сторону меняем уровень стоп лосса. Если включен Trail. То при появлении профита, запускаем трал согласно параметрам "Trail" и "Init Trail". Если Trail отключен, просто ждем заданный профит и двигаем стоп лосс. При достижении профита заданного параметром "Min TP" смотрим значения параметра " TradeParts". Если значение равно 0, то просто закрываем ордер. Если значение больше 0. То закрываем половину ордера. Если половину ордера закрыть не возможно то округляем в большую сторону, до ближайшего возможного значения. Для оставшейся части ордера применяем параметр "StopLoss Next". Если включен Trail. То при появлении профита, запускаем трал согласно параметрам "Trail" и "Init Trail". Если Trail отключен, то ждем дополнительный профит заданный параметром "TP Next". То есть для оставшейся части ордера профит должен составлять "Min TP" + ("TP Smooth" * какой раз делается частичное закрытие ). При достижении этого профита в соответствии с "TradeParts". Либо закрываем ордер целиком. Либо опять закрываем 50% ордера. Далее по кругу пока неисполним параметр " TradeParts". После закрытия всего ордера, выставляем новый отложенный ордер. При наступлении параметра "End" закрываем отложенные ордера. Если при наступлении конца торговле есть открытый ордер Buy или Sell, то ждем закрытия ордера. Советник должен проверять ошибки. И максимально быстро, без задержек, выдавать повторные запросы.