English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Как создать эксперта за несколько минут при помощи EA Tree: Часть 1

Как создать эксперта за несколько минут при помощи EA Tree: Часть 1

MetaTrader 5Торговые системы | 1 ноября 2011, 12:29
6 989 35
eatree
eatree

Введение

Программа EA Tree является первым инструментом, позволяющим построить код советника на базе блок-схем методом "drag and drop". Программа представляет собой Windows-приложение, которое запускается локально на вашем компьютере. Сложный код на MQL5 теперь можно создавать при помощи удобного графического интерфейса.

Создание советников в EA Tree осуществляется путем построения блоков, которые могут содержать функции языка MQL5, технические и пользовательские индикаторы, или численные значения. Выходы блока могут быть соединены с входами другого блока, образуя "дерево блоков". На базе дерева блоков программа EA Tree генерирует исходный код советника, который затем может быть скомпилирован в торговой платформе MetaTrader 5, установленной на вашем компьютере.


Рис. 1. Графический интерфейс пользователя программы EA Tree

Рис. 1. Графический интерфейс пользователя программы EA Tree

В следующих разделах мы рассмотрим основные понятия, которые используются в EA Tree.


1. Основные понятия

Главными элементами программы являются блок ("box") and кнопки ("buttons").

Блоки предназначены для представления информации. Они могут содержать значения технического индикатора, математической функции и т.д. Каждый блок имеет входные и выходные кнопки. В данном примере блок "Add" имеет 3 входных кнопки, обозначенные как "A", "B", "C" и одну кнопку на выходе, обозначенную как "OUT".

Каждый блок имеет уникальное обозначение, задаваемое при помощи его имени и индекса. В этом примере метка "Add_1" означает, что блок имеет наименование "Add", а индекс 1 это означает, что это первый блок в наборе.

Рис. 2. Блок "Add"

Рис. 2. Блок "Add"

Соединения кнопок

Выходные кнопки одного блока могут быть соединены с входными кнопками другого блока в случаях, если оба они имеют одинаковый тип данных (например, обе кнопки типа double).

В этом примере мы соединяем кнопку "OUT" блока "Add_2" с кнопкой "A" блока "If_Else_1".

Рис. 3. Блоки "Add" и "If-Else"

Рис. 3. Блоки "Add" и "If-Else"


2. Блок "Trade"

В программе EA Tree главным блоком является блок "Trade", он имеет несколько входных кнопок, самими важными из которых являются кнопки "openLong", "openShort", "closeLong" и "closeShort". Помимо этого блок содержит множество торговых параметров.

Рис. 4. Блок "Trade"

Рис. 4. Блок "Trade"


3. Блок "MM" (MoneyManagement)

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

Рис. 5. Блоки "Trade" и "MM"

Рис. 5. Блоки "Trade" и "MM"


4. Блоки логических операций

Блоки логических операций являются очень важными, они используются для проверки выполнения торговых условий и соединяются с кнопками "openLong", "openShort", "closeLong" и "closeShort блока "Trade", а также между другими блоками в схеме.

Блок "If-Else"

Логика блока "If-Else":

If A operator B then T (выходная кнопка T=true) else F (выходная кнопка F=false).

В качестве operator могут быть операции сравнения "равно" (equal to), "не равно" (not equal to), "меньше" (less than), "больше" (greater than) и т.д.

 Рис. 6. Логический блок "If-Else"

Рис. 6. Логический блок "If-Else"

Логический блок "Crossover" (пересечение)

Логика блока "Crossover":

If A operator1 B  AND C operator2 D  then T (выходная кнопка)=true else F (выходная кнопка)=true.

В качестве операторов operator1 и operator2 могут быть операторы сравнения "равно" (equal to), "не равно" (not equal to), "меньше" (less than), "больше" (greater than) и т.д. При помощи кнопок "shiftA" и "shiftB" можно указать сдвиг индекса индикаторов.

В данном примере логика блоков следующая:

Если текущее значение основной (main) линии индикатора Stochastic > текущее значение сигнальной (signal) линии индикатора Stochastic и

