Скачать MetaTrader 5

Хи квадрат, получается слишком большое число. Код MQL4.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересно узнать о развитии MQL5.community? Заходи в раздел Стена!
forexman77
2120
forexman77 2015.04.19 14:24 

Решил проверить индикатор хи квадратом. Формулу взял из книги Колби.

Сделал по формуле:

(|a1-e1|-0,5)²/e1+(|a2-e2|-0,5)²/e2

 

|....|абсолютное значение(модуль)выражения;

a1 -реально наблюдаемая частота результата1;(количество положительных значений цены к предыдущему бару, синхронных с индикатором)

e1-предполагаемая или теоретически полученная частота результата1; (количество отрицательных значений цены к предыдущему бару, синхронных с индикатором)

a2 -реально наблюдаемая частота результата2;(общее количество положительных значений синхронных с индикатором умноженных на количество всех положительных значений)

e2-предполагаемая или теоретически полученная частота результата2; (общее количество отрицательных значений синхронных с индикатором умноженных на количество всех отрицательных значений)

 

Получается слишком большое число. Что у меня не так?

extern int period=15; 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
int plus=0,minus=0, y=Bars-2;
double hikvadrat=0,UP=0, DN=0, a1=0, a2=0, e1=0, e2=0 , kol=0;
for (int i=y;i>0;i--)
{
if (Close[i] > Close[i+1]){plus=plus+1;}//кол-во растущих баров всего
if (Close[i+1] > Close[i]){minus=minus+1;}//кол-во падающих баров всего
}
double procentBar=y/100.0;
double prUP=plus/procentBar;
double prDN=minus/procentBar;
for (int k=y;k>0;k--)
{
double ma0=iMA(NULL,PERIOD_CURRENT,period,0,MODE_EMA,PRICE_CLOSE,k);
double ma1=iMA(NULL,PERIOD_CURRENT,period,0,MODE_EMA,PRICE_CLOSE,k+1);
if (ma0 > ma1)
{
if (Close[k] > Close[k+1]){a1=a1+1;}//кол-во растущих баров после индикатора всего
}
if (ma1 > ma0)
{
if (Close[k+1] > Close[k]){a2=a2+1;}//кол-во падающих баров после индикатора всего
}
}
kol=(a1+a2)/100.0;
e1=kol*prUP;
e2=kol*prDN;
UP=(MathAbs(a1-e1)-0.5);   
DN=(MathAbs(a2-e2)-0.5);
hikvadrat=((UP*UP)/e1)+((DN*DN)/e2);
Alert("hikvadrat=",hikvadrat);
  }
//+------------------------------------------------------------------+
Dennis Kirichenko
11331
Dennis Kirichenko 2015.04.19 14:41  
Посмотрите в статье есть Хи-квадрат тест...
Роль статистических распределений в работе трейдера
Роль статистических распределений в работе трейдера
  • 2011.04.28
  • Dennis Kirichenko
  • www.mql5.com
Данная статья является логическим продолжением моей статьи "Статистические распределения вероятностей в MQL5", в которой были представлены классы для работы с некоторыми статистическими теоретическими распределениями. Теперь, когда есть теоретическая база, я предлагаю непосредственно перейти к выборкам реальных данных и попробовать получить информационную пользу от этой базы.
forexman77
2120
forexman77 2015.04.19 17:00  
forexman77:

Решил проверить индикатор хи квадратом. Формулу взял из книги Колби.

Сделал по формуле:

(|a1-e1|-0,5)²/e1+(|a2-e2|-0,5)²/e2

Код подправил была ошибка.

Но все равно выходят большие числа или это нормально?

В книге значение 10 считается хорошим, а у меня 3093, на простейшей машке) 

3       0.00    0       0.00    0.00    0.00    0.00%   3093.74480116   period=405      Lots=0.01       Prots=0.07
31      0.00    0       0.00    0.00    0.00    0.00%   3091.46607447   period=441      Lots=0.01       Prots=0.07
58      0.00    0       0.00    0.00    0.00    0.00%   3090.85809762   period=387      Lots=0.01       Prots=0.07
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий