30 Июнь 2009

Пишем советник форекс для MetaTrader 4. Часть 2

В предыдущей публикации «Пишем советник форекс для MetaTrader 4. Часть 1» мы подробно остановились на базовых функциях, которые необходимо учесть при создании советника. Сегодня мы продолжим серию и разберем, каким образом функционирует торговый советник форекс под торгово-аналитическую платформу Meta Trader 4.

Естественно, что на данном этапе механическая торговая система forex для нас понятна только где-то на уровне осязания, что вот, есть где-то что-то такое. Поэтому будем ориентироваться на начальный уровень и разберем все по порядку. Итак. В MetaTrader 4 в качестве примера советника, который стоит по умолчанию, представлен MACD Sample.

MACD Sample – это элементарный торговый советник форекс, оригинал которого сделан фирмой MetaQuotes. В МТ4 данный советник форекс модифицирован под 4-часовой график GBP/USD. Но могут быть и другие модификации. Индикатор MACD присутствует практически во всех торгово-аналитических платформах. Советник на основе MACD использует в своей работе пересечения 4 различных MACD + 2 скользящие средние. Они помогают определить направление позиции, которая будет следующей. Советник MACD использует в своей работе Trailing Stop (скользящий стоп-ордер). В связи с такой особенностью механическая торговая система forex терпит немного убытков. Но особенность этого советника форекс заключается в том, что он должен быть постоянно включен с целью остановки убыточных сделок.

В предыдущей статье мы также останавливались на таких функциях, как init(), deinit () и start(). Именно о последней мы и поговорим более подробно. Дело в том, что эта функция является основной в работе советника форекс, поэтому особенности функционирования данной функции нужно основательно изучить. Еще раз напомним, что именно эта функция вызывается МТ4 каждый раз после того, как котировки будут меняться. И именно функция start() будет проводить анализ рынка, и заключать сделки на основании сигналов индикаторов, которые входят в механическую торговую систему forex.

Ниже мы подробно опишем по порядку процесс выполнения работы функцией start(). Работа функции подразделяется на ряд блоков. Мы опишем по порядку блоки. Все они, за исключением двух первых, как правило, выполняются именно функцией start(). Итак:

1. Для начала необходимо получить первоначальные данные. Эти данные получаются за счет использования функции init(). Мы уже писали про эту функцию, но на всякий случай еще раз напомним, что она служит для трех наиболее важных задач: при запуске МТ4, при смене временного периода графика и когда мы подсоединяем советник форекс к графику.

2. Следующий пункт – изменение цены. Каждый раз, когда происходит ее изменение, советник форекс обращается к функции start(). Но в случае, если функция не успела выполнить свою работу до формирования нового тика, то для нового тика start() не вызывается. Сам же анализ изменения цены анализируется с помощью внутренних алгоритмов МТ4.

3. Обязательно стоит учесть один нюанс. Каждая механическая торговая система forex должна соблюдать определенные паузы при запросе к серверу, который принимает запросы на размещение ордеров. В разных компаниях установлен различный лимит по времени на количество и интервал запросов. Этот интервал можно подсчитать самостоятельно, а можно и считать. Это не столь принципиально, хотя и важно. Вообще, как правило, интервал при осуществлении запросов к серверу, принимающему заявки на совершение сделки, составляет порядка 10 секунд. Если в течение этого времени будет сделано несколько запросов, то они будут отклонены, а вам выдаст ошибку.

4. Следующий пункт, где мы будем реализовывать советник форекс – установление параметров индикаторов, которые используются в механической торговой системе forex. Работоспособность всех параметров будет определяться в ходе естественной фильтрации данных.

5. Далее идет блок, в котором анализируется число ордеров, которые в данный момент являются открытыми. Здесь стоит помнить про число запросов, которые можно проводить в определенный момент времени. В программное обеспечение может быть «зашито» использование определенного количества ордеров. Вообще же, лимит использования ордеров может быть установлен в зависимости от количества средств на вашем торговом депозите. То есть, вы должны определить лимит открытых ордеров, т.е. их максимальное число с учетом описанных выше особенностей.

В данный момент наша работа должна сводиться к поиску удачных параметров для входа в рынок. Поэтому мы анализируем значения индикаторов и пытаемся понять, существуют ли сопутствующие открытию позиции условия. Если таких условий не выявлено, то мы продолжаем работу – переходим к части советника, отвечающей за контроль открытых позиций. Если же есть условия, которые благоприятствуют совершению сделки, то пытаемся открыть позицию.

6. Далее мы рассчитываем правильно все условия для расстановки ордеров. Здесь может быть очень много рекомендаций. Все зависит от волатильности валютной пары, временного интервала торговли или даже каких-то специфических предпочтений, которыми вы обладаете. В любом случае, обязательно всегда используете ордера stop loss и take profit. После того, как вы окончательно определитесь с размещением ордеров, необходимо завершить выполнение функции start() и передать управление МТ4.

В заключение еще раз более подробно рассмотрим советник MACD, который идет по умолчанию в МЕ4.

1. Когда мы запускаем советник форекс, происходит получение данных и их проверка. За эти действия отвечает функция init(). Как мы уже говорили, существуют нюансы при пользовательских запросах, когда пользователь в короткий срок задает множество запросов. В данном случае не проверяется 10-ти секундный лимит.

2. Далее проверяем, сколько ордеров мы можем разместить в данном случае при наличии открытой позиции. Если же в данный момент открытые позиции отсутствуют, то мы можем проанализировать целесообразность их выставления. Если же нет необходимости в проведении подобного анализа, то переходим к следующему пункту.

3. Контролируем открытые позиции

И последний оператор, который мы упомянем – оператор return. Данный оператор завершает выполнение функции, которая выполняется в данный момент и возвращает управление программе, которая ее вызвала.

Вся схема, которую мы предложили в данной статье, является простейшим алгоритмом, поэтому любая механическая торговая система forex может быть построена на этой базе.


Fatal error: Uncaught Error: Call to undefined function similar_posts() in /var/www/pppara/data/www/forexman.info/wp-content/themes/Forextheme2/single.php:224 Stack trace: #0 /var/www/pppara/data/www/forexman.info/wp-includes/template-loader.php(74): include() #1 /var/www/pppara/data/www/forexman.info/wp-blog-header.php(19): require_once('/var/www/pppara...') #2 /var/www/pppara/data/www/forexman.info/index.php(17): require('/var/www/pppara...') #3 {main} thrown in /var/www/pppara/data/www/forexman.info/wp-content/themes/Forextheme2/single.php on line 224