트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 2064

 
알렉세이 니콜라예프 :

우리는 Di를 찾고 있습니다 - 하루의 i 번째 분에 대한 증가의 평균 제곱입니다. 그런 다음 모든 증분을 해당 di=sqrt(Di)로 나눕니다. 정규화된 증분을 요약하고 이미 새 시리즈에 있는 SB에서 편차를 찾습니다. 가격은 왜곡되지만 시간은 변하지 않습니다.

1분에 2개월이 무슨 의미가 있겠습니까? 분당 변화는 적고 계산은 큽니다. 그리고 몇 분 전이나 한 달 전 그리고 한 달 전. 첫 번째 막대에 대한 코드입니다.

 for ( int i = 1 ,i<= 43200 * 2 , i++);
{
Di+= pow (( iClose ( NULL , 1 ,i) - iOpen ( NULL , 1 ,i)), 2 )/i ;
}
di= sqrt (Di);

새 행

 for ( int i = 1 ,i<= 43200 * 2 , i++);
{
NewClose[i]= iClose ( NULL , 1 ,i)/di;
NewOpen[i]= iOpen ( NULL , 1 ,i)/di ;
}

모든 것이 맞습니까?

 
발레리 야스트렘스키 :

모든 것이 맞습니까?


그렇지 않은 것 같다.

저는 알고리즘을 다음과 같이 이해했습니다. 지금 시간이 10시라고 가정해 보겠습니다. 이 시간의 m1 막대에 대해 Di를 정확히 계산합니다. 그런 다음 10:00분 동안 (닫기[i] - 열기[i])/di 등을 매분마다 계속합니다.

 
예브게니 추마코프 :


그렇지 않은 것 같다.

저는 알고리즘을 다음과 같이 이해했습니다. 지금 시간이 10시라고 가정해 보겠습니다. 이 시간의 m1 막대에 대해 Di를 정확히 계산합니다. 그런 다음 10:00분 동안 (닫기[i] - 열기[i])/di 등을 매분마다 계속합니다.

첫 번째 막대에 대한 코드입니다. 더 깊이 이동할 필요가 있습니다. 이것은 위에서부터의 또 다른 사이클입니다.
 
예브게니 추마코프 :


그렇지 않은 것 같다.

저는 알고리즘을 다음과 같이 이해했습니다. 지금 시간이 10시라고 가정해 보겠습니다. 이 시간의 m1 막대에 대해 Di를 정확히 계산합니다. 그런 다음 10:00분 동안 (닫기[i] - 열기[i])/di 등을 매분마다 계속합니다.

네, 맞습니다. 크기가 1440=24*60인 실수 및 정수의 두 가지 아카이브를 시작합니다. 첫 번째에서는 증분의 제곱을 합산하고 두 번째에서는 주어진 분 동안의 막대 수를 합산한 다음 첫 번째를 두 번째로 나눕니다(막대가 1개 이상인 숫자의 경우). 그런 다음 루트를 추출한 다음에만 증분을 재정규화하고 누적 합계를 수집합니다. 새 시리즈는 이미 SB와의 차이점을 조사할 것입니다.

 
알렉세이 니콜라예프 :

네, 맞습니다. 크기가 1440=24*60인 실수 및 정수의 두 가지 아카이브를 시작합니다. 첫 번째는 증분의 제곱을 합산하고 두 번째 는 주어진 분 동안의 막대 수를 합산한 다음 첫 번째를 두 번째로 나눕니다(막대가 1개 이상인 숫자의 경우). 그런 다음 루트를 추출한 다음에만 증분을 재정규화하고 누적 합계를 수집합니다. 새 시리즈는 이미 SB와의 차이점을 조사할 것입니다.

저것들. 24시간 동안 분의 rms, 그리고 2개월 분의 경우 등입니다. 바 번호 분? 제곱합을 1440으로 나누면?

 
발레리 야스트렘스키 :

제곱합을 1440으로 나누면?


제곱합을 특정 분 의 막대 수로 나눈 다음 근을 취합니다.

 
알렉세이 니콜라예프 :

네, 맞습니다. 크기가 1440=24*60인 실수 및 정수의 두 가지 아카이브를 시작합니다.


저것들. 당신은 대부를 구축해야합니다. 하루 양 = 1440분?

 
예브게니 추마코프 :


제곱합을 특정 분 의 막대 수로 나눈 다음 근을 취합니다.

그 다음 나는 이해하지 못했다. 철근 깊이가 3이면 숫자는 3이 되며 이 값은 세 번째 철근 또는 첫 번째 철근에 대해 계산됩니다. 내가 이해하는 한 평균이 정확히 나오려면 누적 합계가 아닌 동일한 막대 수에 대해 계산해야 합니다. 바로 공식을 주는 것이 좋다. 우리는 모두 단어를 다르게 이해합니다.

 for ( int i = 1 ,i<= 1440 , i++);
{
Di+= pow (( iClose ( NULL , 1 ,i) - iOpen ( NULL , 1 ,i)), 2 )/i ;
di= sqrt (Di);
DVal[i]=( iClose ( NULL , 1 ,i) - iOpen ( NULL , 1 ,i)/di; 
}

저에게는 옳지 않습니다.

 
발레리 야스트렘스키 :


저에게는 옳지 않습니다.


코드가 정확하지 않습니다

 

기록에 공백이 없고 모든 요일에 1440분이 있다고 가정하면(금요일에는 더 적음) 코드는 다음과 같아야 합니다.

 double di = 0 ;

int n = 40 ; // глубина 40 суток (два месяца)

int pos = 0 ; // текущий бар

int step = 0 ; // шаг


for ( int i = 0 ; i < n; i++){

di += MathPow ( close[pos + step] - open[pos + step], 2 );

step += 1440 ;
}

di = MathSqrt (di/n);

double x = (close[pos] - open[pos])/di;