double Buffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //--- indicator buffers mapping SetIndexBuffer ( 0 , Buffer1); SetIndexStyle ( 0 , DRAW_LINE ); return ( 0 ); //--- } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int n= 25 ; // количество элементов в массиве(для периода H1 n=25, тк i<n) int m= 24 ; // количество массивов(для периода H1 m=24, тк p=0, p<m) int w= 18 ; // количество заков после запятой
double Price_CloseX[][ 24 ]; // Массив цен закрытия 1 пары double Price_CloseY[][ 24 ]; // Массив цен закрытия 2 пары double dx[][ 24 ]; // Отклонение от среднего значения для пары 1 dx double dy[][ 24 ]; // Отклонение от среднего значения для пары 2 dy double dx2[][ 24 ]; // Квадрат отклонения ср.значения dx2 double dy2[][ 24 ]; // Квадрат отклонения ср.значения dy2 double dxdy[][ 24 ]; // Произведение dx и dy
double sum_x[][ 24 ]; double sum_y[][ 24 ];
double Mx[][ 24 ]; // Массив среднего значения цен закрытия пары 1 Mx double My[][ 24 ]; // Массив среднего значения цен закрытия пары 2 My
제거되고 잘, 그들은 거기에서 쓸모가 없습니다. 경고 대신 인쇄(...)를 사용 하고 "전문가" 탭에서 인쇄물을 확인하는 것이 좋습니다.
동일한 값 Edxdy [n- 1 ][ p]가 할당되었습니다. 이전 주기에서 주기의 주기가 있고 인덱스 "n"이 변경되면 마지막 주기에서는 변경되지 않습니다. 오후 n-1=24
Edxdy[n- 1 ][p]
무례하게 시도 - 충당? // 표시기는 검은색 가로선을 그려야 합니다. 그러나 검은색 배경에서는 보이지 않습니다. 배경색을 변경하거나 선을 변경하십시오.
Buffer1[p]= 4 ;
할당된 경우 생각해야 합니다. 여기에 쓰여진 내용: Edxdy[24][p]
헐 뭐 결국 다 할당되고 그려지긴 하겠지만 검은색 바탕에 검은색 선을 그리는 건가?
선의 색상, 유형 및 두께는 다음과 같습니다.
SetIndexStyle ( 0 , DRAW_LINE , 0 , 1 , Green );
Edxdy[n-1][p] - 여기에 dx와 dy의 곱의 합을 썼습니다. 이 값은 p번째 차원의 n-1개 요소로 구성된 배열에 대한 Pearson 상관 계수 Koef를 계산하는 데 필요합니다. 이 경우 첫 번째 막대부터 시작하여 24개 막대에 대한 상관 관계를 계산하기로 결정했습니다. 결과는 "온라인 통화 쌍 상관 관계 계산기" 사이트뿐만 아니라 간단한 스크립트(1차원 배열만 사용됨)를 계산하는 Pearson 상관 계수의 유사한 계산과 비교되었습니다. 모든 값은 동일합니다. 오류가 Buffer1[] 배열 선언에 있다고 생각합니다. 유사한 코드와 ArrayResize(Buffer1, n)를 통한 배열 선언으로 스크립트를 만들었습니다. 스크립트 코드 Buffer1[p]=Koef[p]에서 값이 올바르게 할당됩니다. 코드에 표시기가 없습니다(((
Timur1988 : Edxdy[n-1][p] - 여기에 dx와 dy의 곱의 합을 썼습니다. 이 값은 p번째 차원의 n-1개 요소로 구성된 배열에 대한 Pearson 상관 계수 Koef를 계산하는 데 필요합니다. 이 경우 첫 번째 막대부터 시작하여 24개 막대에 대한 상관 관계를 계산하기로 결정했습니다. 결과는 "온라인 통화 쌍 상관 관계 계산기" 사이트뿐만 아니라 간단한 스크립트(1차원 배열만 사용됨)를 계산하는 Pearson 상관 계수의 유사한 계산과 비교되었습니다. 모든 값은 동일합니다. 오류가 Buffer1[] 배열 선언에 있다고 생각합니다. 유사한 코드와 ArrayResize(Buffer1, n)를 통한 배열 선언으로 스크립트를 만들었습니다. 스크립트 코드 Buffer1[p]=Koef[p]에서 값이 올바르게 할당됩니다. 코드에 표시기가 없습니다(((
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_level1 0.8
#property indicator_level2 - 0.8
#property indicator_levelcolor Black
#property indicator_color1 Blue
#property indicator_minimum - 1
#property indicator_width1 2
#property indicator_style1 0
#property indicator_maximum 1
double Buffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//--- indicator buffers mapping
SetIndexBuffer ( 0 , Buffer1);
SetIndexStyle ( 0 , DRAW_LINE );
return ( 0 );
//---
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int n= 25 ; // количество элементов в массиве(для периода H1 n=25, тк i<n)
int m= 24 ; // количество массивов(для периода H1 m=24, тк p=0, p<m)
int w= 18 ; // количество заков после запятой
double Price_CloseX[][ 24 ]; // Массив цен закрытия 1 пары
double Price_CloseY[][ 24 ]; // Массив цен закрытия 2 пары
double dx[][ 24 ]; // Отклонение от среднего значения для пары 1 dx
double dy[][ 24 ]; // Отклонение от среднего значения для пары 2 dy
double dx2[][ 24 ]; // Квадрат отклонения ср.значения dx2
double dy2[][ 24 ]; // Квадрат отклонения ср.значения dy2
double dxdy[][ 24 ]; // Произведение dx и dy
double sum_x[][ 24 ];
double sum_y[][ 24 ];
double Mx[][ 24 ]; // Массив среднего значения цен закрытия пары 1 Mx
double My[][ 24 ]; // Массив среднего значения цен закрытия пары 2 My
double Edx2[][ 24 ]; // Сумма квадратов отклонений Edx2
double Edy2[][ 24 ]; // Сумма квадратов отклонений Edy2
double Edxdy[][ 24 ]; // Сумма произведений отклонений Edxdy
double Koef[];
ArrayResize (Price_CloseX, n);
ArrayResize (Price_CloseY, n);
ArrayResize (dx, n);
ArrayResize (dy, n);
ArrayResize (dx2, n);
ArrayResize (dy2, n);
ArrayResize (dxdy, n);
ArrayResize (sum_x, n);
ArrayResize (sum_y, n);
ArrayResize (Mx, n);
ArrayResize (My, n);
ArrayResize (Edx2, n);
ArrayResize (Edy2, n);
ArrayResize (Edxdy, n);
ArrayResize (Koef, n);
string sym_x= "EURUSD" ;
string sym_y= "GBPUSD" ;
for ( int i= 1 ; i<n; i++)
{
for ( int p= 0 ; p<m; p++)
{
Price_CloseX[i][p]= iClose (sym_x, PERIOD_H1 , i+p);
Price_CloseY[i][p]= iClose (sym_y, PERIOD_H1 , i+p);
}
}
for ( int i= 1 ; i<n; i++)
{
for ( int p= 0 ; p<m; p++)
{
sum_x[i][p]=sum_x[i][p- 1 ]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p- 1 ]+Price_CloseY[i][p];
}
}
for ( int i= 1 ; i<n; i++)
{
for ( int p= 0 ; p<m; p++)
{
Mx[i][p]=sum_x[p+ 1 ][m- 1 ]/(n- 1 );
My[i][p]=sum_y[p+ 1 ][m- 1 ]/(n- 1 );
}
}
for ( int i= 1 ; i<n; i++)
{
for ( int p= 0 ; p<m; p++)
{
dx[i][p]=Price_CloseX[i][p]-Mx[i][p];
dy[i][p]=Price_CloseY[i][p]-My[i][p];
}
}
for ( int i= 1 ; i<n; i++)
{
for ( int p= 0 ; p<m; p++)
{
dx2[i][p]=(dx[i][p]*dx[i][p])* 1000000 ;
dy2[i][p]=(dy[i][p]*dy[i][p])* 1000000 ;
}
}
for ( int i= 1 ; i<n; i++)
{
for ( int p= 0 ; p<m; p++)
{
dxdy[i][p]=(dx[i][p]*dy[i][p])* 1000000 ;
}
}
for ( int i= 1 ; i<n; i++)
{
for ( int p= 0 ; p<m; p++)
{
Edx2[i][p]=(Edx2[i- 1 ][p]+dx2[i][p]);
Edy2[i][p]=(Edy2[i- 1 ][p]+dy2[i][p]);
Edxdy[i][p]=(Edxdy[i- 1 ][p]+dxdy[i][p]);
}
}
for ( int p= 0 ; p<m; p++)
{
Koef[p]=Edxdy[n- 1 ][p]/ sqrt (Edx2[n- 1 ][p]*Edy2[n- 1 ][p]);
Buffer1[p]=Koef[p];
Alert ( "Коэффициент корреляции Пирсона между " , sym_x, " и " , sym_y, " равен " , DoubleToString (Koef[p], w));
Alert ( "Значение буфера " , p, " равно " , Buffer1[p]);
}
return ( 0 );
}
오류가 어디에 있습니까? Koef[] 배열의 요소 값이 계산되고 각 요소에 값이 할당됩니다. Buffer1[]이 할당되지 않은 이유는 무엇입니까?
경고가 마지막 주기에서 제거를 시도합니다.
도움이되지 않았습니다 (
제거되고 잘, 그들은 거기에서 쓸모가 없습니다. 경고 대신 인쇄(...)를 사용 하고 "전문가" 탭에서 인쇄물을 확인하는 것이 좋습니다.
동일한 값 Edxdy [n- 1 ][ p]가 할당되었습니다. 이전 주기에서 주기의 주기가 있고 인덱스 "n"이 변경되면 마지막 주기에서는 변경되지 않습니다. 오후 n-1=24
무례하게 시도 - 충당? // 표시기는 검은색 가로선을 그려야 합니다. 그러나 검은색 배경에서는 보이지 않습니다. 배경색을 변경하거나 선을 변경하십시오.
할당된 경우 생각해야 합니다. 여기에 쓰여진 내용: Edxdy[24][p]
헐 뭐 결국 다 할당되고 그려지긴 하겠지만 검은색 바탕에 검은색 선을 그리는 건가?
다음은 선의 색상, 유형 및 두께입니다.
제거되고 잘, 그들은 거기에서 쓸모가 없습니다. 경고 대신 인쇄(...)를 사용 하고 "전문가" 탭에서 인쇄물을 확인하는 것이 좋습니다.
동일한 값 Edxdy [n- 1 ][ p]가 할당되었습니다. 이전 주기에서 주기의 주기가 있고 인덱스 "n"이 변경되면 마지막 주기에서는 변경되지 않습니다. 오후 n-1=24
무례하게 시도 - 충당? // 표시기는 검은색 가로선을 그려야 합니다. 그러나 검은색 배경에서는 보이지 않습니다. 배경색을 변경하거나 선을 변경하십시오.
할당된 경우 생각해야 합니다. 여기에 쓰여진 내용: Edxdy[24][p]
헐 뭐 결국 다 할당되고 그려지긴 하겠지만 검은색 바탕에 검은색 선을 그리는 건가?
선의 색상, 유형 및 두께는 다음과 같습니다.
Edxdy[n-1][p] - 여기에 dx와 dy의 곱의 합을 썼습니다. 이 값은 p번째 차원의 n-1개 요소로 구성된 배열에 대한 Pearson 상관 계수 Koef를 계산하는 데 필요합니다. 이 경우 첫 번째 막대부터 시작하여 24개 막대에 대한 상관 관계를 계산하기로 결정했습니다. 결과는 "온라인 통화 쌍 상관 관계 계산기" 사이트뿐만 아니라 간단한 스크립트(1차원 배열만 사용됨)를 계산하는 Pearson 상관 계수의 유사한 계산과 비교되었습니다. 모든 값은 동일합니다. 오류가 Buffer1[] 배열 선언에 있다고 생각합니다. 유사한 코드와 ArrayResize(Buffer1, n)를 통한 배열 선언으로 스크립트를 만들었습니다. 스크립트 코드 Buffer1[p]=Koef[p]에서 값이 올바르게 할당됩니다. 코드에 표시기가 없습니다(((
내 게시물을 읽었습니까?
SetIndexStyle ( 0 , DRAW_LINE , 0 , 1 , 녹색 ); - 값을 설정하지만 여전히 선을 그리지 않습니다.
네 감사합니다!
SetIndexStyle ( 0 , DRAW_LINE , 0 , 1 , 녹색 ); - 값을 설정하지만 여전히 선을 그리지 않습니다.
리미터 제거를 시도하십시오. #property indicator_minimum - 1, #property indicator_maximum 1 , 아마도 버퍼 값이 그 뒤에 그려집니다.
고맙습니다! 제거된 #property strict - 도움됨)