Индикатор корреляции валют.

 
//+------------------------------------------------------------------+
//|                                                Correlation.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net//"
 
//---- input parameters
 
extern int       Per=5;
 
 
double CloseEURUSD[100],CloseGBPUSD[100],CloseAUDUSD[100];
double CloseUSDCHF[100],CloseUSDJPY[100],CloseUSDCAD[100];
double summaEURUSD=0,summaGBPUSD=0,summaAUDUSD=0;
double summaUSDCHF=0,summaUSDJPY=0,summaUSDCAD=0;
double summaPow_EURUSD=0,summaPow_GBPUSD=0,summaPow_AUDUSD=0;
double summaPow_USDCHF=0,summaPow_USDJPY=0,summaPow_USDCAD=0;
double summa_eur_gbp=0,summa_eur_aud=0,summa_eur_chf=0,summa_eur_jpy=0,summa_eur_cad=0;
double sredneeEURUSD=0,sredneeGBPUSD=0,sredneeAUDUSD=0;
double sredneeUSDCHF=0,sredneeUSDJPY=0,sredneeUSDCAD=0;
double Q_eur_usd=0,Q_gbp_usd=0,Q_aud_usd=0,Q_usd_chf=0,Q_usd_jpy=0,Q_usd_cad=0;
double Correl_eur_gbp=0,Correl_eur_aud=0,Correl_eur_chf=0,Correl_eur_jpy=0,Correl_eur_cad=0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
sredneeEURUSD=0;
sredneeGBPUSD=0;
sredneeAUDUSD=0;
sredneeUSDCHF=0;
sredneeUSDJPY=0;
sredneeUSDCAD=0;
summaEURUSD=0;
summaGBPUSD=0;
summaAUDUSD=0;
summaUSDCHF=0;
summaUSDJPY=0;
summaUSDCAD=0;
summaPow_EURUSD=0;
summaPow_GBPUSD=0;
summaPow_AUDUSD=0;
summaPow_USDCHF=0;
summaPow_USDJPY=0;
summaPow_USDCAD=0;
summa_eur_gbp=0;
summa_eur_aud=0;
summa_eur_chf=0;
summa_eur_jpy=0;
summa_eur_cad=0;
Q_eur_usd=0;
Q_gbp_usd=0;
Q_aud_usd=0;
Q_usd_chf=0;
Q_usd_jpy=0;
Q_usd_cad=0;
Correl_eur_gbp=0;
Correl_eur_aud=0;
Correl_eur_chf=0;
Correl_eur_jpy=0;
Correl_eur_cad=0;
 
for (int i=1; i<=Per; i++)
   {
     CloseEURUSD[i]=iClose("EURUSD",1440,i);//X
     CloseGBPUSD[i]=iClose("GBPUSD",1440,i);//Y
     CloseAUDUSD[i]=iClose("AUDUSD",1440,i);//Y
     CloseUSDCHF[i]=iClose("USDCHF",1440,i);//Y
     CloseUSDJPY[i]=iClose("USDJPY",1440,i);//Y
     CloseUSDCAD[i]=iClose("USDCAD",1440,i);//Y
     
     summaEURUSD=summaEURUSD+CloseEURUSD[i];//Xi
     summaGBPUSD=summaGBPUSD+CloseGBPUSD[i];//Yi
     summaAUDUSD=summaAUDUSD+CloseAUDUSD[i];//Yi
     summaUSDCHF=summaUSDCHF+CloseUSDCHF[i];//Yi
     summaUSDJPY=summaUSDJPY+CloseUSDJPY[i];//Yi
     summaUSDCAD=summaUSDCAD+CloseUSDCAD[i];//Yi
     
     summaPow_EURUSD=summaPow_EURUSD+MathPow(CloseEURUSD[i],2);//Xi2
     summaPow_GBPUSD=summaPow_GBPUSD+MathPow(CloseGBPUSD[i],2);//Yi2
     summaPow_AUDUSD=summaPow_AUDUSD+MathPow(CloseAUDUSD[i],2);//Yi2
     summaPow_USDCHF=summaPow_USDCHF+MathPow(CloseUSDCHF[i],2);//Yi2
     summaPow_USDJPY=summaPow_USDJPY+MathPow(CloseUSDJPY[i],2);//Yi2
     summaPow_USDCAD=summaPow_USDCAD+MathPow(CloseUSDCAD[i],2);//Yi2
     
     summa_eur_gbp=summa_eur_gbp+(CloseEURUSD[i]*CloseGBPUSD[i]);//XiYi
     summa_eur_aud=summa_eur_aud+(CloseEURUSD[i]*CloseAUDUSD[i]);//XiYi
     summa_eur_chf=summa_eur_chf+(CloseEURUSD[i]*CloseUSDCHF[i]);//XiYi
     summa_eur_jpy=summa_eur_jpy+(CloseEURUSD[i]*CloseUSDJPY[i]);//XiYi
     summa_eur_cad=summa_eur_cad+(CloseEURUSD[i]*CloseUSDCAD[i]);//XiYi
   }
sredneeEURUSD=summaEURUSD/Per;//X
sredneeGBPUSD=summaGBPUSD/Per;//Y
sredneeAUDUSD=summaAUDUSD/Per;//Y
sredneeUSDCHF=summaUSDCHF/Per;//Y
sredneeUSDJPY=summaUSDJPY/Per;//Y 
sredneeUSDCAD=summaUSDCAD/Per;//Y
 
