Поместим файл класса IKSignal в каталог Include и включим его в основной файл индикатора:
Теперь функция OnCalculate примет следующий вид.
Здесь мы создаем экземпляр класса IKSignal с указанными в правильном порядке параметрами и применяем к нему функцию draw.
Как видно, код основного файла индикатора значительно упрощается.
При этом функциональность индикатора осталась той же самой.
Почему не работают индикаторы
Для торговли на Форекс предлагается огромное число самых разнообразных индикаторов, накладывая которые на график цены сразу же видно, что все они замечательно предсказывают движение цены и дают замечательные сигналы на продажу и покупку.
Почему же тогда начинающий трейдер, пользуясь индикаторами, сразу же уходит в минус?
Основные причины две.
Первая причина — это размер спреда. При увеличении спреда количество удачных сделок будет стремительно уменьшаться.
И вторая причина — это то, что в реале сделка не открывается на открытии того же бара, на котором индикатор дает сигнал, а открывается или закрывается позже.
В качестве примера рассмотрим индикатор Parabolic SAR.
Покупка — разворот, на анализируемом баре индикатор ниже цены, а на предыдущем — выше.
Продажа — разворот, на анализируемом баре индикатор выше цены, а на предыдущем — ниже.
Возьмем шаг индикатора 0.02, спред 0.0002 на паре EURUSD.
При условии открытия и закрытия позиции на открытии того же бара, на котором индикатор формирует сигнал, получаются следующие результаты:
Здесь для сделок на покупку и продажу на 15 минутных, 30 минутных, часовых и четырех часовых графиках мы получаем прибыльных сделок больше, чем убыточных.
Как видно, на любом интервале индикатор работает, количество сделок с положительным профитом превышает количество сделок с отрицательным профитом, и мы при любом раскладе должны зарабатывать деньги.
Однако в реале сделка открывается и закрывается позже, и результаты станут следующими для открытия и закрытия, например, на следующем баре.
Здесь для сделок на покупку и продажу на 15 минутных, 30 минутных, часовых и четырех часовых графиках мы получаем убыточных сделок больше, чем прибыльных.
Как мы видим, картина резко меняется и на любом интервале индикатор не работает, количество сделок с отрицательным профитом превышает количество сделок с положительным профитом, и мы при любом раскладе теряем деньги.
Конечно такая ситуация зависит от конкретной валютной пары и конкретного периода времени.
На каком-то периоде времени и такой индикатор может показать прибыль.
Но в долгосрочной перспективе, при открытии и закрытии позиции на следующем баре индикатор не покажет итоговый профит.
Поэтому в реальной торговле пользоваться одним индикатором нельзя и нужно разрабатывать сложные торговые стратегии.
Общая структура советника
Советник или эксперт это MQL5-программа, способная автоматически выставлять и закрывать ордера на покупку и продажу финансового инструмента, таким образом, осуществляя автоматическую торговлю в клиентском терминале.
Подобно индикаторам, код экспертов основан на функциях обратного вызова, вызываемых клиентским терминалом при наступлении определенных событий.
Для эксперта это такие функции как OnInit (), OnDeinit, OnTick (), OnTimer (), OnTrade (), OnTradeTransaction, OnTester (), OnTesterInit (), OnTesterPass (), OnTesterDeinit (), OnBookEvent (), OnChartEvent ().
Впрочем, для организации автоматической торговли достаточно двух функций OnInit () и OnTick ().
В отличие от индикаторов, для экспертов особо никакие свойства не объявляются, за исключением link, copyright, version и description, и, если эксперт попутно с торговлей не рисует индикатор.
Поэтому перед функциями обратного вызова, в эксперте, объявляются входные параметры, хэндлы используемых технических индикаторов, глобальные переменные и константы.
Здесь правда есть один параметр, которого нет в индикаторе, но который присутствует для эксперта.
Это магическое число или идентификатор эксперта.
С помощью магического числа идентифицируются торговые ордера, выставляемые экспертом.
Это дает возможность создания взаимосвязанной системы из нескольких работающих экспертов.
В функции OnInit эксперта производится инициализация хэндлов используемых технических индикаторов и переменных эксперта.
В функции OnDeinit эксперта, как правило, производится удаление глобальных переменных клиентского терминала, созданных экспертом во время тестирования, оптимизации или отладки, а также освобождение расчетной части используемого индикатора и удаление индикатора из графика по окончании тестирования эксперта с помощью функции IndicatorRelease ().
Глобальные переменные клиентского терминала отличаются от глобальных переменных MQL5-приложения.
Глобальные переменные клиентского терминала могут быть созданы MQL5-приложением с помощью функции GlobalVariableSet, но при этом они становятся доступными для других MQL5-приложений клиентского терминала, в отличие от глобальных переменных MQL5-приложения.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии