작업 종료됨
명시
Требуется написать советник.
Приоритет выбора исполнителя: казачество, отзывы, минимальное время и разумный ценник, т.к. я не знаю сколько стоит данная работа, буду выбирать из первой и адекватности цены и профессионализма человека.
Я не совсем четко разбираюсь в программировании MQL, но принцип я понимаю, знал бы Си и знал все тонкости MQL сам написал за вечер, но есть другие грабли и тонкости о которых я могу не знать (например использование while (IsTradeContextBusy()) Sleep(10)). Соответвенно, мне нужен некий конструктор или шаблон который я буду собирать и модифицировать в том или ином варианте.
В текущем варианте Сов. должен корректно оттестирован и работать под Demo ECN.Alpari
Тот кто будет это писать, должен иметь возможность возможно за дополнительную плату, помогать модифицировать его или давать некие советы/подсказки.
Соответвено я рассчитываю на адекватного человека и разумного профессионала который может увидит или захочет добавить что-то свое, типа while (IsTradeContextBusy()) Sleep(10) о чем я не могу знать.
1) Код должен быть понятен и максимально коментируемый.
2) Советник должен состоять из блоков т.е. подпрограмм, в int start() желательны ссылки на блоки.
3) Думаю основой блока будет некая прослойка на индикаторы, например Moving Average, Stoch и т.д.
a) Блок должен снимать показания с индикатора, и задавать логику работы Верх или низ при достижении заданых значений, например при пересечении 90 движение было вниз, значит Сигнал движение ВНИЗ и соответвенно наоборот, индикатор прошел отметку 15 (или 0.002) и при этом имел движение вверх, значит Сигнал вверх.
b) Иметь выбираем тайм фрейм (я не знаю но думаю это можно) например один блок я сделаю чтобы брал инфу с M1 а другой M5 и буду собтирать логику в зависимости от сигналов.
4) Советник Должен иметь стоп лосс и тейк профит.
5) Магик обязательно.
6) советник должен уметь обрабатывать ошибки (нет маржи, нехватает средств и т.д.).
7) Контроль лота (зависимость лота от депозита) тут честно я не знаю как он должен, но думаю есть определенные готовые блоки у тех кто этим занимаеться
8) Кол-во ордеров (в паралель могут выставляться несколько ордеров)
9) время работы сова например с 0-24 часов,
10) Визуальная Индикация периуде: Название сова (пусть это будет это будет комент), Магик сова, Вывод данных Блок1 значение индикатора, текущее_значение, предыдущее_значение, Вывода данных Блок2, значение, текущее_значение, предыдущее_значение,
11) максимальный лот
12) минимальный лот
11) Трелинг-стоп на уровне советника
12) слипаж на н-ное кол-во пусктов
Как я это вижу, Для примера возьму два индикатора:
--------------------------------------------------------------------------------------------------------------------------
Блок1 "Прослойка" на индикатор, например Stoch:
Входные данные в функцию: Периуд, Рубеж Сигнал вверх, Рубеж Сигнал вниз, Контрль_Тригера (допустим M1,10,90, false)
Исходящие данные: текущие данные индикатора, Тригер_Сигнала, Текущий_Сигнал, Предыдущий_Сигнал (11,true,true,false) где первое текущее значение индикатора, второе Тригер сигнал изменился, далее true-вверх или false-вниз, и предыдущее значение было соответвенно, допустим вниз - значит false
Постоянные данные, Периуды, Медоды MA. Замедление и другие тонкие настройки задаются в блоке изначально и не меняются(в последствии это можно будет задавать в изначальных настройках советника, использовать начальные данные можно по умолчанию из штатного индикатора)
Логика Работа блока :
Смотрим, направление движения, например любой из двух линий (в даном случае две линии считаються как одна), при пересечении Рубежей, ставим переключатель событие произошло (Сигнал_Изменился) true, соответственно запоминаем последнее значение и устанавливаем новое.
Допускается срабатывание тригера два раза, например линия пересекла 10 два раза, соответственно логика работы блока не изменяется, Но сделать эту функцию отключаемой (true-false), например запретить изменение тригера, прока не произошло условие 10-90 т.е. проход рубежей, соответственно история предыдущего сигнала тоже не меняется.
И возвращаем нужные данные.
--------------------------------------------------------------------------------------------------------------------------
Блок2 "Прослойка" на индикатор, Moving Average:
Тут все проще, т.к. этот индикатор или вверх или вниз, соответвенно
Входные данные в функцию: Периуд, Рубеж Сигнал вверх, Рубеж Сигнал вниз, Контрль_Тригера (допустим M5,0,0,false)
Исходящие данные: текущие данные индикатора, Тригер_Сигнала, Текущий_Сигнал, Предыдущий_Сигнал (1.234,true,true,false)
Логика работы не отличается от предыдущего блока, но т.к. тут нет граничащих рубежей соответвенно данные будут идти постояным потоком.
То надо понять куда идет текущее движение вверх или низ и сохранять предыдущее значение, например данные могут быть, верх, верх, nil, низ...(по идее nil - это равновесие) соответвено если использование в этом варианте значений false и true затруднительно, тогда на Исходящих данных можно просто использовать 1 - вверх, -1 - вниз, 0 - равновесие
Не претендую на правильности или оригинальность, но вижу далее примерно так
--------------------------------------------------------------------------------------------------------------------------
Основной блок int start() :
Блок4 - просмотр ордеров и контроля ордеров на Bay/sell
Блок5 - Контроль магика
.... БлокN
Если Тригер_Сигнала_Блок1 true {
Соответвено незнаю как... но надо проверять предыдущий ордер, открытым предыдущим сигналом если он был открыт предыдущим сигналом а теперь сигнал изменился на противоположный, то ордер закрывается В не зависимости от стоп лоса или тейк профита.
если Текущий_Сигнал true, значение и тригер_Блок2 true { Вызываем процедуру (Блок3.1) открываем ордер на Sell}
если Текущий_Сигнал false, значение и тригер_Блок2 false { соотвевенно наоброт вызываем (Блок3.2) Ордер Bay}
}
--------------------------------------------------------------------------------------------------------------------------
Блок3.1 - Блок3.2
При открытии ордера советник должен запоминать от какого сигнала он был открыт (вверх/низ)
--------------------------------------------------------------------------------------------------------------------------
Входящие и настраяиваемые данные в Сов
1) Магик
2) Комент сделки
3) Стоп лосс
4) Тек профит
5) магик
6) минимальный лот
7) максимальный лот
8) кол-во ордеров
9) время работы
10) кол-во пипсов через который советника будет использовать трелинг стоп (чтобы минимизировать кол-во изменений ордеров в определенный промежуток вермени, може кто-0то придложет более оригинальный вариант)
11) Тайм фрейм в Блоке1 для индикатора
11) Рубеж Сигнал вверх в Блоке1
12) Рубеж Сигнал вниз в Блоке1
13) надо ли использовать контроль рубежа в блоке1
14) Слипаж
Вроде ничего не забыл...
Заранее благодарен, за скорость и профессионализм исполнения данного заказа.
______________
С уажением.
Господа прочтите ещё раз, я там добавил ещё один нюанс работы.