Обсуждение статьи "Адаптивные торговые системы и их использование в терминале MetaTrader 5" - страница 2

 

Не затруднит ли вас перевести документацию на английский? Я всегда ценю хорошую документацию. Отличная статья, спасибо за ваш замечательный вклад.

 
Lugner:

Не затруднит ли вас перевести документацию на английский? Я всегда ценю хорошую документацию. Отличная статья, спасибо за ваш замечательный вклад.

Мы переведем прилагаемую документацию как можно скорее.
 

Для работы с входными параметрами (переменными) достаточно просто объявить их перед объявлением класса и

следуя по пути вызова класса (include).

 
Lugner:

Не затруднит ли вас перевести документацию на английский? Я всегда ценю хорошую документацию. Отличная статья, спасибо за ваш замечательный вклад.

Спасибо. Документация переведена.
 
AM2:

В классе CAdaptiveStrategy пытаюсь торговать только стохастику:

Остальное отключил, а график в тестере все тот же. Насколько я понял здесь подкючаются и отключаются стратегии?

 

Да, стратегии подключаются в функции CAdaptiveStrategy::Expert_OnInit(). Для удобства лучше использовать debug-версию советника, там добавлено сохранение результатов в файлы. Разобраться в том, сигналы каких стратегий использовались в реальной торговле, можно по файлу direction_res.txt.

при использовании адаптивной стратегии, состоящей из указанных 5 стохастиков (EURUSD H1, тест с начала 2010 года до 1 сентября 2010) получаются следующие результаты:




 

Это, пожалуй, самая глубокая статья о программной/роботизированной торговле, которую я читал за очень, очень, очень долгое время. Большое спасибо!

Действуя на основе нового энтузиазма, я немного адаптировал работу Евгения. [Извинения - по крайней мере, я тоже буду делиться идеями ;-) ].

Я адаптировал существующий советник (пока, к сожалению, не объектно-ориентированный) для:

1. Множество временных масштабов: M1, M3, M5, M10, M20, M30, H1
2. Несколько быстрых МА: 3,5,7,9,11
3. Несколько медленных МА: 17,27,37,47 и т.д. 97,107, 117 и т.д.

Прикреплены к тику M1, в цикле foreach(period)-foreach(fast)-foreach(slow). Каждый тик определяет, нужно ли ему проверить наличие "виртуальной" сделки, и "исполняет" ее, если это необходимо, сохраняя логический/виртуальный баланс P/L.

Результаты очень удивительные, и очень положительные...

Оптимизация сейчас заключается в удалении коротких временных периодов (например, M1, M3) [поскольку более высокие временные периоды в конечном итоге "выигрывают"], а также в определении того, как часто нужно сбрасывать счетчик "бегущего P/L", чтобы можно было обнаружить "быстро улучшающиеся" наборы параметров.

Мне также нужно подключить к этой работе мой любимый торговый советник (добавить проверку ADX/RSI/MACD/RVI и т.д.), чтобы он всегда использовал оптимальные, выигрышные пары быстрых/медленных MA, а также имел хорошую логику управления рынком, деньгами, позициями и сделками.

Еще раз спасибо,

T.

 

Квант,

Очевидно, что если я захочу добавить больше условий покупки и продажи (или пар/совокупностей условий покупки и продажи), помимо тех, что уже были подарены

if(buy_condition_1 && buy_condition_2) new_state=SIGNAL_OPEN_LONG;
if(sell_condition_1 && sell_condition_2) new_state=SIGNAL_OPEN_SHORT;

в примере в CStrategyMA.mqh,

для запуска других возможностей для

new_state=SIGNAL_CLOSE_SHORT;
// и 
new_state=SIGNAL_CLOSE_LONG;

нет логического смысла добавлять эти комбинации в файл CStrategyMA.mqh, но для каждого нового условия или пары/комбо условий

условий, должен быть выделен еще один файл include/class,

так?

Я быстро имею в виду, например, если я хочу добавить эти условия:

// Состояние покупки 3: MA new 
   bool buy_condition_3=(m_values[0+5]>m_values[1+7]) && (m_values[1+5]>m_values[2+7]);
// Условие покупки 4: предыдущая цена OPEN выше MA
   bool buy_condition_4=(p_open>m_values[1]);

// Условие продажи 3: MA new 
   bool sell_condition_3=(m_values[0+5]<m_values[1+7]) && (m_values[1+5]<m_values[2+7]);
// Условие покупки 4: предыдущая цена OPEN ниже MA
   bool sell_condition_4=(p_open<m_values[1]);

