안녕하세요
긴 주기 참조해서 사용자 함수 만드는 법을 여쭤봤었습니다. (글 85189)
주신 수식대로 사용자 함수를 만들어서 적용했으나, 결과가 맞지 않는 것 같아 재문의드립니다.
10년 전부터 오늘까지의 X 평균을 구하는 식 작성을 요청드렸고 아래와 같이 답변 주셨습니다.
ex1) 10yrAVG(C) <--이렇게 적을 경우 10년전부터 오늘까지의 종가의 평균을 구하고 싶습니다.
ex2)
value1 = stdv(C, 25);
10yrAVG(value1) <-- 이렇게 적으면 25일간의 종가 표준편차의 10년간의 평균을 구함.
*만약, micro crude oil 처럼 해당 종목이 10년이 채 안되었을 경우, 차트 시작의 첫 봉부터 오늘까지의 봉의 C의 평균을 나타내게 부탁드립니다.
///
함수명 : avg10yr
반환값형 : 숫자형
input : price(Numeric);
var : cnt(0);
Array : sum1[50](0),sum2[50](0);
if Bdate > Bdate[1]+1000 Then
{
For cnt = 49 DownTo 1
{
sum1[cnt] = sum1[cnt-1];
sum2[cnt] = sum2[cnt-1];
}
sum1[0] = 0;
sum2[0] = 0;
}
if IsNan(price) == False Then
{
sum1[0] = sum1[0]+price;
sum2[0] = sum2[0]+1;
}
var1 = 0;
Var2 = 0;
For cnt = 0 to 9
{
var1 = var1+sum1[cnt];
var2 = var2+sum2[cnt];
}
avg10yr = var1/Var2;
/////
일봉상에서 사용한다고 말씀드린다는 것을 깜박했는데, 해당 코드로 하면 뭔가 결과가 이상합니다.
왜 어레이에 256(시장이 열리는 날 수)가 아니라 50으로 되었는지 이해가 어렵습니다.
또한 해당 코드대로 작성을 하면 해가 바뀔 때, 갑자기 값이 튑니다.
코드 작성 번거로우시더라도 한번 더 부탁드립니다. (__)
답변 1
예스스탁
예스스탁 답변
2024-01-04 15:17:49
안녕하세요
예스스탁입니다.
함수의 어느부분을 수정해 드려야 할지 모르겠습니다.
해당 함수는 10년 간의 매봉의 지정값을 모아 평균하는 내용이 맞습니다.
각 배열변수는 하나의 방이 하나의 연도의 누적값입니다.
[0]은 당해누적, [1]은 전년누적, [2]는 전전년 누적순입니다.
최근 50년치로 넉넉히 [50]개로 지정한 것입니다.
차트에 10년치의 데이터가 없으면
차트에 있는 기간만큼만 계산하게 되어 있습니다.
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 긴 주기 참조
> 안녕하세요
긴 주기 참조해서 사용자 함수 만드는 법을 여쭤봤었습니다. (글 85189)
주신 수식대로 사용자 함수를 만들어서 적용했으나, 결과가 맞지 않는 것 같아 재문의드립니다.
10년 전부터 오늘까지의 X 평균을 구하는 식 작성을 요청드렸고 아래와 같이 답변 주셨습니다.
ex1) 10yrAVG(C) <--이렇게 적을 경우 10년전부터 오늘까지의 종가의 평균을 구하고 싶습니다.
ex2)
value1 = stdv(C, 25);
10yrAVG(value1) <-- 이렇게 적으면 25일간의 종가 표준편차의 10년간의 평균을 구함.
*만약, micro crude oil 처럼 해당 종목이 10년이 채 안되었을 경우, 차트 시작의 첫 봉부터 오늘까지의 봉의 C의 평균을 나타내게 부탁드립니다.
///
함수명 : avg10yr
반환값형 : 숫자형
input : price(Numeric);
var : cnt(0);
Array : sum1[50](0),sum2[50](0);
if Bdate > Bdate[1]+1000 Then
{
For cnt = 49 DownTo 1
{
sum1[cnt] = sum1[cnt-1];
sum2[cnt] = sum2[cnt-1];
}
sum1[0] = 0;
sum2[0] = 0;
}
if IsNan(price) == False Then
{
sum1[0] = sum1[0]+price;
sum2[0] = sum2[0]+1;
}
var1 = 0;
Var2 = 0;
For cnt = 0 to 9
{
var1 = var1+sum1[cnt];
var2 = var2+sum2[cnt];
}
avg10yr = var1/Var2;
/////
일봉상에서 사용한다고 말씀드린다는 것을 깜박했는데, 해당 코드로 하면 뭔가 결과가 이상합니다.
왜 어레이에 256(시장이 열리는 날 수)가 아니라 50으로 되었는지 이해가 어렵습니다.
또한 해당 코드대로 작성을 하면 해가 바뀔 때, 갑자기 값이 튑니다.
코드 작성 번거로우시더라도 한번 더 부탁드립니다. (__)