Требуется написать ICustom-ую сову. Принцип работы советника: Советник будет использовать сигналы от внешних индикаторов. Которые не будут вписаны в код советник. В советнике будет указываться название индикаторов, номера буферов для открытия позиций на селл или бай, а так же точное положение бара на котором будет искаться сигнал от главного индикатора(ГИ), и диапазон баров, на котором будет искаться сигнал от дополнительного индикатора(ДИ) их их взаимное расположение. Логика советника. Вначале советник проверяет наличие сигнала от главного советника на баре который вписан в настройках(0 текущий бар, 1,2,3 и.т.д бары слева от текущего). После того как сигнал найден, советник на заданном диапазоне слева от сигнального бара главного индикатора(СБГИ) ищет сигнал от дополнительного индикатора (при этом если начало диапазона будет равно 0, то соответственно сигнал от дополнительного индикатора будет искаться так же и на баре, на котором появился сигнал от главного индикатора). Если советник находит нужный сигнал, советник находит расстояние, которое прошла цена относительно каждого из сигналов,слева от каждого из них,на заданном диапазоне баров. Расстояние при это находится по следующему алгоритму: Берется крайний левый бар заданного диапазона, находим его цену open и из него вычитается цена close крайне правого бара входящего в диапазон. Далее находим модуль этого числа. В следующем шаге советник проверяет, какое из расстояний должно быть больше(указывается пользователем). Если расстояние которое прошла цена слева от СБГИ должна быть больше чем расстояние слева от сигнального бара дополнительного индикатора(СБДИ), то советник действует по следующей инструкции: Расстояние которое прошла цена слева от СБГИ делится на три равных кластера. При этом нумерация кластеров происходит от close крайне правого бара входящего в диапазон к open крайне левого бара входящего в диапазон нахождения движения цены относительно СБГИ. Далее проверяется положение меньшего цены ходы(МХЦ) относительно большого хода цены(БХЦ). По следующим параметрам: Должен ли входить МХЦ в первый кластер БХЦ?(который ближе всего к close БХЦ) На сколько процентов МХЦ выходит за пределы БХЦ(то есть за пределы 2 и 3 кластера БХЦ, так как МХЦ меньше БХЦ, что очевидно, то за пределы 1 кластера БХЦ МХЦ 100% не должна выходить) и больше ли это заданной величины. На сколько процентов присутствие МХЦ больше в 3-м кластере чем во втором и соответствует ли оно заданным условиям(если в условии будет 0, то положение МХЦ относительно 2 и 3 кластера безразлично). И четвертая проверка, это проверка амплитуды движения цены между МХЦ и БХЦ. Если БХЦ направлено вверх, то на диапазоне между крайне правым баром входящего в диапазон расчеты движения цены относительно СБДИ и крайне левым баром входящего в диапазон расчета движения цены относительно СБГИ находим крайне верхнее положение цены до которого оно поднималось, далее эту цену вычитаем из цены close крайне правого бара входящего в диапазон расчеты движения цены относительно СБДИ. После чего проверяем, на сколько процентов полученная величина меньше МХЦ(если величина больше МХЦ, то далее проверка не производится) и сколько заданно в условиях.(рисунок 1) Если же БХЦ направлено вниз, то на диапазоне между крайне правым баром входящего в диапазон расчеты движения цены относительно СБДИ и крайне левым баром входящего в диапазон расчета движения цены относительно СБГИ находим крайне нижнее положение цены до которого оно опускалось, далее эту цену вычитаем из цены close крайне правого бара входящего в диапазон расчеты движения цены относительно СБДИ. После чего проверяем, на сколько процентов полученная величина меньше МХЦ(если величина больше МХЦ, то далее проверка не производится) и сколько заданно в условиях.(рисунок 2) Если расстояние которое прошла цена слева от СБГИ должна быть меньше чем расстояние слева от сигнального бара дополнительного индикатора(СБДИ), то советник действует по следующей инструкции: Расстояние которое прошла цена слева от СБДИ делится на три равных кластера. При этом нумерация кластеров происходит от open крайне левого бара входящего в диапазон к close крайне правого бара входящего в диапазон нахождения движения цены относительно СБДИ. Далее проверяется положение меньшего цены ходы(МХЦ) относительно большого хода цены(БХЦ). По следующим параметрам: Должен ли входить МХЦ в первый кластер БХЦ?(который ближе всего к open БХЦ) На сколько процентов МХЦ выходит за пределы БХЦ(то есть за пределы 2 и 3 кластера БХЦ, так как МХЦ меньше БХЦ, что очевидно, то за пределы 1 кластера БХЦ МХЦ 100% не должна выходить) и больше ли это заданной величины. На сколько процентов присутствие МХЦ больше в 3-м кластере чем во втором и соответствует ли оно заданным условиям(если в условии будет 0, то положение МХЦ относительно 2 и 3 кластера безразлично). И четвертая проверка, это проверка амплитуды движения цены между МХЦ и БХЦ. Если БХЦ направлено вверх, то на диапазоне между крайне правым баром входящего в диапазон расчеты движения цены относительно СБДИ и крайне левым баром входящего в диапазон расчета движения цены относительно СБГИ находим крайне верхнее положение цены до которого оно поднималось, далее эту цену вычитаем из цены open крайне левого бара входящего в диапазон расчеты движения цены относительно СБГИ. После чего проверяем, на сколько процентов полученная величина меньше МХЦ(если величина больше МХЦ, то далее проверка не производится) и сколько заданно в условиях.(рисунок 3) Если же БХЦ направлено вниз, то на диапазоне между крайне правым баром(КПБ) входящего в диапазон расчеты движения цены относительно СБДИ и крайне левым баром(КЛБ) входящего в диапазон расчета движения цены относительно СБГИ находим крайне нижнее положение цены до которого оно опускалось, далее эту цену вычитаем из цены open крайне правого бара входящего в диапазон расчеты движения цены относительно СБГИ. После чего проверяем, на сколько процентов полученная величина меньше МХЦ(если величина больше МХЦ, то далее проверка не производится) и сколько заданно в условиях.(рисунок 4) Далее, если все условия выполнены, то происходит выставление ордеров. Выставление ордеров происходит только в том случае, если советник находит сигналы от ГИ и ДИ и они направлены в одну сторону. Если советник нашел сигнал от ГИ но не нашел сигнал от ДИ то позиция не открывается. Размер позиции указывается либо фиксированным лотом либо в зависимости от процента риска от депо и размера стопа в пунктах, расчет величины стоп-лосс и тейк профита в пунктах происходит относительно движения цены от СБДИ или СБГИ. Пользователь выбирает относительно какого движения рассчитывать СТОП-ЛОСС в процентах. Допустим пользователь выбрал расчет стопа относительно движения цены от СБДИ, движение цены относительно СБДИ было равно 1000 пунктам по пятизнаку, размер стопа в процентах от движения цены от СБДИ равно было 30%, то размер стопа в пунктах равен 300. Тейк профит рассчитывается аналогично. Расчет размера позиции при выборе варианта в процентах от депо должно быть следующего вида: Размер лота = макс. риск (в $) / стоп лосс (в пунктах) / минимальную стоимость 1 пункта * минимальный торговый лот В советники должны быть реализованы следующие функции: Прекращение торговли после просадки в процентах от уровня максимального депозита за все время торговли после включения в работу советника. Если депо было 1000 долларов, максимальный процент просадки 30%, то после достижения просадки в 300 долларов, то советник перестает открывать ордера, а текущие ордера закрывает до перезагрузки советника. Либо допустим, начальный депозит 1к долларов, получена прибыль в размере 1к долларов, максимальный размер депо теперь 2к долларов, то торговля прекращается при просадке в размере 600 долларов. ВНИМАНИЕ!!! Просадкой будет считаться даже убытки понесенные по вине пользователя(пользователь открыл неправильные сделки) или по вине другого советника. Максимальное количество сделок открытых на текущей паре(в учет берутся сделки открытые пользователем или другой совой). Максимальное количество сделок открытых на счете(в учет берутся сделки открытые пользователем или другой совой). Если две верхние величины достигли лимита, то новые сделки не открываются пока количество сделок не будет меньше лимита. Пауза между сделками на одной паре(в минутах). Если на паре на которой работает советник уже есть сделки, независимо от того, открыл ли их пользователь или другой советник, и время паузы еще не окончено, то советник не пропусти открытие сделки, даже если были сигналы на открытие. Во сколько раз стоп-лосс должен быть больше среднего спреда крайне правого бара на графике. (в памяти должно храниться только значение среднего значения спреда за один последний бар, дабы не было ее переполнения.) Во сколько раз тейк профит должен быть больше среднего спреда крайне правого бара на графике. (в памяти должно храниться только значение среднего значения спреда за один последний бар, дабы не было ее переполнения.) Если хотя бы одна из этих величин меньше заданных условий, то сделка не открывается. Добавлять ли размер размер среднего спреда за последний бар к стоп-лоссу. Уменьшить ли тейк профит в пунктах на размер среднего спреда в пунктах за последний бар. Часы и минуты торговли относительно каждого дня недели.