ТЕХНИЧЕСКОЕ ЗАДАНИЕ по теме: написание советника на языке MQL4 для торговли на рынке FOREX "сетка с тралом профита" /панель советника (располагается в правом верхнем углу графика, также с панели может раскрываться панель "графика работы" на панель выводится информация: сумма открытых лотов, уровень старта трала профита,текущий профит, а также информация о работе советника (например информация о недостаточном уровне маржи для начала торговли) 1.кнопка ONLY_BUY - выставляются лимитные ордера на покупку (при отжатии кнопки - ордера отменяются) 2.кнопка ONLY_SELL - выставляются лимитные ордера на продажу (при отжатии кнопки - ордера отменяются) 3.кнопка PROFIT&STOP (торговля разрешена, но после взятия прибыли открытие новых сделок запрещено = отжимаются кнопки ONLY_BUY и ONLY_SELL) /панель "графика работы" (может скрываться и раскрываться) 4.определяется время разрешения старта - worktime (по времени сервера) понедельник ЧЧ.ММ-ЧЧ.ММ, ЧЧ.ММ-ЧЧ.ММ вторник ЧЧ.ММ-ЧЧ.ММ, ЧЧ.ММ-ЧЧ.ММ среда ЧЧ.ММ-ЧЧ.ММ, ЧЧ.ММ-ЧЧ.ММ четверг ЧЧ.ММ-ЧЧ.ММ, ЧЧ.ММ-ЧЧ.ММ пятница ЧЧ.ММ-ЧЧ.ММ, ЧЧ.ММ-ЧЧ.ММ /начальные переменные 1 серии 5.начальный лот 1 серии - lot_init1,в лотах (если =0,то в процентах от свободной маржи) 6.инкремент увеличения начального лота 1 серии (множитель) - k1 7.шаг 1 серии (расстояние до следующей покупки (продажи) - step1, в пунктах (если =0, то в процентах от стоимости актива) 8.инкремент увеличения шага 1 серии (множитель) - inc1 9.количество шагов 1 серии - Num1 10.уровень старта трала профита от безубытка 1 серии - profit1, в пунктах (если =0,то в процентах от от стоимости актива) 11.трал профита 1 серии - tral1, в пунктах (если =0, то в процентах от стоимости актива, если и процент =0, то трала не будет) /начальные переменные 2 серии 12.начальный лот 2 серии - lot_init2,в лотах (если =0,то в процентах от свободной маржи) 13.инкремент увеличения начального лота 2 серии (множитель) - k2 14.шаг 2 серии (расстояние до следующей покупки (продажи) - step2, в пунктах (если =0, то в процентах от стоимости актива) 15.инкремент увеличения шага 2 серии (множитель) - inc2 16.количество шагов 2 серии - Num2 17.уровень старта трала профита от безубытка 2 серии - profit2, в пунктах (если =0,то в процентах от от стоимости актива) 19.трал профита 2 серии - tral2, в пунктах (если =0, то в процентах от стоимости актива, если и процент =0, то трала не будет) /начальные переменные 3 серии 20.начальный лот 3 серии - lot_init3,в лотах (если =0,то в процентах от свободной маржи) 21.инкремент увеличения начального лота 3 серии (множитель) - k3 22.шаг 3 серии (расстояние до следующей покупки (продажи) - step3, в пунктах (если =0, то в процентах от стоимости актива) 23.инкремент увеличения шага 3 серии (множитель) - inc3 24.количество шагов 3 серии - Num3 25.уровень старта трала профита от безубытка 3 серии - profit3, в пунктах (если =0,то в процентах от от стоимости актива) 26.трал профита 3 серии - tral3, в пунктах (если =0, то в процентах от стоимости актива, если и процент =0, то трала не будет) /дополнительные переменные 27.сумма лотов при котором советник прекращает открывать позиции, а работает только на взятие профита - sum_lot_max, после взятия профита, работа продолжается в обычном режиме 29.идентификатор - magic ______________________________________________________________________________________________________________________________________ /принцип работы советник работает на каждом тике 1) (старт) при соблюдении условий разрешения торговли (worktime и (нажата ONLY_BUY и/или нажата ONLY_SELL)) выставляется сетка лимитных ордеров на покупку и/или продажу с расчетными ценами*, сумма выставленных лотов должна быть меньше или равна sum_lot_maх (все переменные зависящие от стоимости актива расчитываются на этом этапе и остаются неизменными до взятия прибыли) *если первоначальный лот рассчитывается как процент от свободной маржи (округление происходит в меньшую сторону) и окажется < минимальный лот (MODE_MINLOT) , то советник будет ждать пока уровень маржи повысится,на панель советника выводится информация о недостаточном уровне маржи для начала торговли 2) при открытии новой позиции расчитывается уровень старта трала профита, уровень старта профита отображается на графике, на панели отображается: сумма открытых лотов, цена старта трала профита,текущий профит Расчет уровня старта трала профита: расчитывается уровень безубытка по сумме открытых ордеров (с учетом текущей комиссии и свопа) и на расстоянии profit_n от безубытка рассчитывается уровень старта трала профита - уровень старта профита отображается на графике в виде значка с ценой 3) при достижении ценой старта трала стартует трал профита. Трал профита:при достижени ценой уровня старта трала на расстоянии трала выставляется в противоположном направлении лимитный ордер в суммарном объеме открытых позиций, если профит увеличивается, то лимитный ордер модифицируется, сдвигаясь в сторону увеличения прибыли (тралится вслед за ценой). После открытия локированной позиции просходит закрытие всех встречных позиций наилучшим образом, отложенные ордера удаляются. _______________________________________________________________________________________________________________________________________ /Обработка нажатия кнопок 1)при отжатии кнопок ONLY_BUY и/или ONLY_SELL: отменяются выставленные лимитные ордеры на покупку и/или продажу, уровень старта трала профита при этом не пересчитывается. при достижении ценой старта трала стартует трал профита. 2)нажатие кнопок ONLY_BUY и/или ONLY_SELL в момент когда имеются открытые позиции: анализируются расчитанные при старте переменные, и начиная от уровня нажатия кнопок выставляется сетка лимитных ордеров (с учетом уже открытых позиций). 3)нажатие кнопки PROFIT&STOP: торговля продолжается в обычном режиме, но после взятия прибыли открытие новых сделок запрещается = отжимаются кнопки ONLY_BUY и ONLY_SELL. Если до взятия прибыли произошло отжатие кнопки PROFIT&STOP, то после взятия прибыли торговля продолжается в обычном режиме. _______________________________________________________________________________________________________________________________________ /заключительные условия 1) советник должен работать при любом количестве знаков после запятой (digits) у любого форекс брокера, как на реальном счете и демо-счете, так и в тестере стратегий 2) советник передается в исходных кодах на языке mql4 без обращений к внешним dll (импорт dll), весь функционал должен быть в теле советника 3) все функции должны быть снабжены комментариями 4) должна быть предусмотрена обработка ошибок работы советника 5) исключительные права на советник переходят к Заказчику, запрещается распространять код без разрешения Заказчика