MQL4 - automated forex trading   /  

Code Base

Code Base  Советники  Кластерный советник Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код


Скачай MetaTrader 5 и посети MQL5.community Code Base
и торгуй мобильно!
Библиотека программ на новом MQL5
Готовься к Чемпионату -
Не нашёл подходящий код? Закажи его в разделе Работа

Этот индикатор для
MetaTrader 4

и торгуй мобильно!

Имя:
Кластерный советник [ en ]
Автор: m_a_sim (15.11.2009 23:01)
Рейтинг: 10
Скачано: 2937
Скачать:
 CCFp.mq4 (16.9 Kb) View
 CCFp(советник).mq4 (9.0 Kb) View


Описание:

Идея советника заключается в том, чтобы найти самую сильную  и слабую валюту. Например, на определенный момент самой сильной валютой является EUR (из 7-ми основных), а слабой- JPY, тогда покупаем пару EURUSD и покупаем USDJPY. Таким образом, хеджируем риски. В поиске таких валют мне помогли статьи:

Теоретические основы построения кластерных индикаторов для рынка FOREX

Практическое применение кластерных индикаторов на рынке FOREX

В советнике используется индикатор из этих статей CCFp.mq4. Его необходимо скачать и компелировать! Я прилагаю этот же индикатор с незначительными изменениями, на случай, если индикатор из статьи не сможет работать в советнике.

Вот картинка из статьи.


  

Советник покупает XXXUSD или продает USDXXX, когда линия соответствующая XXX валюте станет максимальной, аналогично, продает пару YYYUSD или покупает USDYYY, когда линия соответствующая валюте YYY станет минимальной. При смене максимальной (минимальной) линии, закрывается текущая пара и открывается пара соответствующая линии. Ордера советник открывает, при пересечение на предыдущем баре.  Советник работает с 7-ми основными валютами.

Замечания:

  • Тейк профит отсутствует.
  • Стоплосс для всех пар задается одинаковым в пунктах. В советнике не учитывается разная стоимость пунктов пар.
33 комментария: 1 2 3 4   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий

И почему то в индикаторе не используется синхронизация по времени и контроль загрузки истории.

12.01.2010 04:18 Vinin

Мне не совсем понятна эта функция

double ma(string sym, int per, int Mode, int Price, int i)
  {
   double res = 0;
   int k = 1;
   int ma_shift = 0;
   int tf = 0;
   switch(Period())
     {
       case 1:     res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k += 5;
       case 5:     res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k += 3;
       case 15:    res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k += 2;
       case 30:    res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k += 2;
       case 60:    res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k += 4;
       case 240:   res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k += 6;
       case 1440:  res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k += 4;
       case 10080: res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k +=4;
       case 43200: res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
     } 
   return(res);
  } 

Более правильный вариант по моему разумению должен быть таким

double ma(string sym, int per, int Mode, int Price, int i)
  {
   double res = 0;
   int k = 1;
   int ma_shift = 0;
   int tf = 0;
   switch(Period())
     {
       case 1:     res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *= 5;
       case 5:     res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *= 3;
       case 15:    res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *= 2;
       case 30:    res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *= 2;
       case 60:    res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *= 4;
       case 240:   res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *= 6;
       case 1440:  res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *= 4;
       case 10080: res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
                   k *=4;
       case 43200: res += iMA(sym, tf, per*k, ma_shift, Mode, Price, i); 
     } 
   return(res);
  } 

То есть коэффициент к не суммируется, а умножается.

Так почему сложение?

12.01.2010 04:16 Vinin

я конечно не большой спец в написании индикаторов, но если в этом индюке поменять евро с дол то он показывает адекватно

18.12.2009 13:33 akuma_san1

У меня почему то выдает:

Cannot open file ',,,,,,,,,,,,,,\experts\indicators\_MasterSlave.ex4' on the EURUSD,H1

Почему именно EURUSD? И что за файл такой должен быть? Подскажите пожалуйста! В коде эксперта ссылок на такой файл вроде ни где нет!


02.12.2009 07:30 Limon

Автор молодец! Идея отличная!!!


01.12.2009 19:49 Limon

При установке советника выдается такое сообщение

18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function
18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function
18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function
18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function
18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function
18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function
18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function
18:35:13 CCFp EURUSD,H4: unknown subwindow number -1 for ObjectCreate function

Не хватает котировок или что?

01.12.2009 18:48 rulabs
evbut писал(а):

ошибка в том, что если поставить фаст больше слоу, то индикатор переварачивается... а это не есть правильно



параметры устанавливаются пользователем, какие установите, те и есть правильные, не делайте из мухи слона

01.12.2009 13:36 m_a_sim
m_a_sim писал(а):
evbut писал(а):

Хочу обратить внимание на часть кода. По-моему тут закралась ошибка - период быстрой МА больше, чем период медленной МА.

extern int MA_Method = 1;

extern int Price = 0;


extern int Fast = 5;


extern int Slow = 3;

в чем ошибка? поставьте периоды, как Вашей душе угодно :)


ошибка в том, что если поставить фаст больше слоу, то индикатор переварачивается... а это не есть правильно


01.12.2009 03:42 evbut
evbut писал(а):

Хочу обратить внимание на часть кода. По-моему тут закралась ошибка - период быстрой МА больше, чем период медленной МА.

extern int MA_Method = 1;

extern int Price = 0;


extern int Fast = 5;


extern int Slow = 3;

в чем ошибка? поставьте периоды, как Вашей душе угодно :)


30.11.2009 13:54 m_a_sim

Хочу обратить внимание на часть кода. По-моему тут закралась ошибка - период быстрой МА больше, чем период медленной МА.

extern int MA_Method = 1;

extern int Price = 0;


extern int Fast = 5;


extern int Slow = 3;

30.11.2009 06:40 evbut