아래의 식이 제가 주간장에서 90일간의 트루레인지(dATR)를 구하는 식인데
이식을 복합장 챠트에서 주간의 90일간의 트루레인지를 구하는 식으로 변환하고 싶습니다.
부탁드립니다.
var : dATR(0), maxATR90(0), hap90(0), n90(0) ;
hap90 = 0 ;
for n90 = 1 to 90 {
maxATR90 = max( dayhigh(n90)-daylow(n90) ,
dayclose(n90+1)-daylow(n90) ,
dayhigh(n90)-dayclose(n90+1) ) ;
hap90 = hap90 + maxATR90 ;
}
dATR = hap90 / 90 ;
답변 1
예스스탁
예스스탁 답변
2025-06-11 12:27:36
안녕하세요
예스스탁입니다.
차트는 내부적으로 차트 첫봉 +99일 정도의 일간데이터가 추가로 제공되어
차트에 90일치의 데이터가 없어도서 값을 계산하는데 문제가 없습니다.
하지만 복합차트에서 주간장만 따로 계산하기 위해서는
별도로 1번 수식과 같이 차트의 있는 데이터만으로 주간장의 시고저종가를 계산해야 하는데
차트의 최대 봉갯수가 2만개로 사용하시는 주기에 따라서는
91일치의 데이터가 없으면 계산이 되지 않습니다.
1
var : Nday(90);
var : dATR(0), maxATR90(0), hap90(0), n90(0),i(0);
Array : DO[100](0),DH[100](0),DL[100](0),DC[100](0);
//주간 시고저종가
if (sDate != sDate[1] and sTime >= 84500) or
(sDate == sDate[1] and sTime >= 84500 and sTime[1] < 84500) Then
{
For i = 99 DownTo 1
{
DO[i] = DO[i-1];
DH[i] = DH[i-1];
DL[i] = DL[i-1];
DC[i] = DC[i-1];
}
DO[0] = O;
DH[0] = H;
DL[0] = L;
}
if sTime >= 84500 and sTime <= 154500 Then
{
if DH[0] > 0 and H > DH[0] Then
DH[0] = H;
if DL[0] > 0 and L < DL[0] Then
DL[0] = L;
DC[0] = C;
}
if DC[Nday+1] > 0 Then
{
hap90 = 0 ;
for n90 = 1 to Nday
{
maxATR90 = max(DH[n90]-DL[n90] ,
DC[n90+1]-DL[n90] ,
DH[n90]-DC[n90+1] ) ;
hap90 = hap90 + maxATR90 ;
}
dATR = hap90 / Nday ;
Plot1(dATR);
}
2
만약 차트에 데이터가 부족해서 주간 일봉의 ATR값을 계산하지 못한다면
참조데이터로 주간 일봉을 추가하고 이용하셔야 합니다.
차트에 기본종목과 같은 종목을 참조데이터로 추가한 이후에
주간 일봉으로 설정하시고 아래식 적용하시면 됩니다.
차트왼쪽 상단의 종목선택 버튼 중 왼쪽은 기본종목 선택버튼이고,
오른쪽은 차트에 참조데이터를 추가하는 버튼입니다.
var : Nday(90);
var : dATR(0,Data2);
dATR = data2(ATR(Nday));
Plot1(dATR);
즐거운 하루되세요
> 자오지환웅 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다
>
아래의 식이 제가 주간장에서 90일간의 트루레인지(dATR)를 구하는 식인데
이식을 복합장 챠트에서 주간의 90일간의 트루레인지를 구하는 식으로 변환하고 싶습니다.
부탁드립니다.
var : dATR(0), maxATR90(0), hap90(0), n90(0) ;
hap90 = 0 ;
for n90 = 1 to 90 {
maxATR90 = max( dayhigh(n90)-daylow(n90) ,
dayclose(n90+1)-daylow(n90) ,
dayhigh(n90)-dayclose(n90+1) ) ;
hap90 = hap90 + maxATR90 ;
}
dATR = hap90 / 90 ;