예스스탁
예스스탁 답변
2020-09-24 16:18:47
안녕하세요
예스스탁입니다.
1
기존식의 콜증감율,풋증감율이 전봉대비입니다. 전일대비로 변경하셔야 합니다.
식을 수정했습니다.
만기이후 첫날은 전일종목과 비교하면 갭이 커서 비율이 아주높거나 낮게 나옵니다.
만기이후 첫날은 시초가와 비교하게 작성했습니다.
var : cnt(0,Data1);
var : ndate2(0,Data2),week2(0,Data2),만기일2(False,Data2),nday2(0,Data2),콜증감누적치(0,Data2);
var : ndate3(0,Data3),week3(0,Data3),만기일3(False,Data3),nday3(0,Data3),풋증감누적치(0,Data3);
Array : O2[50](0,Data2),O3[50](0,data3);
Array : C2[50](0,Data2),C3[50](0,data3);
ndate2 = data2(date - int(date/100)*100);
week2 = data2(DayOfWeek(date));
if ndate2 >= 8 and ndate2 <= 14 and week2 == 4 then
만기일2 = True;
Else
만기일2 = False;
If Data2(Bdate != Bdate[1]) Then
{
O2[0] = Data2(O);
For cnt = 1 to 49
{
O2[cnt] = O2[cnt-1][1];
C2[cnt] = C2[cnt-1][1];
}
if 만기일2 == False and 만기일2[1] == true then
{
nday2 = 0;
}
nday2 = nday2+1;
}
C2[0] = data2(C);
콜증감누적치 = 0;
For cnt = 0 to nday2-1
{
if cnt != nday2-1 Then
콜증감누적치 = 콜증감누적치 + (C2[cnt]-C2[cnt+1])/C2[cnt+1]*100;
else
콜증감누적치 = 콜증감누적치 + (C2[cnt]-O2[cnt])/O2[cnt]*100;
}
ndate3 = data3(date - int(date/100)*100);
week3 = data3(DayOfWeek(date));
if ndate3 >= 8 and ndate3 <= 14 and week3 == 4 then
만기일3 = True;
Else
만기일3 = False;
If Data3(Bdate != Bdate[1]) Then
{
O3[0] = data3(O);
For cnt = 1 to 99
{
O3[cnt] = O3[cnt-1][1];
C3[cnt] = C3[cnt-1][1];
}
if 만기일3 == False and 만기일3[1] == true then
nday3 = 0;
nday3 = nday3+1;
}
C3[0] = data3(C);
풋증감누적치 = 0;
For cnt = 0 to nday2-1
{
if cnt != nday2-1 Then
풋증감누적치 = 풋증감누적치 + (C3[cnt]-C3[cnt+1])/C3[cnt+1]*100;
Else
풋증감누적치 = 풋증감누적치 + (C3[cnt]-O3[cnt])/O3[cnt]*100;
}
Plot1(콜증감누적치);
Plot2(풋증감누적치);
2
input : 지정날짜(20200914);
var : cnt(0,Data1);
var : nday2(0,data2),콜증감누적치(0,Data2);
var : nday3(0,data3),풋증감누적치(0,Data3);
Array : O2[50](0,Data2),O3[50](0,data3);
Array : C2[50](0,Data2),C3[50](0,data3);
If Data2(Bdate != Bdate[1]) Then
{
O2[0] = Data2(O);
For cnt = 1 to 49
{
O2[cnt] = O2[cnt-1][1];
C2[cnt] = C2[cnt-1][1];
}
if data2(Bdate) == 지정날짜 then
{
nday2 = 0;
}
nday2 = nday2+1;
}
C2[0] = data2(C);
if data2(Bdate) >= 지정날짜 Then
{
콜증감누적치 = 0;
For cnt = 0 to nday2-1
{
if cnt != nday2-1 Then
콜증감누적치 = 콜증감누적치 + (C2[cnt]-C2[cnt+1])/C2[cnt+1]*100;
else
콜증감누적치 = 콜증감누적치 + (C2[cnt]-O2[cnt])/O2[cnt]*100;
}
Plot1(콜증감누적치);
}
If Data3(Bdate != Bdate[1]) Then
{
O3[0] = data3(O);
For cnt = 1 to 99
{
O3[cnt] = O3[cnt-1][1];
C3[cnt] = C3[cnt-1][1];
}
if data3(Bdate) == 지정날짜 then
nday3 = 0;
nday3 = nday3+1;
}
C3[0] = data3(C);
if data3(Bdate) >= 지정날짜 then
{
풋증감누적치 = 0;
For cnt = 0 to nday2-1
{
if cnt != nday2-1 Then
풋증감누적치 = 풋증감누적치 + (C3[cnt]-C3[cnt+1])/C3[cnt+1]*100;
Else
풋증감누적치 = 풋증감누적치 + (C3[cnt]-O3[cnt])/O3[cnt]*100;
}
Plot2(풋증감누적치);
}
즐거운 하루되세요
> 스퍼트시커 님이 쓴 글입니다.
> 제목 : 지표값을 월물 단위로 리세팅하기
>
항상 신속하고 상세하게 답변 주셔서 많은 도움을 받고 있습니다.
감사합니다.
옵션 콜ATM(data2) 과 풋ATM(data3) 두 종목을 전략차트(3분봉)에 넣고
(data1은 연결선물)
각각 전일 종가 대비 증감율을 누적하는 지표를 만들어서 차트에 출력하고자 합니다.
이때 만기 익일(새월물 첫날)부터 증감율을 누적시키기 위해 아래와 같은 지표를 만들어 보았는데 결과값이 부정확하군요.
특히 새월물 첫날 누적치 초기화가 안되네요.
Var : 콜현재가(0), 풋현재가(0);
Var : 콜증감율(0), 풋증감율(0);
Var : 콜증감누적치(0), 풋증감누적치(0);
콜현재가 = data2(C);
풋현재가 = data3(C);
콜증감율 = (콜현재가 - 콜현재가[1])/콜현재가[1] *100;
풋증감율 = (풋현재가 - 풋현재가[1])/풋현재가[1] *100;
콜증감누적치 = 콜증감누적치 + 콜증감율;
풋증감누적치 = 풋증감누적치 + 풋증감율;
If 만기일 == Sdate and stime == 090000 then {
콜증감누적치 = 0;
풋증감누적치 = 0;
}
※ 간소화하기 위하여 만기일 산출식은 생략하였습니다.
어디에 문제가 있는지 살펴보시고 도와주시기 바랍니다.
그리고 사용자가 INPUT문으로 날자를 지정할 경우
만기일 대신 지정일 이후 누적하는 방법도 부탁드립니다.
감사합니다.