仕事が完了した
指定
Здравствуйте, уважаемые программисты. Для вашей уверенности, ваш заказчик (я :) - квалифицированный трейдер с опытом программирования и ваш нелегкий труд мне понятен. Поскольку моя квалификация не позволяет писать на MQL4 и MQL5, обращаюсь к вам.
Для начала есть небольшая задача по созданию тестового робота для терминала MT5 Alpari - Hedge. Прошу прочесть описание полностью, в нем есть тонкости, которые не все смогут понять, они связаны с математикой. Робот должен работать на указанном выше терминале на реальном счете, на всех таймфреймах, включая нестандартные (20 мин, 3 часа и пр.). Отладку необходимо производить именно на этом терминале, на реальном счете.
Сама программа достаточно проста. В ТЗ постарался максимально полно, точно и наглядно представить задачу. Тестирование, правки, если необходимо, модификации стараюсь осуществлять оперативно, плачу быстро. Если дело идет, даю индивидуальные заказы.
Сразу оговорюсь, в цену, которую мы с вами примем, входит отладка программы и небольшие модификации (не более 5% от исходного кода). Перед
представлением чернового результата необходимо протестировать робота на все требования ТЗ на таймфреймах 1 мин, 15 мин, 1 час, 1 день на
инструментах
EURUSD, GBPUSD, AUDUSD, XAUUSD, SPX500. Код должен быть
оптимизирован таким образом, чтобы при оптимизации в «тестере стратегий» оптимизация занимала минимальное время. Необходимо выбирать
решения с наименьшими затратами времени.
Итак, вот что нужно сделать. Робот должен:
1. Брать значение Moving Average
и вычитать последущее значение из предыдущего. См. рисунок.
На верхней картинке видим значение в 10:20, на нижней в 10:40.
От значения в 10:20 отнимаем значение в 10:40
1,19610 – 1,9518 = 0,092
Это происходит на каждом баре.
2. В момент изменения знака этой разности начинается отсчет баров. То есть, если разность была положительной – то, в момент, когда она становится отрицательной – робот начинается считать бары и наоборот, если разность была отрицательной, отсчет начинается в момент, когда она стала положительной. Бар, на котором разность поменяла знак – первый. Если разность равна нулю, отсчет начинается, если следующая за нулем разность не ноль и имеет знак, противоположный той разности, которая была перед нулем (нулями).
3. Отсчет прекращается в момент, когда разность меняет знак и начинается с единицы, как в п.1
4. В настройках робота должны задаваться все параметры Moving Average. Сама MA, берется стандартная из терминала.
5. В настройках должно задаваться число баров после смены знака.
6. Теперь о постановке ордеров. Ордер ставится в момент открытия бара, следующего за заданным в настройках. Например – если в настройках задано число 5 – то ордер ставится в момент открытия 6-го. Ордер ставится в сторону движения МА на последнем заданном в настройках баре. Т.е. если задано значение числа баров – 5, и в момент закрытия бара 5, МА шла вниз, то ставится ордер на продажу, если в момент закрытия бара 5 МА шла вверх, ставится ордер на покупку.
7. При постановке ордера ставится Stop Loss и Take Profit, они тоже должны задаваться в настройках.
Ордер ставится независимо от того, есть действующие ордера или нет.
8. Должна быть предусмотрена возможность закрытия сделки по числу заданных баров. например, если задано число баров 5, то ордер закрывается на открытии бара 6. В настройках должна быть предусмотрена возможность отключения закрытия сделки по числу баров. Если число баров задано 0 - закрытие не должно происходить.
9. Должна быть предусмотрена возможность работы по времени внутри суток. Т.е. если задано время 06:00 - 15:00 - то отсчет баров начинается с бара открывшегося в 06:00 и прекращается в 15:00, сделки не закрываются по времени.
10. Теперь о нюансах. Постановка ордера должна быть запрещена, если в течение последнего отсчета баров, значение разности MA не превысило заданное. Например, если максимальная разность была 0,092, но задано значение 0,1, то постановка ордера не производится. Для отрицательных значений наоборот, если задано -0,1, но значение разности в течение последнего отсчета не падало ниже -0,092, то ордер, так же, не ставится.
11. Нюанс #2. Робот создается в 2-х версиях - они идентичны, но вторая, кроме всего вышеописанного, должна записывать в файл CSV значения при постановке ордера - время, дату, размер трейда, вид сделки (sell/buy), значение спреда. Две версии обязательно, вариант с включением и выключением записи в настройках не подходит. Вторая версия создается только по окончании работы над первой.
Предпочтительный канал общения – WhatApp, или, хотя бы, Skype, можно текстом, но, лучше голосом, так быстрее. Можно и в чате терминала/ MQL5. Готов работать в режиме реального времени, насколько это возможно.