커뮤니티
주야간장을 1거래일로 보고....
2017-04-16 23:17:34
196
글번호 108862
당일(예컨대 4/1일) 오전9시부터 다음날(4/2) 새벽4시까지의
주간장과야간장을 합쳐서 1거래일로 취급하고,
다음날 오전9시부터 새로운 거래일(초기화라고하나요?)로 보고
선물거래를 합니다.
실제 계좌상에는 당일주야간 거래를 통해 청산하지않은 보유잔고가 있어도
다음날 오전9시에는 시스템상 무포지션을 유지하도록 하려면,
1. 시간설정을 어떻게 해야 하나요?
(sdate, bdate, dayindex등을 써야할 것 같은데요...)
2. 이경우 전일(3/31)종가를 다음날(4/2)새벽시간에는 어떻게 표현하나요?
3. 당일(4/1)주간장 마감종가는
그날 이어지는 야간장에서 어떻게 표현하며,
다음날(4/2)주간장에서는 어떻게 표현하나요?
4. 다음날(4/2)주간장에서는 그날 새벽의 최종 마감종가를 어떻게 표현하나요?
항상 감사드립니다.
답변 2
예스스탁 예스스탁 답변
2017-04-18 15:44:35
안녕하세요
예스스탁입니다.
1
시스템은 실제계좌의 잔고상태는 알수가 없습니다.
차트의 신호상 포지션 여부만 체크되므로
새벽 4시에 청산하는 내용으로 만들어야
아침 9시(영업일변경시)에 무포로 시작할수 있습니다.
var : Tcond(false);
if bdate != Bdate[1] Then
Tcond = true;
if stime == 040000 or (stime > 040000 and stime[1] < 040000) Then{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if Tcond == false Then{
진입청산수식
}
2
함수로 제공되는 dayopen,dayhigh,daylow,dayclose함수가
영업일 변경시간을 기준으로 일간 시고저종가를 리턴해 주는 함수입니다.
차트가 주야간 복합차트이면 주야간 합쳐 시고저종가를 리턴해 주게 됩니다.
그러므로 전일 종가는 dayclose(1)로 사용하시면 됩니다.
3
복합차트에서 주야간을 분할해서 시고저종가를 계산하고자 하시면 아래와
같은 수식 사용하시면 됩니다.
각 배열함수 [0],[1],[2]순으로 과거입니다.
var : cnt(0);
Array : DO[10](0),DH[10](0),DL[10](0),DC[10](0);
Array : NO[10](0),NH[10](0),NL[10](0),NC[10](0);
if Stime == 090000 or (stime > 090000 and stime[1] < 090000) Then{
DO[0] = O;
DH[0] = H;
DL[0] = L;
for cnt = 1 to 9{
DO[cnt] = DO[cnt-1][1];
DH[cnt] = DH[cnt-1][1];
DL[cnt] = DL[cnt-1][1];
DC[cnt] = DC[cnt-1][1];
}
}
if stime >= 090000 and stime < 180000 then{
if H > DH[0] Then
DH[0] = H;
if L < DL[0] Then
DL[0] = L;
DC[0] = C;
}
if Stime == 180000 or (stime > 180000 and stime[1] < 180000) Then{
NO[0] = O;
NH[0] = H;
NL[0] = L;
for cnt = 1 to 9{
NO[cnt] = NO[cnt-1][1];
NH[cnt] = NH[cnt-1][1];
NL[cnt] = NL[cnt-1][1];
NC[cnt] = NC[cnt-1][1];
}
}
if stime >= 180000 or stime < 90000 then{
if H > NH[0] Then
NH[0] = H;
if L < NL[0] Then
NL[0] = L;
NC[0] = C;
}
plot1(DO[0],"주간장시가");
plot2(DH[0],"주간장고가");
plot3(DL[0],"주간장저가");
plot4(DC[0],"주간장종가");
plot5(NO[0],"야간장시가");
plot6(NH[0],"야간장고가");
plot7(NL[0],"야간장저가");
plot8(NC[0],"야간장종가");
4
야간장 종가가 전일종가이므로 dayclose(1)입니다.
즐거운 하루되세요
> 자마이카 님이 쓴 글입니다.
> 제목 : 주야간장을 1거래일로 보고....
> 당일(예컨대 4/1일) 오전9시부터 다음날(4/2) 새벽4시까지의
주간장과야간장을 합쳐서 1거래일로 취급하고,
다음날 오전9시부터 새로운 거래일(초기화라고하나요?)로 보고
선물거래를 합니다.
실제 계좌상에는 당일주야간 거래를 통해 청산하지않은 보유잔고가 있어도
다음날 오전9시에는 시스템상 무포지션을 유지하도록 하려면,
1. 시간설정을 어떻게 해야 하나요?
(sdate, bdate, dayindex등을 써야할 것 같은데요...)
2. 이경우 전일(3/31)종가를 다음날(4/2)새벽시간에는 어떻게 표현하나요?
3. 당일(4/1)주간장 마감종가는
그날 이어지는 야간장에서 어떻게 표현하며,
다음날(4/2)주간장에서는 어떻게 표현하나요?
4. 다음날(4/2)주간장에서는 그날 새벽의 최종 마감종가를 어떻게 표현하나요?
항상 감사드립니다.
자마이카
2017-04-19 20:56:04
친절한 답변 감사합니다.
양매도를 매일유지하면서 코스피지수가 1포인트 변동시마다 따라가면서
선물로 헷지하는 시스템을 만들고자 합니다.
따라서 선물도 양매도포지션과 함께 적게는2개에서 많게는 10여개까지
항상 잔고로 가지고 있을수 밖에 없습니다.
그리고 선물진입과 청산은 각기 다른이름으로 피라미딩을 할 것이므로
당일 진입분이 다음날이후로 계속 남아있을 경우(예컨대 3-4일동안
10포인트 변동시 적어도 20여개의 진입명과 청산명이 필요할수도 있어
수식상으로 관리하기가 매우 어려울것으로 생각됩니다.
그래서 매영업일 당일분의 진입과 청산만을 다루고자 했던것입니다.
1. 그런데 새벽장에서 당시까지의 선물 잔고를 전부 청산하여야 한다면
하루 종일 헷지로 진입한 선물을 들고 다음날로 넘겨가려는 원래의 의도가 무산되게 될것인데요.
어떻게 하면 될까요?
(혹시 날짜로 시스템을 속이는 편법을 사용할 수도 있을까요?)
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 주야간장을 1거래일로 보고....
>
안녕하세요
예스스탁입니다.
1
시스템은 실제계좌의 잔고상태는 알수가 없습니다.
차트의 신호상 포지션 여부만 체크되므로
새벽 4시에 청산하는 내용으로 만들어야
아침 9시(영업일변경시)에 무포로 시작할수 있습니다.
var : Tcond(false);
if bdate != Bdate[1] Then
Tcond = true;
if stime == 040000 or (stime > 040000 and stime[1] < 040000) Then{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if Tcond == false Then{
진입청산수식
}
2
함수로 제공되는 dayopen,dayhigh,daylow,dayclose함수가
영업일 변경시간을 기준으로 일간 시고저종가를 리턴해 주는 함수입니다.
차트가 주야간 복합차트이면 주야간 합쳐 시고저종가를 리턴해 주게 됩니다.
그러므로 전일 종가는 dayclose(1)로 사용하시면 됩니다.
3
복합차트에서 주야간을 분할해서 시고저종가를 계산하고자 하시면 아래와
같은 수식 사용하시면 됩니다.
각 배열함수 [0],[1],[2]순으로 과거입니다.
var : cnt(0);
Array : DO[10](0),DH[10](0),DL[10](0),DC[10](0);
Array : NO[10](0),NH[10](0),NL[10](0),NC[10](0);
if Stime == 090000 or (stime > 090000 and stime[1] < 090000) Then{
DO[0] = O;
DH[0] = H;
DL[0] = L;
for cnt = 1 to 9{
DO[cnt] = DO[cnt-1][1];
DH[cnt] = DH[cnt-1][1];
DL[cnt] = DL[cnt-1][1];
DC[cnt] = DC[cnt-1][1];
}
}
if stime >= 090000 and stime < 180000 then{
if H > DH[0] Then
DH[0] = H;
if L < DL[0] Then
DL[0] = L;
DC[0] = C;
}
if Stime == 180000 or (stime > 180000 and stime[1] < 180000) Then{
NO[0] = O;
NH[0] = H;
NL[0] = L;
for cnt = 1 to 9{
NO[cnt] = NO[cnt-1][1];
NH[cnt] = NH[cnt-1][1];
NL[cnt] = NL[cnt-1][1];
NC[cnt] = NC[cnt-1][1];
}
}
if stime >= 180000 or stime < 90000 then{
if H > NH[0] Then
NH[0] = H;
if L < NL[0] Then
NL[0] = L;
NC[0] = C;
}
plot1(DO[0],"주간장시가");
plot2(DH[0],"주간장고가");
plot3(DL[0],"주간장저가");
plot4(DC[0],"주간장종가");
plot5(NO[0],"야간장시가");
plot6(NH[0],"야간장고가");
plot7(NL[0],"야간장저가");
plot8(NC[0],"야간장종가");
4
야간장 종가가 전일종가이므로 dayclose(1)입니다.
즐거운 하루되세요
> 자마이카 님이 쓴 글입니다.
> 제목 : 주야간장을 1거래일로 보고....
> 당일(예컨대 4/1일) 오전9시부터 다음날(4/2) 새벽4시까지의
주간장과야간장을 합쳐서 1거래일로 취급하고,
다음날 오전9시부터 새로운 거래일(초기화라고하나요?)로 보고
선물거래를 합니다.
실제 계좌상에는 당일주야간 거래를 통해 청산하지않은 보유잔고가 있어도
다음날 오전9시에는 시스템상 무포지션을 유지하도록 하려면,
1. 시간설정을 어떻게 해야 하나요?
(sdate, bdate, dayindex등을 써야할 것 같은데요...)
2. 이경우 전일(3/31)종가를 다음날(4/2)새벽시간에는 어떻게 표현하나요?
3. 당일(4/1)주간장 마감종가는
그날 이어지는 야간장에서 어떻게 표현하며,
다음날(4/2)주간장에서는 어떻게 표현하나요?
4. 다음날(4/2)주간장에서는 그날 새벽의 최종 마감종가를 어떻게 표현하나요?
항상 감사드립니다.