Q_eur_usd=MathSqrt(summaPow_EURUSD/Per-MathPow(sredneeEURUSD,2));//Qx
Q_gbp_usd=MathSqrt(summaPow_GBPUSD/Per-MathPow(sredneeGBPUSD,2));//Qy
Q_aud_usd=MathSqrt(summaPow_AUDUSD/Per-MathPow(sredneeAUDUSD,2));//Qy
Q_usd_chf=MathSqrt(summaPow_USDCHF/Per-MathPow(sredneeUSDCHF,2));//Qy
Q_usd_jpy=MathSqrt(summaPow_USDJPY/Per-MathPow(sredneeUSDJPY,2));//Qy
Q_usd_cad=MathSqrt(summaPow_USDCAD/Per-MathPow(sredneeUSDCAD,2));//Qy
 
Correl_eur_gbp=NormalizeDouble((summa_eur_gbp/Per-sredneeEURUSD*sredneeGBPUSD)/(Q_eur_usd*Q_gbp_usd),2);
Correl_eur_aud=NormalizeDouble((summa_eur_aud/Per-sredneeEURUSD*sredneeAUDUSD)/(Q_eur_usd*Q_aud_usd),2);
Correl_eur_chf=NormalizeDouble((summa_eur_chf/Per-sredneeEURUSD*sredneeUSDCHF)/(Q_eur_usd*Q_usd_chf),2);
Correl_eur_jpy=NormalizeDouble((summa_eur_jpy/Per-sredneeEURUSD*sredneeUSDJPY)/(Q_eur_usd*Q_usd_jpy),2);
Correl_eur_cad=NormalizeDouble((summa_eur_cad/Per-sredneeEURUSD*sredneeUSDCAD)/(Q_eur_usd*Q_usd_cad),2);
 
 
Comment("\nEURUSD = 1",
        "\n----------------------------------------------------------------------------------",
        "\nКорреляция GBPUSD относительно EURUSD = ",Correl_eur_gbp,
        "\nКорреляция AUDUSD относительно EURUSD = ",Correl_eur_aud,
        "\nКорреляция USDCHF относительно EURUSD = ",Correl_eur_chf,
        "\nКорреляция USDJPY относительно EURUSD = ",Correl_eur_jpy,
        "\nКорреляция USDCAD относительно EURUSD = ",Correl_eur_cad);


Нарыл в инете на форуме индикатор корреляции валют, сделанный в виде эксперта.
Не могу переделать в обычный индикатор, буфер при распринтовке выводит, на экране не отображается.
Кто то понимает вообще его физический смысл. Автор этого творения в той ветке не отвечает.
Помогите переделать в обычный индикатор. И кто-то понимает его смысл?




 
>>>>>И кто-то понимает его смысл?
А чего тут требуется понимать то? Просто по формуле корреляции, которая присутствует в любом учебнике по матстатистике высчитывается корреляция между валютными парами. Возьмите к примеру "Статистика для трейдера" Булашева:

Зачем это понадобилось делать на периоде в 5 дневных свечек спросите лучше у автора этого кода. Возможно автор хотел что-то проверить с его помощью (собирал какую-то информацию о корреляции между валютами). Хотя период в 5 баров ставит под большое сомнение ценность полученного результата. Индикатор будет достаточно резво ходить в разные дни, хотя кто его знает может быть в этом и состоит смысл наблюдения за корреляцией валют?
 
Спасибо solandr. Звиняй меня неграмотного, кроме Элдера и Лефевра, Найма ничего не читал

Теперь проясняется почему сделан он в виде советника. Только записи в тескстовый файл в коде нету.
Хотя могли убрать конечно.
А как его в индикатор переделать, что-то через добавление буфера не орисовывается, т.е. окно есть, а в нем ничего.
         В принте выводит значения. Мож я не на ту кнопочку нажимаю
 

Ну может быть будет время на досуге то попробую перевести этот код в индикатор просто в познавательных целях. Выложу здесь если сделаю.

 

Добавьте сверху в коде : #property indicator_chart_window и внизу поставьте фигурную скобку } и будет вам счастье.

 
неМНОЖКО не так
 
Integer писал (а):
неМНОЖКО не так

       Спасибо, то что доктор прописал.
 
flash:
Integer писал (а):
неМНОЖКО не так

       Спасибо, то что доктор прописал.
А по подробней, о смысле этих кривулин.  :)
 
PMA писал (а):
flash:
Integer писал (а):
неМНОЖКО не так

Спасибо, то что доктор прописал.
А по подробней, о смысле этих кривулин. :)

В этих кривулинах заложен большой потенциал. Только надо его найти)
http://www.fxexpert.ru/forum/index.php?showtopic=725&st=100
 
flash:
В этих кривулинах заложен большой потенциал. Только надо его найти)
http://www.fxexpert.ru/forum/index.php?showtopic=725&st=100

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

тут что-то не так!!!!!

Q_eur_usd=MathSqrt(summaPow_EURUSD/Per-MathPow(sredneeEURUSD,2));//Qx
Q_gbp_usd=MathSqrt(summaPow_GBPUSD/Per-MathPow(sredneeGBPUSD,2));//Qy
Q_aud_usd=MathSqrt(summaPow_AUDUSD/Per-MathPow(sredneeAUDUSD,2));//Qy
Q_usd_chf=MathSqrt(summaPow_USDCHF/Per-MathPow(sredneeUSDCHF,2));//Qy
Q_usd_jpy=MathSqrt(summaPow_USDJPY/Per-MathPow(sredneeUSDJPY,2));//Qy
Q_usd_cad=MathSqrt(summaPow_USDCAD/Per-MathPow(sredneeUSDCAD,2));//Qy
 MathSqrt принимает или 0 или -0 зачем квадратный корень из 0 ??? а -0 вываливает кучу ошибок на закладке експерты.



    
Причина обращения: