Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
iBeta
//+------------------------------------------------------------------+
//| iBeta.mq4 |
//| * |
//| * |
//+------------------------------------------------------------------+
#property copyright "http://dmffx.com"
#property link "http://dmffx.com"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//--- input parameters
extern int Periods = 14; // Ïåðèîä â áàðàõ
extern string Symbol1 = "EURUSD"; // Ñèìâîë 1
extern string Symbol2 = "GBPUSD"; // Ñèìâîë 2
extern int Mode1 = 1; // Ðåæèì 1: 0 - êîâàðèàöèÿ, 1 - áåòà ñèìâîëà 1, 2 - áåòà ñèìâîëà 2, 3 - êîððåëÿöèÿ
extern int Price = 0; // Öåíà: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int Mode2 = 2; // Ðåæèì 1: 0 - öåíà Price, 1 - ROC îò öåíû Price, 2 - ROC% îò öåíû Price
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init(){
Symbol1=StringTrimLeft(StringTrimRight(Symbol1));
Symbol2=StringTrimLeft(StringTrimRight(Symbol2));
if(Symbol1=="")Symbol1=Symbol();
if(Symbol2=="")Symbol2=Symbol();
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
switch(Mode1){
case 0:
IndicatorShortName(Symbol1+" "+Symbol2+" covariation");
break;
case 1:
IndicatorShortName("Beta of "+Symbol1+" with "+Symbol2);
break;
case 2:
IndicatorShortName("Beta of "+Symbol2+" with "+Symbol1);
break;
case 3:
IndicatorShortName(Symbol1+" "+Symbol2+" correlation");
break;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start(){
int ic=IndicatorCounted();
datetime daytimes[];
static bool err;
ArrayCopySeries(daytimes,MODE_TIME,Symbol1,0);
int le1=GetLastError();
ArrayCopySeries(daytimes,MODE_TIME,Symbol2,0);
int le2=GetLastError();
if(le1==4066 || le2==4066){
Comment("æäó îáíîâëåíèÿ äàííûõ íà "+Symbol1+" è "+Symbol2);
err=true;
return(0);
}
int limit=Bars-ic-1;
if(err || ic==0){
if(err){
err=false;
Comment("");
}
for(int i=Bars-1;i>=0;i--){
int bs1=iBarShift(Symbol1,0,Time[i],false);
int bs2=iBarShift(Symbol2,0,Time[i],false);
if(bs1<iBars(Symbol1,0)-Periods-1 && bs2<iBars(Symbol2,0)-Periods-1){
limit=i;
break;
}
}
}
double x,y,z1,z2;
int j;
for(i=limit;i>=0;i--){
bs1=iBarShift(Symbol1,0,Time[i],false);
bs2=iBarShift(Symbol2,0,Time[i],false);
double aver1=iMA(Symbol1,0,Periods,0,0,0,bs1);
double aver2=iMA(Symbol2,0,Periods,0,0,0,bs2);
double cov=0;
double d1=0;
double d2=0;
switch(Mode2){
case 0:
for(j=0;j<Periods;j++){
x=iMA(Symbol1,0,1,0,0,Price,bs1+j);
y=iMA(Symbol2,0,1,0,0,Price,bs2+j);
z1=(x-aver1);
z2=(y-aver2);
cov+=z1*z2;
d1+=z1*z1;
d2+=z2*z2;
}
break;
case 1:
for(j=0;j<Periods;j++){
x=iMA(Symbol1,0,1,0,0,Price,bs1+j)-iMA(Symbol1,0,1,0,0,Price,bs1+j+1);
y=iMA(Symbol2,0,1,0,0,Price,bs2+j)-iMA(Symbol2,0,1,0,0,Price,bs2+j+1);
z1=(x-aver1);
z2=(y-aver2);
cov+=z1*z2;
d1+=z1*z1;
d2+=z2*z2;
}
break;
case 2:
for(j=0;j<Periods;j++){
x=(iMA(Symbol1,0,1,0,0,Price,bs1+j)-iMA(Symbol1,0,1,0,0,Price,bs1+j+1))/iMA(Symbol1,0,1,0,0,Price,bs1+j+1);
y=(iMA(Symbol2,0,1,0,0,Price,bs2+j)-iMA(Symbol2,0,1,0,0,Price,bs2+j+1))/iMA(Symbol2,0,1,0,0,Price,bs2+j+1);
z1=(x-aver1);
z2=(y-aver2);
cov+=z1*z2;
d1+=z1*z1;
d2+=z2*z2;
}
break;
}
cov/=Periods;
d1=MathSqrt(d1/Periods);
d2=MathSqrt(d2/Periods);
switch(Mode1){
case 0:
ExtMapBuffer1[i]=cov;
break;
case 1:
ExtMapBuffer1[i]=cov/(d2);
break;
case 2:
ExtMapBuffer1[i]=cov/(d1);
break;
case 3:
ExtMapBuffer1[i]=cov/(d1*d2);
break;
}
}
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---