Предыдущее значение основной (main) линии индикатора Stochastic > предыдущее значение сигнальной (signal) линии индикатора Stochastic,

то T=true и F=false

Рис. 7. Логические блоки "Crossover" и "Stochastic"

Рис. 7. Логические блоки "Crossover" и "Stochastic"


Логический блок "AND"

Логика блока "AND":

If A AND B AND C AND D then OUT(выходная кнопка)=true

Рис. 8. Блок "And"

Рис. 8. Блок "And"

Логический блок "OR"

Логика блока "OR":

If (A OR B OR С OR D) then OUT(выходная кнопка)=true

Рис. 9. Блок "Or"

Рис. 9. Блок "Or"


5. Блоки технических индикаторов

В меню "Technical indicators" доступны блоки многих технических индикаторов, таких как MACD и Moving Average.

Блок технического индикатора MACD

Рис. 10. Блок технического индикатора MACD

Рис. 10. Блок технического индикатора MACD

Блок технического индикатора MA (Moving Average)

Рис. 11. Блок технического индикатора MA (Moving Average)

Рис. 11. Блок технического индикатора MA (Moving Average)


6. Пользовательские индикаторы (Custom Indicators)

Пользовательские индикаторы доступны через панель инструментов и меню "Custom Indicators". В EA Tree используются только пользовательские индикаторы, написанные на языке MQL5.


7. Функции MQL5

В программе EA Tree есть блоки функций языка MQL5:

  • Блоки таймсерий (iOpen, iClose, HighestHigh, LowestLow, и т.д.).
  • Функции преобразования (Conversion Functions);
  • Математические функции (Math functions);
  • Строковые функции (String functions).


8. Учебник: Создаем простой советник

В этом разделе мы рассмотрим процесс создания простого советника.

Сначала приведем список условий торговли советника.

Правила входа в рынок (Entry Rules):

Открытие длинной позиции (Open Long):

  1. Текущее значение главной (main) линии индикатора MACD > текущее значение сигнальной (signal) линии индикатора MACD;
  2. Предыдущее значение главной (main) линии индикатора MACD < значение сигнальной (signal) линии индикатора MACD;
  3. Текущее значение EMA(20) > предыдущее значение EMA(20).

Открытие короткой позиции (Open Short):

  1. Текущее значение главной (main) линии MACD < текущее значение сигнальной (signal) линии индикатора MACD;
  2. Предыдущее значение главной (main) линии MACD > предыдущее значение сигнальной (signal) линии индикатора MACD;
  3. Текущее значение EMA(20) > предыдущее значение EMA(20).

Правила выхода с рынка (Exit Rules):

Закрытие длинных позиций (Close Long): аналогично правилу открытия коротких позиций (Open Short);
Закрытие коротких позиций (Close Short): аналогично правилу открытия длинных позиций (Open Long).

В примере, рассмотренном ниже, для блока "Trade" будут использоваться настройки по умолчанию, управление капиталом отсутствует.

Начнем:

1. Создадим блоки "Trade" и "AND", соединим выходную кнопку OUT блока "And" с входной кнопкой "OpenLong" блока "Trade":

Рис. 12. Блоки "Trade" и "And"

Рис. 12. Блоки "Trade" и "And"


2. Создадим блок "Crossover" и соединим его выходную кнопку "T" с входной кнопкой "A" блока "AND".

Рис. 13. Блоки "Trade" + "And" + "Crossover"

Рис. 13. Блоки "Trade" + "And" + "Crossover"


3. Создадим блок "MACD", соединим выходную кнопку "Main" с входными кнопками "A" и "C" блока "Crossover", затем соединим выходную кнопку "Signal" блока "MACD" c входными кнопками "B" и "D" блока "Crossover".

Логическая структура построенной схемы:

Если текущее значение главной (main) линии индикатора MACD > текущее значение сигнальной (signal) линии индикатора MACD и
      
предыдущее значение главной (main) линии индикатора MACD < предыдущее значение сигнальной (signal) линии индикатора MACD

Рис. 14. Блоки "Trade" + "And"+ "Crossover"+ "MACD"

Рис. 14. Блоки "Trade" + "And"+ "Crossover"+ "MACD"


