커뮤니티
외부데이터 일봉값 참조하기
2013-11-06 09:59:01
179
글번호 69253
1. 선물 수식입니다.
2. 주챠트는 분봉입니다.
3. 외부Data(예: 외국인 현물 순매수금액)의 일봉평균으로 매매대금의 평균을 구하고자합니다.
(직전 5(10/20등)일간 최고/최저의 평균 등)
4. 날짜가 바뀌는 첫 봉에서만 계산합니다.
5. 해당식을 아래와 같이 작성하였습니다.
6. 올바른 값이 리턴되지 않아서 오류에 대한 분석을 부탁드립니다.
==============================================================================
If DayIndex == 0 Then {
JJ=0; KK=0;
D2HighSum=0; D2LowSum=0;
For II=1 To D2Len {
If Data2(HighD(II)) > 0 Then {
D2HighSum= D2HighSum + Data2(HighD(II));
JJ= JJ+1; }
If Data2(LowD(II)) < 0 Then {
D2LowSum= D2LowSum + Data2(LowD(II));
KK= KK+1; }
}
If JJ > 0 Then
D2HighAvg= D2HighSum/JJ;
If KK > 0 Then
D2LowAvg= D2LowSum/KK;
}
답변 1
예스스탁 예스스탁 답변
2013-11-06 20:31:57
안녕하세요
예스스탁입니다.
함수의 기간값을 가변으로 지정하시면 안됩니다.
함수의 매개변수값을 가변으로 가져가시면 최초 메모리를 생성할때
책정된 값보다 요구하는 값이 크면 메모리가 깨져
제대로된 값을 리턴받을 수 없습니다.
ii값이 기본은 0이므로 highd(0)과 같이 당일치만 사용되도록 되어 있다가
for문에 의해 이전일의 값이 요구되므로 제대로 계산되지 않습니다.
아래와 같이 차트의 첫봉부터 현재봉으로 순차적으로 진행해 오면서
data2의 일간고가와 저가를 계산해 배열변수에 저장하고
해당 배열변수을 이용해 작성하셔야 합니다.
input : D2Len(20);
var : cnt(0),jj(0),kk(0),D2HighSum(0),D2LowSum(0),II(0),D2HighAvg(0),D2LowAvg(0);
Array : D2H[50](0),D2L[50](0);
if data2(date != date[1]) Then{
D2H[0] = data2(H);
D2L[0] = data2(L);
for cnt = 0 to 20{
D2H[cnt] = D2H[cnt-1][1];
D2L[cnt] = D2L[cnt-1][1];
}
}
if data2(H) > D2H[0] Then
D2H[0] = data2(H);
if data2(L) < D2L[0] Then
D2L[0] = data2(L);
If data2(DayIndex == 0) Then {
JJ=0;
KK=0;
D2HighSum=0; D2LowSum=0;
For II=1 To D2Len {
If D2H[ii] > 0 Then {
D2HighSum= D2HighSum + D2H[ii];
JJ= JJ+1; }
If D2L[ii] < 0 Then {
D2LowSum= D2LowSum + D2L[ii];
KK= KK+1; }
}
If JJ > 0 Then
D2HighAvg= D2HighSum/JJ;
If KK > 0 Then
D2LowAvg= D2LowSum/KK;
}
즐거운 하루되세요
> 좋은선물 님이 쓴 글입니다.
> 제목 : 외부데이터 일봉값 참조하기
> 1. 선물 수식입니다.
2. 주챠트는 분봉입니다.
3. 외부Data(예: 외국인 현물 순매수금액)의 일봉평균으로 매매대금의 평균을 구하고자합니다.
(직전 5(10/20등)일간 최고/최저의 평균 등)
4. 날짜가 바뀌는 첫 봉에서만 계산합니다.
5. 해당식을 아래와 같이 작성하였습니다.
6. 올바른 값이 리턴되지 않아서 오류에 대한 분석을 부탁드립니다.
==============================================================================
If DayIndex == 0 Then {
JJ=0; KK=0;
D2HighSum=0; D2LowSum=0;
For II=1 To D2Len {
If Data2(HighD(II)) > 0 Then {
D2HighSum= D2HighSum + Data2(HighD(II));
JJ= JJ+1; }
If Data2(LowD(II)) < 0 Then {
D2LowSum= D2LowSum + Data2(LowD(II));
KK= KK+1; }
}
If JJ > 0 Then
D2HighAvg= D2HighSum/JJ;
If KK > 0 Then
D2LowAvg= D2LowSum/KK;
}
다음글
이전글