и

  if(buy_condition_3  &&  buy_condition_4) new_state=SIGNAL_OPEN_LONG;
   if(sell_condition_3 && sell_condition_4) new_state=SIGNAL_OPEN_SHORT;

   if((GetSignalState()==SIGNAL_OPEN_SHORT) && (buy_condition_3 || buy_condition_4)) new_state=SIGNAL_CLOSE_SHORT;
   if((GetSignalState()==SIGNAL_OPEN_LONG) && (sell_condition_3 || sell_condition_4)) new_state=SIGNAL_CLOSE_LONG;

они могут быть добавлены в подклассы в CStrategyMA.mqh, не затрагивая основную систему

адаптивной системы, другими словами, продолжая правильно этот включаемый файл CStrategyMA.mqh взаимодействовать с CAdaptiveStrategy.mqh

и CSampleStrategy.mqh, также учитывая новые условия (3 и 4 из примера) в логическом ядре

идеи советника?

Или для условий 3 и 4 нужно переписать и добавить, например, файл CStrategyMA3and4.mqh ?

Можно ли добавить эти условия в тот же CStrategyMA.mqh и чтобы все корректно работало?

Может быть я сам себе ответил и немного туплю, но также хочу узнать ваше мнение (мнения).

Спасибо

 
Automated-Trading:

Да, стратегии подключаются в функции CAdaptiveStrategy::Expert_OnInit(). Для удобства лучше использовать debug-версию советника, там добавлено сохранение результатов в файлы. Разобраться в том, сигналы каких стратегий использовались в реальной торговле, можно по файлу direction_res.txt.

при использовании адаптивной стратегии, состоящей из указанных 5 стохастиков (EURUSD H1, тест с начала 2010 года до 1 сентября 2010) получаются следующие результаты:

Судя по графику у Вас опять же попросту оптимизированная модель, пусть даже часть этой оптимизации оказалась автоматизированнной, но адаптированная модель - это модель в которой существует блок расчета, который адаптирует вход и выход на рынок во время работы стратегии, а параметры в инициализации вообще не имеют значения. В таких условиях, как раз линия эквити по отношению к балансовой выровняется, так как в случаях когда распределение для закрытия позиции по прибыли изменилось - то такая система все равно пересчитает новые значения и определит новую зону для прибыли, а значит и перестроит параметры для получения прибыли и группой ордеров эквити будет сохранено: 
Файлы:
 

Уважаемый Forexistence,

Вы ответили на свой вопрос :)

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

Но, конечно, нужно включить файл с новой стратегией и добавить эти новые стратегии в функцию Expert_OnInit класса CAdaptiveStrategy:

#include <CStrategyMA3and4.mqh>

int CAdaptiveStrategy::Expert_OnInit()
{
.....
--- adding new strategies
   for(int i=0; i<10; i++)
     {
      CStrategyMA34 *t_StrategyMA34;
      t_StrategyMA34=new CStrategyMA34;
      if(t_StrategyMA34==NULL)
        {
         delete m_all_strategies;
         Print("Error of creation of object of the CStrategy3and4 type");
         return(-1);
        }
      int period=3+i*10;
      t_StrategyMA34.Initialization(period,true);
      t_StrategyMA34.SetStrategyInfo(_Symbol,"[MA34_"+IntegerToString(period)+"]",period,"Moving Averages with new conditions "+IntegerToString(period));
      m_all_strategies.Add(t_StrategyMA34);
     }
.....
}

Второй способ лучше, вы можете добавить много стратегий и их вариаций.

Не стоит удалять экземпляры класса CStrategyMA (если они у вас есть), мы не будем заглядывать в их песочницы, так как их результаты будут плохими.

Рынок поможет нам определить лучшую стратегию в списке стратегий, входящих в m_all_strategies.

 
dasmen:
Судя по графику у Вас опять же попросту оптимизированная модель, пусть даже часть этой оптимизации оказалась автоматизированнной, но адаптированная модель - это модель в которой существует блок расчета, который адаптирует вход и выход на рынок во время работы стратегии, а параметры в инициализации вообще не имеют значения. В таких условиях, как раз линия эквити по отношению к балансовой выровняется, так как в случаях когда распределение для закрытия позиции по прибыли изменилось - то такая система все равно пересчитает новые значения и определит новую зону для прибыли, а значит и перестроит параметры для получения прибыли и группой ордеров эквити будет сохранено: 

в статье использовано понятие и применение адаптивной стратегии как в математике, фактически как систему реализации выбора управления.