4. Создадим блоки "MA" и "If-Else". Соединим выходную кнопку "Main" блока "MA" с входными кнопками "A" и "B" блока "If-Else". Соединим кнопку "OUTPUT" блока "If-Else" с входной кнопкой "B" блока "AND".

Для условия открытия длинной позиции (openLong) поддерево блоков состоит из следующих трех условий:

  1. Текущее значение главной (main) линии индикатора MACD > текущее значение сигнальной (signal) линии индикатора MACD и
  2. Предыдущее значение главной (main) линии индикатора MACD < предыдущее значение сигнальной (signal) линии индикатора MACD и
  3. Текущее значение индикатора EMA(20) > предыдущее значение EMA(20)

Рис. 15. Блоки "Trade" + "And" + "Crossover" + "MACD" + "MA" + "If-Else"

Рис. 15. Блоки "Trade" + "And" + "Crossover" + "MACD" + "MA" + "If-Else"


5. Создадим еще один блок "And" и соединим его выходную кнопку с входной кнопкой "openShort" блока "Trade".

6. Поскольку логика "openShort" противоположна "openLong", соединим выходную кнопку "F" блока "Crossover" с входной кнопкой "A" нового блока "And". Также соединим выходную кнопку "F" блока "If-Else"с входной кнопкой "B" нового блока "And".


Рис. 16. Блоки "Trade"+ "And" + "Crossover" + "MACD" + "MA"+ "If-Else" + "And"

Рис. 16. Блоки "Trade"+ "And" + "Crossover" + "MACD" + "MA"+ "If-Else" + "And"


7. Для получения сигналов выхода с рынка соединим выходную кнопку "OUT" первого блока "And" с входной кнопкой "closeLong" блока "Trade", а выходную кнопку "OUT" второго блока "And" соединим с входной кнопкой "closeShort" блока "Trade".


Рис. 17. Добавляем условие "CloseShort" в блок "Trade"

Рис. 17. Добавляем условие "CloseShort" в блок "Trade"


8. Дважды кликнув по блокам "MACD" и "MA", выберем переменные, которые будут использоваться в качестве входных параметров эксперта, код которого будет генерироваться.


Рис. 18. Входные параметры советника

Рис. 18. Входные параметры советника

9. Теперь все готово, сохраним советник в файл, откроем его в редакторе MetaEditor 5 и компилируем.

Рис. 19. Исходный код созданного советника

Рис. 19. Исходный код созданного советника


10. Наконец, при помощи тестера торговых стратегий терминала MetaTrader 5 производим оптимизацию выбранных входных параметров советника.

Рис. 20. Тестирование советника в тестере торговых стратегий

Рис. 20. Тестирование советника в тестере торговых стратегий


Выводы

Использование EA Tree имеет много преимуществ:

  • Легкий в использовании и понятный графический интерфейс;
  • Не требуется опыт программирования;
  • Вы сможете быстро освоить язык MQL5;
  • Конфиденциальность ваших торговых секретов;
  • Значительное сокращение сроков разработки советника (с дней/месяцев до минут);
  • Вы можете разрабатывать сложные советники для торговли на нескольких валютах и таймфреймах;
  • В код советника может быть включено множество торговых стратегий;
  • Загрузка и сохранение блок-схем позволяют использовать код повторно;
  • Существует возможность подключения пользовательских индикаторов;
  • Код советника, создаваемый программой EA Tree, не содержит ошибок и всегда компилируется.

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/337

Прикрепленные файлы |
eatree-sample.mq5 (33.7 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (35)
Andrey F. Zelinsky
Andrey F. Zelinsky | 2 нояб. 2011 в 13:01
Renat:
 Нужно разумно выбирать задачу конкурса как по сложности, так и по срокам исполнения.

Есть масса задач повышенной сложности - и именно в области анализа ценового потока (например, волны, свечные модели etc.).

Такие задачи при символических призах могут привлечь много новичков, что очень важно. На прошлых конкурсах участников был десяток.

Мало того, как мне кажется, есть много программирующих на mql4 и в силу разных причин не торопящихся изучать mql5 - такую аудиторию тоже надо стимулировать. 

Цели таких конкурсов - знакомство с возможностями mql5, более глубокое изучение mql5, самообучение, проверка своих способностей.

eatree
eatree | 4 нояб. 2011 в 17:21

Hi,

EATree demo (Limited Edition) is now available at www.eatree.com


Переводчик Google

привет,

EATree демо (Limited Edition) теперь доступна на www.eatree.com



---
--- | 4 нояб. 2011 в 17:37

посмотрел. впечатления:
- сложно, не интуитивно (думаю это вопрос привычки и практики)
- нельзя просмотреть свой созданный алгоритм код (выдает код для чего-то другого)

eatree
eatree | 4 нояб. 2011 в 20:17

 Hi,
There is always a learning curve for any new software tool. I think that the best way to start is to do the manual tutorial.
The code generator is generating a standard template then it adds pieces of code depending on the tree of boxes that you build. 

Переводчик Google
привет,
Существует всегда кривой обучения для любой новый инструмент программного обеспечения. Я думаю, что лучший способ начать это делать ручной учебник.
Генератор кода генерирует стандартный шаблон, то он добавляет фрагменты кода, в зависимости от дерева коробки, которые вы строите.
 

eatree
eatree | 5 нояб. 2011 в 01:32
Hi,

I do respect all the comments about my article and I would like to interact with this wonderful community. I do not think that language is a barrier. About 50% of top 10 participants in ATC 2011 are Russians and about 40% of www.eatree.com visitors are from Russia and Ukraine. I do provide a Google translation, so I do not think that there is something wrong with making comments in this wonderful site in both English and Russian languages.

привет,

Я уважаю все комментарии по поводу моей статьи, и я хотел бы общаться с этим замечательным сообществом. Я не думаю, что язык является барьером. Около 50% из 10 крупнейших участников ATC 2011 году русских и около 40% www.eatree.com посетителей из России и Украины. Я действительно обеспечивают перевод Google, так что я не думаю, что что-то неладно с делать комментарии в этом чудесном сайте на английском и русском языках.
Интервью с Игорем Корепиным (ATC 2011) Интервью с Игорем Корепиным (ATC 2011)
Советник Игоря Корепина (Xupypr) стремительно взлетел на самую вершину Чемпионата Automated Trading Championship 2011 на четвертой неделе - на его счету было почти вдвое больше, чем у ближайшего преследователя. Однако несмотря на такой внушительный отрыв, советник не смог надолго задержаться на первой строчке. Игорь не скрывает, что при отправке советника на Чемпионат он делал ставку на его удачный старт. Что ж, посмотрим, поможет ли ему удача снова возглавить таблицу участников.
Интервью с Тимом Фассом (ATC 2011) Интервью с Тимом Фассом (ATC 2011)
Несмотря на то что студент Тим Фасс (Tim) из Германии в первый раз участвует в Чемпионате Automated Trading Championship, его советник The_Wild_13 сумел побывать на самой вершине турнирной таблицы и никому не собирается уступать свое место в первой десятке. Тим рассказал нам об участвующем эксперте, о вере в успех простых стратегий и о своей мечте.
Использование дискриминантного анализа для построения торговых систем Использование дискриминантного анализа для построения торговых систем
При построении торговой системы, как правило, встает задача выбора лучшей комбинации из индикаторов и их сигналов. Одним из способов построения таких комбинаций является дискриминантный анализ. В статье предлагается пример создания советника для сбора данных с рынка, рассмотрен пример использования дискриминантного анализа в программе Statistica для построения прогностических моделей для рынка FOREX.
Доктор Трейдлав, или Как я перестал беспокоиться и написал самообучающийся эксперт Доктор Трейдлав, или Как я перестал беспокоиться и написал самообучающийся эксперт
Чуть более года назад joo дал нам в своей статье "Генетические алгоритмы - это просто!" инструмент для реализации Генетического алгоритма на MQL5. Воспользуемся же этим инструментом и напишем эксперт, который при наступлении каких-то граничных условий произведет Генетическую оптимизацию своих же параметров...