Задача: написать индикатор анализирующий внешние данные, и советник который будет вести автоматическую торговлю по этому индикатору.
Итак, есть сайт: (http://ru.investing.com/technical/%D0%A1%D0%B2%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9-%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7), который приводит данные сводного технического анализа для торговли на форекс.
Индикатор, который мне нужен, должен эти данные обрабатывать.
Интересует именно прогноз для пары eur/usd. Анализировать будем только строчку «резюме».
В этой таблице бывают такие значения:
Активно покупать,
покупать,
нейтрально,
продавать,
активно продавать
Каждому из этих значений нужно присвоить цифровое значение:
Активно покупать= - 2
покупать= -1
нейтрально= 0
продавать = 1
активно продавать = 2
Каждому столбцу нужно присвоить «индекс значимости», который я потом смог бы легко изменить в настройках. Предварительно это должно быть равно:
5 минут = 0
15 минут = 0,25
1 час = 0,5
1 день = 1
Далее, собственно работа скрипта:
1)скрипт обращается к сайту и вытаскивает данные, актуальные на данный момент.
2)Присваивает им соответствующие цифровые значения
3) умножает цифровые значения на индекс значимости.
4) полученные цифры суммирует и получает предварительное прознозное значение.
6)После этого сравниваем цифровые значения в столбцах «1 час» и «1 день». Если они с противоположными знаками ( в одном положительное число, а во втором отрицательное), то предварительное прогнозное значение умножается на ноль и итоговое прогнозное значение (ИПЗ) равно нулю.
7) Если в столбцах «1 час» и «1 день» одно из цифровых значение равно нулю, то сравниваем значение в столбце «15 минут» с тем значением, которое не равно нулю. Если они с противоположными знаками ( в одном положительное число, а во втором отрицательное), то предварительное прогнозное значение умножается на ноль и итоговое прогнозное значение (ИПЗ) равно нулю.
8) индикатор выполняет запрос на сайт и соответственно обрабатывает данные каждые Х минут (значение должно устанавливаться в настройках индикатора ).
9) Скрипт должен сохранять в архив данные о каждом расчете ИПЗ в течении Y суток (значение должно устанавливаться в настройках индикатора).
10) Индикатор на основании архива строит график в приблизительно таком виде: откладывая ИПЗ по вертикальной шкале -8…0….+8, при этом достраивая график после каждого внесения новых данных в архив
Алгоритм работы советника:
I) Во время запуска, в настройках советника указываются такие параметры:
1)Порог входа (ПВ) – значение ИПЗ в индикаторе, взятое по модулю. Если ПВ=5, то сделки будут открываться только если ИПЗ будет менше -5 или больше +5. При значении ИПЗ в диапазоне -5….+5 сделки открываться не будут.
2) Обьем лота
3) S/L - Стоп лосс в пунктах. Значение S/L , выставляемое советником будет отличаться от цены открытия на это значение.
4) Тайм аут: время в часах, в течении которого после закрытия сделки с убутком не может быть открыта новая позиция.
II)
После ввода настроек, советник начинает работу:
· после каждого получения нового значения ИПЗ, советник проверяет наличие открытых сделок.
· Если есть открытая сделка, то советник сравнивает «ИПЗ-Откр» (значение ИПЗ при котором был открыт ордер, который не закрыт на данный момент. Это значение фиксируется при открытии скриптом ордера) - и новое ИПЗ.
o Если они с одинаковым знаком, то сделка остается открытой.
o если новое ИПЗ с противоположным знаком или равно нулю, то сделка закрывается, фиксируя прибыль или убыток и советник переходит к анализу на открытие ордера.
o Если значение «ИПЗ-Откр» не зафиксировано, то есть предыдущая сделка была открыта вручную, а не советником, то он переходит к анализу на открытие ордера.
· Если Открытых сделок нет, скрипт проверяет результат предыдущей закрытой сделки.
o Если она закрыта с убытком, то скрипт записывает время закрытия сделки.
§ Если после закрытия сделки, прошло больше чем время, указанное в настройках в значении тайм аут, то советник проводит анализ на открытие ордера.
§ Если после закрытия сделки, прошло меньше чем время, указанное в настройках в значении тайм аут, то дальнейших действий советник не производит
o Если сделка закрыта с прибылью или предыдущих сделок нет, то советник проводит анализ на открытие ордера.
III)
Анализ на открытие ордера: советник ожидает получения нового ИПЗ из индикатора и анализирует его значение.
o Если ИПЗ по модулю меньше, чем ПВ, то советник ожидает следующее значение ИПЗ из индикатора.
o Если по модулю, оно больше порога входа (ПВ), то при отрицательном значении ИПЗ открывается сделка на покупку, при положительном – на продажу.
· Сделка открывается по текущей цене
· Лотом указанным в настройках.
· Значение Стоп лосс при открытии сделки:
o на покупку будет ниже цены открытия сделки на указанное в настройках значение S/L .
o на продажу – выше цены открытия сделки на указанное в настройках значение S/L
· Тейк профит – не устанавливается.
После открытия ордера, фиксируется значение ИПЗ, которое было при открытии сделки (ИПЗ-Откр).