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

eatree | 1 ноября, 2011


Введение

Программа 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:


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 имеет много преимуществ: