Требуется написать советник который берет сигналы для закрытия и открытия у индикаторов через Icustom. Логика советника. Открытие сделки: Буферный сигнал на бай или селл от одного или нескольких индикаторов(об этом ниже). Закрытие сделки: Противоположный сигнал от главного индикатора(об этом ниже) либо по тейк профиту или стоп лосу. В советнике так же должен быть реализован трейлинг стоп. Советник использует от одного до 5 индикаторов. Первый индикатор является главным, все остальные вспомогательными. Для индикаторов лишь указывается номер бара на котором ищется сигнал, все настройки индикатора советник использует по дефолту. Советник должен уметь следить за всеми сделками открытыми на счете. Если число открытых сделок на счете превышает допустимое значение выставленное в советнике, то советник не открывает сделок, даже при наличии сигнала на сделку и если часть сделок было открыто не советником или другими советниками. Так же у советника должен быть параметр разрешающий или запрещающий открывать сделки в одном направлении, в котором можно указать максимальное разрешенное количество открытых сделок в одном направлении (в учет берутся все сделки открытые на счете на данной паре, даже если они были открыты не советником). В советнике должна быть реализована функция прекращения торговли, по двум из выбранных сценариев: 1)Прекращение торговли после достижения процента просадки от суммы начального счета(после инициализации совы). Даже если на счету просадка была вызвана не сделками советника, торговля все равно будет прекращена. Пока пользователь не перезапустит терминал. 2)Прекращение торговли после достижения процента просадки от суммы максимального значения счета.Даже если на счету просадка была вызвана не сделками советника, торговля все равно будет прекращена. Пока пользователь не перезапустит терминал. Если на счету есть открытие сделки, то советник проверяет наличие стопл лосса и тейк профита у них, если их нет, то советник закрывает сделки и прекращает торговлю, если у сделок есть стоп-лосс и тейк профит, то советник ничего не делает с данными сделками, но так же прекращает торговлю, если была достигнута просадка по одному из выше приведенных сценариев. Стоп-лосс, трейлинг стоп, и тейк профит рассчитывается в процентах от движения цены за заданный промежуток времени. Немного подробнее об этом: После того как появляется сигнал на покупку или продажу, советник рассчитывает расстояние в пунктах которое прошла цена от расстояние слева(расстояние указывается в барах текущего таймфрейма) на графике до места возникновения сигнала. Для бычьего сигнала это расстояние от close сигнального бара, до open бара слева который на заданном в барах расстоянии. Для меджвежьего, аналогично. Смотреть рисунок для пояснения.(параметр 31 в советнике) Логика трейлинг стопа: после достижения прибыли в % от движения(о котором написано выше), стоп переводится в безубыток, и продолжается двигаться на заданное количество пунктов в % от движения. Расчет размера стоп-лосса и тейк профита производится в процентах от текущего депозита. Допустим риск на сделку(срабатывание стоп-лосса) 3%, движение цены было 100 пунктов, процент движения 30%, соответственно, если цена пройдет 30 пунктов, то при закрытии сделки по стоп-лоссу потери должны составить 3% от депозита. Для тейк-профита аналогично. У советника должна присутствовать самопроверка. Пока пользователь не укажет размеры стоп-лосса и тейк-профита, советник не начинает торговлю, и предупреждает пользователя алертом. Подробнее об обработке сигналов от индикаторов. Всего используется до пяти индикаторов. В первых 3-х ищется точное положение буферного сигнала.(указывается бар) В двух последних, проверяется диапазон баров слева от текущего бара(включая текущий). Поиск начинается с крайнего правого бара и уходит влево. Первый индикатор будет являться главным. Только если на нем был найден сигнал, то начинается проверка других индикаторов. Соответственно, только если на главном индикаторе будет зафиксирован противоположный сигнал, то сделка будет закрыта(опционально), противоположные сигналы от второстепенных индикаторов не учитываются. Логично, что закрытие сделки от противоположного сигнала, будет происходить только на той паре, на которой был зафиксирован этот сигнал. Если в советнике будет будет указан только один индикатор, то поиск сигналов будет происходить только от одного индикатора(5 индикаторов это не обязательное условие, индикаторов может быть и 1 и 2). Если поле главного индикатора ничего не вписано, то советник не начинает торговлю, даже если есть сигналы от второстепенных индикаторов. Так же в советнике должно быть три дополнительных параметра: Размер максимального спреда(если спред больше, сделка не открывается) Количество попыток для открытия сделки. Величина максимального проскальзывания(в процентах от движения) Размер лота вычисляется по формуле (риск на сделку)/стоп-лосс в пунктах Параметры советника: 1) Название индикатора 1: 2) Бар на котором ищется сигнал: 2.1)Номер буфера на покупку 2.2)Номер буфера на продажу 3) Название индикатора 2: 4) Бар на котором ищется сигнал: 4.1)Номер буфера на покупку 4.2)Номер буфера на продажу 5) Название индикатора 3: 6) Бар на котором ищется сигнал: 6.1)Номер буфера на покупку 6.2)Номер буфера на продажу 7) Название индикатора 4: 8) Диапазон баров на котором ищется сигнал: (к примеру если тут стоит цифра 5, то проверяется 5 баров влево начиная от крайне правого) 8.1)Номер буфера на покупку 8.2)Номер буфера на продажу 9) Название индикатора 5: 10) Диапазон баров на котором ищется сигнал:(к примеру если тут стоит цифра 5, то проверяется 5 баров влево начиная от крайне правого) 10.1)Номер буфера на покупку 10.2)Номер буфера на продажу 11) Максимальное количество открытых сделок: (если стоит к примеру цифра 6, то на счету разрешено иметь 6 открытых сделок) 12) Разрешено ли открывать сделки в одну сторону? YES/NO 13) Пауза между сделками в одну сторону: (в минутах, если разрешена торговля в одну сторону, то советник проверяет как давно были открыты сделки (все, в том числе открытые другим советником или пользователем) на данной паре в одну сторону, если пауза больше заявленной величины, то советник открывает сделку, если меньше, то пропускает сигнал) 14) Максимальное количество сделок в одну сторону: 15) Сценарий прекращения торговли: (выбирается цифра 1 или 2), одновременно два сценария работать не могут. 16) Максимальная просадка для первого сценария: (указывается в процентах, если стоит цифра 30, то максимальная просадка 30%) 17) Максимальная просадка для второго сценария: (указывается в процентах, если стоит цифра 30, то максимальная просадка 30%) 18) Риск на сделку: (в процентах от депозита) 20) Стоп-лосс в процентах от движения: (вычисляется процент от движения слева в пунктах) 21) Тейк профит в процентах от движения: (вычисляется процент от движения слева в пунктах) 22) Использовать трейлинг-стоп? yes/no 23) % от движения цены которое надо пройти для перевода в безубыток: 24) % от движения цены которое надо пройти для трала стопа от безубытка: 25) Размер максимального спреда(если спред больше, сделка не открывается, в пунктах): 26) Количество попыток для открытия сделки: 27) Величина максимального проскальзывания(в процентах от движения, я понимаю, что проскальзывание может быть гораздо меньше самого движения, так что цифра 0.000001 вполне реальна): 28) Закрывать сделку при наличии противоположного сигнала? YES/NO (в учет берется сигнал только от главного индикатора, он же первый) 29) Часы работы советника(по терминальному времени) 30) Дни работы советника (реализуется разработчиком как ему удобнее, выпадающим списком, через запятую(вписывается) и.т.п) 31) Расстояние в барах для расчета движения цены: