질문1.
A.
if sDate!=sDate[1] Then {
vola=0;
For i=1 to 5 Begin
vola=vola+data3(highd(i))-data3(lowd(i));
end;
}
B.
if sDate!=sDate[1] Then {
vola= ((data3(highd(5))-data3(lowd(5)))+(data3(highd(4))-data3(lowd(4)))+(data3(highd(3))-data3(lowd(3)))+(data3(highd(2))-data3(lowd(2)))+(data3(highd(1))-data3(lowd(1))));
}
지료로 만들어보니 A와 B에 차이가 있는데 제가 어떤 부분을 캐치못한 걸까요?
그리고 위와 같이 날짜가 바뀌는 봉에 한정해서 변수를 설정하면 그렇지 않은 경우와 비교하여 메모리가 절약이 되나요?
질문2.
data2에 있는 미국시장의 일봉의 전일 종가(전 거래일의 새벽 종가)를 추출하고 싶습니다.
일반적으로는 data2(Closed(1))이 되겠으나 공휴일인 경우에는 다르니깐요.
항상 감사드립니다.
답변 1
예스스탁
예스스탁 답변
2025-05-08 14:30:56
안녕하세요
예스스탁입니다.
1
수식을 차트에 적용하면 최초 수식을 한번 스캔하게 됩니다.
특정함수가 특정if문에서만 호출이 될때
B번과 같이 highD(5)로 작성이 되어 있으면
highD(5)가 필요하므로 사용가능하게 값을 만들게 됩니다.
하지만 for문에서는 highD(i)와 같이 되어 있어
과거몇일전 값까지 계산해야 할지 모르므로 만들지 않은 상태에서
호출이 되어 발생하는 내용인것 같습니다.
참조데이터 일간 데이터를 이용해 루프를 돌리신다면
아래와 같이 일간데이터를 계산하게 만드신 후에
루프에서 이용하시면 됩니다.
var : vola(0),i(0);
Array : H3[20](0,data3),L3[20](0,data3);
if Data3(Bdate != Bdate[1]) Then
{
For i = 19 downto 1
{
H3[i] = H3[i-1];
L3[i] = L3[i-1];
}
H3[0] = Data3(H);
L3[0] = Data3(L);
}
Else
{
if H3[0] > 0 and data3(H) > H3[0] Then
H3[0] = data3(H);
if L3[0] > 0 and data3(L) < L3[0] Then
L3[0] = data3(L);
}
if sDate!=sDate[1] Then
{
vola=0;
For i = 1 to 5
Begin
vola=vola+(H3[i]-L3[i]);
end;
}
Plot1(vola);
2
Plot1(Data2(CloseD(0)));
data2에 미국지수를 일봉으로 적용하시고 위 지표 적용해 보시면
국내 당일에 오늘 새벽에 끝난 미국장의 값이 리턴이 됩니다.
(0)이 가장 최근, (1)이 그전봉, (2)가 전전봉 순입니다.
즐거운 하루되세요
> 마녀58 님이 쓴 글입니다.
> 제목 : 질문 드립니다.
> 질문1.
A.
if sDate!=sDate[1] Then {
vola=0;
For i=1 to 5 Begin
vola=vola+data3(highd(i))-data3(lowd(i));
end;
}
B.
if sDate!=sDate[1] Then {
vola= ((data3(highd(5))-data3(lowd(5)))+(data3(highd(4))-data3(lowd(4)))+(data3(highd(3))-data3(lowd(3)))+(data3(highd(2))-data3(lowd(2)))+(data3(highd(1))-data3(lowd(1))));
}
지료로 만들어보니 A와 B에 차이가 있는데 제가 어떤 부분을 캐치못한 걸까요?
그리고 위와 같이 날짜가 바뀌는 봉에 한정해서 변수를 설정하면 그렇지 않은 경우와 비교하여 메모리가 절약이 되나요?
질문2.
data2에 있는 미국시장의 일봉의 전일 종가(전 거래일의 새벽 종가)를 추출하고 싶습니다.
일반적으로는 data2(Closed(1))이 되겠으나 공휴일인 경우에는 다르니깐요.
항상 감사드립니다.