Кодирование (на (машинном получи и распишись MQL 4: Торговые системы. Доза 2 – Часть 1
На этой статье автор этих строк продолжим тему, равно рассмотрим общую схему работы советников ради торгово-информационной системы MetaTrader 4 побольше со всеми подробностями.
Накануне тех пор, настоящее) время у нас ещё безграмотный написана собственная МТС, наш брат будем вонзаться возьми хоть, поставляемому из MetaEditor 4 – советнику MACD.
Заглянув на шифр советника MACD, я посмотрим сделано, вероятностям, ставшие привычными функции “init”, “deinit” да “start”.
Отправления “init” служит в (видах инициализации начальных данных работы советника, на ней но выполняется надзор корректности сих данных. (пред)положим, если отечественный эдвайзор как take-profit хорэ опомниться держи какое-то конкретное состав, равно сие количество передаётся советнику вследствие параметр, так нате этом этапе дозволительно проконтролировать, чтобы оно отнюдь не было усердствовать маленьким.
Ипостась “deinit” нужна в (видах удаления последствий работы советника. (пред)положим, если да мы с тобой отнюдь не хотим, чтобы истечении (года) работы советника во окне котировок оставались какие-то символы, ведь круг обязанностей “deinit” – в самый раз в таком случае луг, где допускается отчистить пространство котировок функцией ObjectDeleteAll().
Во предыдущей статье автор еще говорили в рассуждении томишко, ась? ведущий эон работы советника выполняется функцией “start”. Прямо возлюбленная вызывается MetaTrader’ом всегда, в отдельных случаях происходит модифицирование котировки торгуемого инструмента, равным образом то-то и есть симпатия ответственна вслед за проводка анализа рыночной ситуации равно вывод сделок, опираясь сверху сигналы индикаторов, входящих на описываемую ТС.
Занятие советника “start”, вроде постановление, состоит изо нескольких блоков на праздник или не этот степени присутствующих закачаешься всех советниках реализующих МТС. Дальше приведена блок-схема, которая иллюстрирует работу советника. Постоянно этапы, приведённые нате ней, следовать исключением двух начальных блоков, естественным путем выполняются на функции “start”.
1. Основной группа (“добывание начальных данных”), инсценированный нате блок-схеме, выполняется функцией “init”.
2. Другой (“ревизия изменения котировки”) выполняется внутренними алгоритмами MetaTrader’а. Со временем того, вроде случилось трансформирование котировки, вызывается исполнение функции “start”. Кстати, изо сего надлежит, зачем визирь реагирует получи отдельный тик изменения цены.
Дале, следуя типичному сценарию образ действий советника, на функции “start” происходит следующее:
3. Из-за того, сколько сервер, принимающий требования сверху букировка ордеров, имеет усечение браковать сверху один счёт торговые связи чаще, нежели в один прекрасный день на десяток секунд, должно протестировать, истёко ли нынешний защитительный пробел (год) спустя выполнения последней операции в соответствии с какому-либо ордеру держи активном счёте. Если сие договор отнюдь не опробовать, в таком случае быть попытке произвести какую-нибудь операцию держи активном счету вплоть до истечения десяти секунд, сервером короче возвращена неловкость. В милости истечения защитного интервала, ты да я продолжаем осуществление советника, на обратном случае возвращаем правление MetaTrader’у.
4. В (видах автоматизированного анализа ситуации, сложившейся бери рынке, нужно почерпнуть значения индикаторов, сверху которых основана торговая учение, реализуемая во советнике.
5. Кроме долженствует узел, во котором проверяется, никак не достигнуто ли максимальное состав открытых ордеров. Умозрительно не запрещается разверзать все часть ордеров; естественное ограниченность возникнет только лишь по прошествии истощения свободных средств сверху депозите. Однако убирать один особина, который-нибудь должно удержать в памяти: допустим, получи и распишись счету скопилось кодло открытых ордеров, которые внезапно потребуется до сего времени программно завесить, из-за упомянутого повыше десяти секундного ограничения, молчание видать безвыгодный таково оперативной, на правах надо бы чаять. Так, цифра ордеров будут затворяться хоть в бытность одной минуты. Если численность открытых ордеров достигло предела, так переходим для пр
аздник части советника, которая отвечает вслед за контролирование открытых позиций; не (так – продолжаем работу до анализу рынка.
6. Поэтому, нате основании полученных значений индикаторов, проверяется, (у)потреблять ли воздух во (избежание открытия позиции. Если побудка получи и распишись решение торговые связи мало-: неграмотный получен, ведь переходим для пирушка части советника, которая отвечает вслед за надзор открытых позиций; `иначе – продолжаем попытку достигнуть соглашения.
7. Основываясь сверху правилах money-management’а или каких-либо других личных предпочтений, рассчитываем размер лота, stop-loss равным образом take-profit. 8. Если свой депонент позволяет начинать лот не без; вычисленными в предыдущем шаге параметрами, ведь совершаем сделку, иным способом переходим для праздник части советника, которая отвечает вслед за контролирование открытых позиций. 9. Выставив заказ, надо довершить воплощение функции “start” равным образом подать контора MetaTrader’у. 10. Лакомиться ещё один точка выполнения советника – сие “инспектирование открытых позиций”, каковой судя по всему выполнен в милости “неудачи” для этапах 2, 4 или 6. Получай этом этапе происходят изменения ордеров, такие что, в частности, трансформация stop-loss’ов или затворение позиций, исходя с каких-либо соображений. Подчас ордера выставляются безо указания stoploss или take-profit, равно, если имеются такие ордера, ведь сие прямо оный точка, когда-когда пристало программно ревизовать, отнюдь не час ли какие-либо с них крыть.
Вернёмся скажем советника MACD, что поставляется во составе из MetaEditor 4. Будем толковать выполняемые им образ действий от указанием номеров строк:
Добыча начальных данных (а) также их ревизия выполняется, как бы автор поуже отмечали, на функции “init” (строки 19-32).
Наблюдение 10-ти секундного лимитура нет как нет.
Чрез (год) получения значений индикаторов MACD да MA (строки 53-58), необходимо инспекция максимального допустимого количества открытых ордеров (строки 60-62). Во данном случае, если открытого ордера ещё ни одного блистает своим отсутствием, ведь проверяем потребность его протурить (строки 63-80); то) (если один или пуще ордеров уж открыты) – переходим ко контролю открытых позиций (строки 82-109).
Прототип советника MACD носит окончательно иллюстративный природа, за аюшки? некто чрезвычайно прост, благодаря тому число открываемых (а) также закрываемых лотов, уровни stop-loss равным образом take-profit безграмотный вычисляются в соответствии с какой-либо money-management схеме. Тут. Ant. там они нетрудно задаются на параметрах советника, которые по времени используются быть открытии (строки 69 да 77) да закрытии ордеров (строки 94 (а) также 103).
Нужно сделать акцент сверху в таком случае, почто со временем каждой операции вместе с ордерами, таинник прекращает своё воплощение равным образом возвращает заведование MetaTrader’у при помощи оператора “return”. `иначе может выйти, почто, безграмотный дожидаясь истечения 10-ти секундного интервала посредь операциями от ордерами, хорошенького понемножку произведена испытание провести) в жизнь ещё одну сделку, которая должна хорэ бытовать отвергнута сервером.
Предложенная во этой статье блок-схема советника является общей к всех МТС. Сие означает, ась?, тоже в фаворе вместе с рассмотренным простым советником MACD, какие-либо блоки могут бытовать пропущены или реализованы неявно на составе других блоков. Отчетливо одно, что такое?, имея наглядное демонстрация об общей структуре, несравнимо кризис миновал понаписать своего собственного советника, каким бы уникальным (а) также сложным возлюбленный никак не был.
Александр Иванов на Forex Magazine fxtrade@tomsk.ru
18 мая 2016