FXWizard
Гуру форума
Строим МТС на Метатрейдере
Начнем создавать своего робота. Обратимся к тому, как и где он «живет». Ближе к делу, то есть посмотрим рисунок 1.
Рисунок 1
Красная стрелка указывает, где из Метатрейдера можно вызвать поле Метаэдитора, то есть программу, где советник и пишется. Поскольку язык MQL4 специально создавался так, чтобы разобраться в нем мог любой человек, то и Метаэдитор открывается сразу с шаблона, который задает правильную структуру будущей программы. Впрочем, мы свободно можем там все стереть и написать по-своему, либо поменять местами вторую и третью части. Особого смысла, правда, в этом нет.
Наша задача только правильно вписать в шаблон торговые команды. Как и мы, робот «читает» свои задачи сверху вниз слева направо. То есть, в каком порядке мы проверку сигналов торговой системы прописываем, так они и будут обрабатываться советником.
Когда робот создан и запущен в рабочем листе, это выглядит так, как показано на рисунке 1 в правом верхнем углу. При этом не важно, начерчены ли индикаторы, по которым он работает. Все равно с каждым тиком робот всю процедуру будет повторять с начала.
Поэтому нужно стараться писать логически оптимальную программу. То есть с одной стороны, мы должны в своей МТС учесть все нюансы использования индикаторов, которые взяли для работы, с другой стороны это нужно сделать без лишних этапов: если логика ведет к открытию позиции вверх, то условия на открытие вниз в этой же строке мы не прописываем. Создавая МТС, можно на первых порах логику программы рисовать в виде схемы на бумаге. И ничего не забудете и робота своего не запутаете.
Лучше сразу учиться все писать правильно, чтобы потом не ломать голову, почему же робот не скомпилировался.
Интересно также и то, что если в программе робота вы указали какую-то функцию, но не задали команду ее вызова (то есть не предусмотрели вариантов, при каких условиях она будет использована), то при компиляции эта часть кода просто будет удалена. Зачем козе баян, если она играть на нем не будет?
Поскольку робот работает с каждым тиком, то насколько быстро он успеет провести проверку условий очень важно. Он не Цезарь. 10 дел сразу не делает. Он педант без фантазии – пока с одним тиком всю процедуру не проведет, за следующий тик не возьмется.
Поэтому в коде программы не лишней будет команда RefreshRates(), которая позволяет добиться того, что робот работает со свежими данными.
Удобно то, что нам по-прежнему не надо знать, как выглядит формула индикатора. Большая их часть уже есть в Метатрейдере, и робот просто будет к ним обращаться.
Также важно понимать, что МТС загружается именно в Метатрейдер. То есть автоматическая торговля становится возможной только тогда, когда компьютер включен, Метатрейдер открыт и на рабочем листе загружен робот. Автозапуск робота какой-либо дополнительной программой здесь целенаправленно запрещен.
Вообще, для торговли в Метатрейдере можно создать три вида программ. Кроме МТС, можно написать скрипт (программу для какого-то разового действия, например, открытия позиции) либо пользовательский индикатор.
При этом если у Вас есть разные версии одной МТС (у меня, например, по GBP тестируются два робота, отличающиеся лишь по способу взятия прибыли), то на одном рабочем листе возможно открыть только одну версию. Если нужно запустить аналогичную программу по такому же инструменту, то клонируем лист. Если ту же торговую систему нужно применить, например, к евро, то в роботе нужно будет сделать соответствующие изменения там, где мы прописываем валюту, с которой советник должен работать.
На одном рабочем листе можно одновременно запустить одного робота, один скрипт и сколько угодно пользовательских индикаторов. При этом последние имеют право рисовать на графике цены свои линии, но торговать по ним не будут.
Удобно также сделано и то, что, например, в пятницу, когда торговля уже закончена, можно просто выключить Метатрейдер. Когда в начале новой недели вы его откроете, все роботы так и останутся подключенными к тем листам, где были прикреплены ранее. То есть лишних телодвижений по загрузке МТС каждый вечер в воскресенье не нужно, если только вы не решили проверить какую-то другую версию своего советника.
Что еще нам важно при написании робота? Четко разобраться в смысле всех понятий, которыми оперирует MQL4. В учебнике по MQL4 нет сложных слов, и все понятия используются на первый взгляд знакомые («оператор», «функция» и т. п.), но употреблены они немного в других значениях, чем мы привыкли. И если эти новые значения не освоить, то робота своего мы никогда не напишем. Все вроде бы будет просто, но что делать дальше, так и не станет понятным и вдохновляющим к действию.
В следующей статье я хочу попробовать написать вместе с вами какого-нибудь простенького робота, чтобы у тех, кто еще не умеет писать советников, начал образовываться в голове «скелетик» нового навыка, который уже и будет обрастать «мяском» собственных знаний о роботостроении.
А пока представим, что определенная программа у нас уже есть. Посмотрим, как свое создание можно протестировать на истории силами Метатрейдера.
На рисунке 1 синяя стрелка указывает на значок тестера стратегий. Мы нажимаем туда и под окном с ценой и индикаторами открывается поле тестера стратегий. Смотрим рисунок 2.
Рисунок 2.
Когда мы создавали робота, Метатрейдер мудро поинтересовался какой род программы мы сохраняем: советник, скрипт или пользовательский индикатор. Мы, естественно, честно отвечаем, кого ваяем и программа сохраняет информацию в определенный каталог. Из этого каталога тестер и предлагает выбрать советника, работу которого проверяем на истории.
Я выбираю ту МТС, которая прикреплена к рабочему листу на первом рисунке, версию 1-6 по GBP, закрытие по индикатору Parabolic SAR.
В поле «Символ» выбираю тестируемую пару, то есть к архиву ее котировок будет обращаться тестер, «Модель» - «все тики», ставлю галочку «Использовать дату» и мне становится доступным диапазон периода, на котором я хочу провести тест. Например, июль 2011 (можно взять и больше). Далее нажимаем кнопку «Cтарт».
Если до начала теста внизу мы видели только две вкладки «Настройки» и «Журнал», то после теста появляются еще вкладки «Результаты», «График», «Отчет».
Во вкладке «Отчет» вы видим резюме теста: сколько сделок, какова их прибыльность и т. д. Смотрите сами на рисунке 3.
Рисунок 3.
Мы видим тот случай, когда в слове «матожидание» первая часть происходит вовсе не от слова «математика». С 10000 депозита за месяц получить 15 с половиной баксов – это что-то! Смотрим, почему такой «вдохновляющий» итог.
Для этого открываем вкладку «Результаты» и анализируем, как открывались и закрывались позиции, особенно обращая внимание на убыточные сделки. Там будет перечень всех ордеров с ценами, временем и результатами позиций по подобию реальной работы терминала.
Анализ этих ошибок и будет первой отладкой робота. На этом этапе становится видно все те «мелочи» в работе индикаторов, которые мы не учли в написании робота. Естественно, удобнее проводить отладку, если индикаторы, на которые вы опираетесь при торговле, все-таки начерчены.
К сожалению, не всегда ошибки связаны с тем, что в коде допущена какая-то ошибка. Иногда некорректно срабатывает тестер, потому что, во-первых, тики он генерирует сам, опираясь на минутки в указанном периоде, а во-вторых, может неверно обрабатывать некоторые команды, но все же это помощь. Общую картину мы получим.
Понятно, что при таком недостатке тестера, проверка МТС на демосчете на реальных графиках и тиках становится неизбежной.
Начнем создавать своего робота. Обратимся к тому, как и где он «живет». Ближе к делу, то есть посмотрим рисунок 1.
Рисунок 1
Красная стрелка указывает, где из Метатрейдера можно вызвать поле Метаэдитора, то есть программу, где советник и пишется. Поскольку язык MQL4 специально создавался так, чтобы разобраться в нем мог любой человек, то и Метаэдитор открывается сразу с шаблона, который задает правильную структуру будущей программы. Впрочем, мы свободно можем там все стереть и написать по-своему, либо поменять местами вторую и третью части. Особого смысла, правда, в этом нет.
Наша задача только правильно вписать в шаблон торговые команды. Как и мы, робот «читает» свои задачи сверху вниз слева направо. То есть, в каком порядке мы проверку сигналов торговой системы прописываем, так они и будут обрабатываться советником.
Когда робот создан и запущен в рабочем листе, это выглядит так, как показано на рисунке 1 в правом верхнем углу. При этом не важно, начерчены ли индикаторы, по которым он работает. Все равно с каждым тиком робот всю процедуру будет повторять с начала.
Поэтому нужно стараться писать логически оптимальную программу. То есть с одной стороны, мы должны в своей МТС учесть все нюансы использования индикаторов, которые взяли для работы, с другой стороны это нужно сделать без лишних этапов: если логика ведет к открытию позиции вверх, то условия на открытие вниз в этой же строке мы не прописываем. Создавая МТС, можно на первых порах логику программы рисовать в виде схемы на бумаге. И ничего не забудете и робота своего не запутаете.
Лучше сразу учиться все писать правильно, чтобы потом не ломать голову, почему же робот не скомпилировался.
Интересно также и то, что если в программе робота вы указали какую-то функцию, но не задали команду ее вызова (то есть не предусмотрели вариантов, при каких условиях она будет использована), то при компиляции эта часть кода просто будет удалена. Зачем козе баян, если она играть на нем не будет?
Поскольку робот работает с каждым тиком, то насколько быстро он успеет провести проверку условий очень важно. Он не Цезарь. 10 дел сразу не делает. Он педант без фантазии – пока с одним тиком всю процедуру не проведет, за следующий тик не возьмется.
Поэтому в коде программы не лишней будет команда RefreshRates(), которая позволяет добиться того, что робот работает со свежими данными.
Удобно то, что нам по-прежнему не надо знать, как выглядит формула индикатора. Большая их часть уже есть в Метатрейдере, и робот просто будет к ним обращаться.
Также важно понимать, что МТС загружается именно в Метатрейдер. То есть автоматическая торговля становится возможной только тогда, когда компьютер включен, Метатрейдер открыт и на рабочем листе загружен робот. Автозапуск робота какой-либо дополнительной программой здесь целенаправленно запрещен.
Вообще, для торговли в Метатрейдере можно создать три вида программ. Кроме МТС, можно написать скрипт (программу для какого-то разового действия, например, открытия позиции) либо пользовательский индикатор.
При этом если у Вас есть разные версии одной МТС (у меня, например, по GBP тестируются два робота, отличающиеся лишь по способу взятия прибыли), то на одном рабочем листе возможно открыть только одну версию. Если нужно запустить аналогичную программу по такому же инструменту, то клонируем лист. Если ту же торговую систему нужно применить, например, к евро, то в роботе нужно будет сделать соответствующие изменения там, где мы прописываем валюту, с которой советник должен работать.
На одном рабочем листе можно одновременно запустить одного робота, один скрипт и сколько угодно пользовательских индикаторов. При этом последние имеют право рисовать на графике цены свои линии, но торговать по ним не будут.
Удобно также сделано и то, что, например, в пятницу, когда торговля уже закончена, можно просто выключить Метатрейдер. Когда в начале новой недели вы его откроете, все роботы так и останутся подключенными к тем листам, где были прикреплены ранее. То есть лишних телодвижений по загрузке МТС каждый вечер в воскресенье не нужно, если только вы не решили проверить какую-то другую версию своего советника.
Что еще нам важно при написании робота? Четко разобраться в смысле всех понятий, которыми оперирует MQL4. В учебнике по MQL4 нет сложных слов, и все понятия используются на первый взгляд знакомые («оператор», «функция» и т. п.), но употреблены они немного в других значениях, чем мы привыкли. И если эти новые значения не освоить, то робота своего мы никогда не напишем. Все вроде бы будет просто, но что делать дальше, так и не станет понятным и вдохновляющим к действию.
В следующей статье я хочу попробовать написать вместе с вами какого-нибудь простенького робота, чтобы у тех, кто еще не умеет писать советников, начал образовываться в голове «скелетик» нового навыка, который уже и будет обрастать «мяском» собственных знаний о роботостроении.
А пока представим, что определенная программа у нас уже есть. Посмотрим, как свое создание можно протестировать на истории силами Метатрейдера.
На рисунке 1 синяя стрелка указывает на значок тестера стратегий. Мы нажимаем туда и под окном с ценой и индикаторами открывается поле тестера стратегий. Смотрим рисунок 2.
Рисунок 2.
Когда мы создавали робота, Метатрейдер мудро поинтересовался какой род программы мы сохраняем: советник, скрипт или пользовательский индикатор. Мы, естественно, честно отвечаем, кого ваяем и программа сохраняет информацию в определенный каталог. Из этого каталога тестер и предлагает выбрать советника, работу которого проверяем на истории.
Я выбираю ту МТС, которая прикреплена к рабочему листу на первом рисунке, версию 1-6 по GBP, закрытие по индикатору Parabolic SAR.
В поле «Символ» выбираю тестируемую пару, то есть к архиву ее котировок будет обращаться тестер, «Модель» - «все тики», ставлю галочку «Использовать дату» и мне становится доступным диапазон периода, на котором я хочу провести тест. Например, июль 2011 (можно взять и больше). Далее нажимаем кнопку «Cтарт».
Если до начала теста внизу мы видели только две вкладки «Настройки» и «Журнал», то после теста появляются еще вкладки «Результаты», «График», «Отчет».
Во вкладке «Отчет» вы видим резюме теста: сколько сделок, какова их прибыльность и т. д. Смотрите сами на рисунке 3.
Рисунок 3.
Мы видим тот случай, когда в слове «матожидание» первая часть происходит вовсе не от слова «математика». С 10000 депозита за месяц получить 15 с половиной баксов – это что-то! Смотрим, почему такой «вдохновляющий» итог.
Для этого открываем вкладку «Результаты» и анализируем, как открывались и закрывались позиции, особенно обращая внимание на убыточные сделки. Там будет перечень всех ордеров с ценами, временем и результатами позиций по подобию реальной работы терминала.
Анализ этих ошибок и будет первой отладкой робота. На этом этапе становится видно все те «мелочи» в работе индикаторов, которые мы не учли в написании робота. Естественно, удобнее проводить отладку, если индикаторы, на которые вы опираетесь при торговле, все-таки начерчены.
К сожалению, не всегда ошибки связаны с тем, что в коде допущена какая-то ошибка. Иногда некорректно срабатывает тестер, потому что, во-первых, тики он генерирует сам, опираясь на минутки в указанном периоде, а во-вторых, может неверно обрабатывать некоторые команды, но все же это помощь. Общую картину мы получим.
Понятно, что при таком недостатке тестера, проверка МТС на демосчете на реальных графиках и тиках становится неизбежной.