Обсуждение статьи "Универсальный торговый эксперт: Интеграция со стандартными модулями сигналов MetaTrader (часть 7)"

 

Опубликована статья Универсальный торговый эксперт: Интеграция со стандартными модулями сигналов MetaTrader (часть 7):

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

На диаграмме ниже представлена общая схема вертикального наследования классов, задействованных при автоматической генерации стратегий:

 

Рис. 1. Схема наследования стандартных классов автогенератора стратегий

На рисунке представлены только основные и некоторые производные классы. Не показаны все индикаторы, наследуемые от CIndicators. Не отображены в этой схеме также и все модули трейлинга, управления капиталом и модули сигналов. Вместо этого намечены лишь основные взаимосвязи. Из всей иерархии классов нас будет интересовать лишь одна группа: классы сигналов CExpertSignal и производные от него. На рисунке 1 эта группа выделена зеленой пунктирной линией.

Автор: Vasiliy Sokolov

 

Василий, как всегда интересно. Прежде всего с точки зрения программирования... хотя чего можно ещё ожидать на MQL-форуме...

Маленькое замечание :-))

Наследование обычно рисуют снизу вверх. Примерно так:



 
Написал нечто подобное в mql4 одним файлом и без использования сторонних библиотек, да так что для генерации сигнала пользователь может выстроить свободное дерево взаимосвязей между 70 элементами для десяти любых пользовательских индикоторов, собирать результат выстроенных условий с такого огорода та ёще веселуха, но получилось чтото действительно универсальное
 
Dennis Kirichenko:

Василий, как всегда интересно. Прежде всего с точки зрения программирования... хотя чего можно ещё ожидать на MQL-форуме...

Маленькое замечание :-))

Наследование обычно рисуют снизу вверх. Примерно так:

Не знал. Наверное я левша, поэтому у меня все наоборот получилось:) 
 
Aleksey Semenov:
Написал нечто подобное в mql4 одним файлом и без использования сторонних библиотек, да так что для генерации сигнала пользователь может выстроить свободное дерево взаимосвязей между 70 элементами для десяти любых пользовательских индикоторов, собирать результат выстроенных условий с такого огорода та ёще веселуха, но получилось чтото действительно универсальное
А можно увидеть прототип?
 
Aleksey Semenov:
Написал нечто подобное в mql4 одним файлом и без использования сторонних библиотек, да так что для генерации сигнала пользователь может выстроить свободное дерево взаимосвязей между 70 элементами для десяти любых пользовательских индикоторов, собирать результат выстроенных условий с такого огорода та ёще веселуха, но получилось чтото действительно универсальное
Да, сам склоняюсь к тому, что универсальный генератор стратегий должен быть написан на основе дерева, но задача достаточно сложная.
 
Вопрос к общественности: кто-то использует сигнальную систему MetaTrader вообще? А кто использует классы сигналов в своем программировании экспертов? 
 
Vasiliy Sokolov:
Вопрос к общественности: кто-то использует сигнальную систему MetaTrader вообще? А кто использует классы сигналов в своем программировании экспертов? 

Я. Всегда делаю так:

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

 
Karputov Vladimir:

Я. Всегда делаю так:

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

Действительно основательный подход. Да, он дает свои преимущества.

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

 

При инициализации индикаторных сигналов:

//+------------------------------------------------------------------+
//| Инициализация модуля сигналов CSignalMacd                        |
//+------------------------------------------------------------------+
COnSignal_RSI_AC::COnSignal_RSI_AC(void)
{
   MqlSignalParams params;
   params.every_tick = false;
   params.magic = 32910;
   params.point = 10.0;
   params.symbol = Symbol();
   params.period = Period();
   params.usage_pattern = 2;
   params.signal_type = SIGNAL_AC;
   CSignalAC* ac = m_adapter_ac.CreateSignal(params);
   params.usage_pattern = 1;
   params.magic = 32911;
   params.signal_type = SIGNAL_RSI;
   CSignalRSI* rsi = m_adapter_rsi.CreateSignal(params);
   rsi.PeriodRSI(RSI_Period);
}
одному сигнальному модулю (адаптеру) передаётся один Магик (32910), второму второй (32911). Т.е. для открытия позиций будет использоваться один Магик, а для закрытия (их же) другой? Или я что-то не так понимаю?
 
Гога:

При инициализации индикаторных сигналов:

одному сигнальному модулю (адаптеру) передаётся один Магик (32910), второму второй (32911). Т.е. для открытия позиций будет использоваться один Магик, а для закрытия (их же) другой? Или я что-то не так понимаю?
В данном случае мэджики - рудементы CExpert, от которого наследуется сам сигнал. Он сигналу не нужен, по крайней мере в CStrategy, т.к. он не выставляет отложенные ордера. Однако указан какой-то мэджик так, на всякий случай.