Trabajo finalizado
Tarea técnica
Техзадание:
1. 1. В верхней части окна терминала должна отображаться дата открытия первого ордера: «Советник запущен ЧЧ.ММ.ГГГГ» (число, месяц, год 1.2.
1. 2. В верхней части окна терминала должно отображаться количество ордеров на покупку и продажу:
«Ордеров на покупку…. шт. Объемом … лота.
Ордеров на продажу…. Шт. Объемом … лота.»
1. 3. В верхней части окна терминала должна быть строка с комментариями (кириллица), которые вводятся пользователем в окне настроек.
1. 4. В нижней части окна терминала должна быть строка, отображающая текущее состояние прибыли: «Прибыль …$, … пунктов, …% от депозита»
2. В окне настроек нужно ввести параметры:
2.1. Ввести строку для комментариев, которые будут отображаться вверху окна терминала. Примечание: для выполнения п. 1.3.
2. 2. Ввести строку размера шрифта в окне терминала «FontSize» (по умолчанию 12) п. 1.1 –п. 1.4
2. 3. Ввести строку цвета шрифта в окне терминала «FontColor» (по умолчанию White) п. 1.1 –п. 1.4
2. 4. Ввести строку «ПериодМА» (по умолчанию 120) для установки периода индикатора Мувинг Аваридж
2. 5. Ввести строку «СдвигМА» (по умолчанию 6)
2. 6. Ввести строку «НачальныйЛот» (по умолчанию 0,01)
2. 7. Ввести строку с выбором «ШагЛота»(Любое число число от -10 до +10, в т.ч. 0, а также дробные числа с двумя знаками после запятой) (по умолчанию -0,01)
2. 8. Ввести строку для указания размера тейкпрофита «ТП» (Любое положительное число до +10, в том числе дробные числа с пятью знаками после запятой (по умолчанию 0,00517)
2. 9. Ввести строку для указания расстояния открытия следующего ордера «РД» (Любое положительное число до +10, в том числе дробные числа с пятью знаками после запятой (по умолчанию 0,00512)
2. 10. Ввести строку для указания Максимального числа добавлений ордеров «МЧД» (по умолчанию 25)
2. 11. Ввести строку с выбором «МножительЗамка» (положительные числа: целые и дробные с 1 знаком после запятой) (по умолчанию 1)
2. 12. Ввести строку «УстановитьЗамок» ( false/true), для локирования ордеров (по умолчанию true)
2. 13. Ввести строку «СнятьЗамок» ( false/true), для закрытия ордера-замка (по умолчанию true)
2. 14. Ввести строку «ПорядокУстановки» ( false/true), для определения последовательности установки замка и снятия замка (по умолчанию true)
2. 15. Ввести строку с выбором «Алерт» (false/true) (по умолчанию true)
2. 16. Ввести строку «Магик» для рабочих ордеров (по умолчанию 1)
2. 17. Ввести строку «МагикЗамка» для ордеров-замков (по умолчанию 2)
2. 18. Ввести строку «Slippage» для указания проскальзывания (по умолчанию 3)
3. Принцип работы советника следующий:
Пользователь перед началом работы в окне настроек пишет Комментарии, которые будут отражаться в окне терминала постоянно, устанавливает размер и цвет шрифта надписей п 1.1 – п 1.4.,
А также устанавливает Период Мувинг Аваридж, Сдвиг Мувинг Аваридж, размер Лота,Шаг лота Расстояние добавления, Максимальное число добавлений ордеров, размер Тейк Профита, определяет порядок последовательности установки замка и снятия замка ( false/true), Установить Замок ( false/true), Снять Замок ( false/true), Магик и Магик Лока, Проскальзывание, Алерт (false/true) п.2.1 –п . 2. 18
4.
4. 1. Советник производит проверку количества открытых ордеров и сравнивает с «МЧД». Если ордеров меньше, чем «МЧД», то идет работа по открыванию ордеров, иначе необходимо закрыть все ордера, кроме последнего. Этот пункт должен выполняться каждый раз после открытия любого ордера.
4. 2. После открытия первого ордера должна измениться надпись п.1.1.
4. 3. Cоветник должен вести работу по Мувинг Аверидж – если цена выше МА, то открывается ордер бай, устанавливается Тейк Профит, если ниже, то открывается ордер селл с установкой ТП. (выполняется п.4.1.) При достижении ТП ордер закрывается. (выполняется п.1.4.) Открытие следующего ордера никак не связано с закрытием предыдущего ордера по Тейкпрофиту, он открывается через расстояние, указанное пользователем в строке «РД» от точки открытия предыдущего ордера. Т.е. стандартный принцип. Но это не всё. При пересечении МА остаются убыточные ордера, которые должны локироваться, т.е устанавливаться замок. В работе советника (если УстановитьЗамок=true и СнятьЗамок=true) может быть только один замок селл или один замок бай. Это принципиальный момент! Если УстановитьЗамок=false, то замок не устанавливается. Если УстановитьЗамок=true, и СнятьЗамок=false, то замок должен устанавливаться, но не должен закрываться, и тогда замков может быть несколько.
После пересечения ценой индикатора МА и достижения ценой уровня «РД» должны произойти Установка и Снятие замков, пересчет размера рабочего ордера и его открытие в другом направлении. Если цена пересекла МА, но не достигла уровня «РД», замок НЕ УСТАНАВЛИВАТЬ!
Возможны два варианта:
А) если «ПорядокУстановки» =true
4. 4. Установить замок (т.е. открыть ордер) в размере =сумма лотов ордеров, подлежащих локированию, (Оставшихся по другую сторону МА),умноженной на «МножительЗамка» БЕЗ УСТАНОВКИ ТЕЙК ПРОФИТА. (выполняется п.4.1.)
ПРИМЕЧАНИЕ: При необходимости размер ордера нормализовать (округлить) до двух знаков после запятой. В этот момент сумма лотов на покупку равна сумме лотов на продажу.
4. 5. Открыть ордер, размер которого =Полученный Замок п 4.4.+«Шаг лота» С УСТАНОВКОЙ ТЕЙК ПРОФИТА, причем размер каждого последующего ордера изменяется на величину «Шаг лота». (выполняется п.4.1.) Если «ШагЛота» отрицательный, то каждый последующий ордер должен постепенно уменьшаться до «Начальный лот», если, конечно, цена к этому времени не пересечет в обратную сторону МА.
ПРИМЕЧАНИЕ: В этот момент сумма лотов на покупку равна сумме лотов на продажу ПЛЮС ОДИН ОРДЕР.
4. 6. При наличии встречного замка, установленного ранее, необходимо этот ордер закрыть. ПРИМЕЧАНИЕ: В этот момент ордеров по тренду становится ещё больше на количество разлокированных ордеров.
4. 7. В окне терминала должны обновиться данные в строчках п.1.2. и п. 1.4.
4. 8. При установке/снятии замка срабатывает «Алерт» – раздается звуковой сигнал и открывается окно с текстовым сообщением: «Замок …(размер лотов) Buy/Sell Закрыт. Открыт замок …(размер лотов) Buy/Sell». Сообщение в двух строках.
Далее советник продолжает работать в обычном режиме.
В) если «ПорядокУстановки» =false
4. 9. Сравнить количество лотов замка и ордеров , на которые надо сейчас установить замок
4. 10. При наличии встречного замка, установленного ранее, необходимо этот ордер закрыть.
4. 11. Если результат в п. 4.9 меньше, то необходимо установить замок (т.е. открыть ордер) в размере =сумма лотов ордеров, подлежащих локированию, (Оставшихся по другую сторону МА) минус сумма лотов ордеров закрытого замка и умножить на «МножительЗамка» БЕЗ УСТАНОВКИ ТЕЙК ПРОФИТА. Перейти к п. 4.13.
4. 12. Иначе (если лотов закрытого замка больше или равно), то необходимо открыть ордер-Замок в размере=сумма лотов ордеров, подлежащих локированию, (Оставшихся по другую сторону МА) и умножить на «МножительЗамка» БЕЗ УСТАНОВКИ ТЕЙК ПРОФИТА. Перейти к п. 4.13.
4. 13. Открыть ордер, размер которого = «НачальныйЛот» (выполняется п.4.1.)
4. 14. В окне терминала должны обновиться данные в строчках п.1.2. и п. 1.4.
4. 15. При установке/снятии замка срабатывает «Алерт» – раздается звуковой сигнал и открывается окно с текстовым сообщением: «Замок …(размер лотов) Buy/Sell Закрыт. Открыт замок …(размер лотов) Buy/Sell». Сообщение в двух строках.
Далее советник продолжает работать в обычном режиме.
Примечания:
4. 16. При открытии первого ордера в окне терминала должна появиться надпись «Советник запущен ЧЧ.ММ.ГГГГ» (число, месяц, год) п. 1.1
4. 17. При первом пересечении МА установленного замка еще нет, поэтому и закрывать в п. 4.6, 4.10. нечего. Учесть при написании советника!
4. 18. Учесть и проработать следующий момент: при изменении размера ордера на ШагЛота до НачальныйЛот может произойти несостыковка . К примеру: Рабочий ордер был высчитан и открылся в размере 0,14 лота, Каждый последующий ордер убывает на ШагЛота= -0,03, а НачальныйЛот=0,04.
Тогда последовательность ордеров следующая: 0,14 - 0,11 – 0,08 -0,05 – а далее не 0,02, а должен быть 0,04. И далее 0,04 до пересечения МА
4. 19. Результат вычисления Ордера-замка, полученный в результате умножения, нужно нормализовать (округлить) до двух знаков после запятой
4. 20. После открытия каждого ордера должен производиться подсчет количества ордеров Бай и Селл, и результат этого подсчета должен отражаться в окне терминала п. 1.2.
4. 21. После закрытия каждого ордера должен производиться подсчет прибыли, и результат этого подсчета должен отражаться в окне терминала п. 1.4. Результат отражается в Долларах, в количестве пунктов и в процентах от первоначального депозита.
5. Общая часть.
5. 1. Неизменяемые настройки Индикатора МА : Метод МА «Simple», Применить к «Close»
5. 2. Неизменяемые настройки шрифта надписей в окне терминала Font «Arial»
5. 3. Возможные предупреждения, открытие и закрытие ордеров, а также установка ТП должны отражаться в журнале.
5. 4. При тестировании советника в стандартном тестере стратегий возможные события, открытие и закрытие ордеров, а также установка ТП должны отражаться во вкладке «Результаты» и во вкладке «Журнал».
5. 5. Советник должен работать на Метатрейдере 4 , без сбоев у разных брокеров, быть с открытым кодом, с описанием переменных и пояснениями работы внутри программы.
5. 6. После компиляции не должен содержать ошибок и предупреждений.
5. 7. Советник должен нормально самостоятельно возобновлять работу после временного отключения (был закрыт рынок, был закрыт терминал, перебои с интернетом, брокер вводил временные ограничения на открытие сделок Only close).
5. 8. Советник должен нормально работать в стандартном тестере стратегий.
5. 9. Готовый советник представляет собой 2 файла с расширением .MQL4 Source File и .EX4. Файлы должны корректно открываться стандартным редактором MetaQuotes Language и не иметь паролей для открытия и редактирования.
5. 10. Присвоить советнику имя «Product2017»
На проверку готового советника беру 5 Рабочих дня
Обсуждать можно будет в рабочее время с 8 до 16 часов мск.