안녕하세요. 수식 문의드립니다.
미국 정규장 이전의 프리장동안만 매매를 하고 싶은데, 써머타임 적용 유무에 따라 시작/종료 시간에 변동을 주고 싶습니다.
커뮤니티에 있는 것들을 보면서 수식을 만들었는데, 이렇게 돌리면 종료시간에 청산을 하지 않고, 다음날까지 넘어가버립니다.
다음날까지 넘어가지 않고, 종가청산은 미국 정규시장 시작시간 전에 실행하고 싶습니다.
전략 예시는 시가 대비 50pt 변동시 그 방향으로 진입하는 간단한 사례를 넣어놓았습니다.
감사합니다.
///////////////////////////////////////////////////////////////////////////////////
#07:00 시가 대비 ±50pt 초과진행시 진입
#써머타임 (당일 07:00 ~ 22:30)
#비써머타임 (당일 08:00 ~ 23:30)
var : Summer(False);
var : S1(0),S2(0),E1(0),E2(0),cnt(0),ST(0),ET(0);
var : Tcond(false);
if sdate != sdate[1] Then
{
S1 = Floor(sdate/10000)*10000+0300;
E1 = Floor(sdate/10000)*10000+1100;
var1 = 0;
var2 = 0;
for cnt = 1 to 31
{
if DayOfWeek(S1+cnt) == 0 Then
{
var1 = var1+1;
if var1 == 2 then
{
S2 = S1+cnt;
}
}
if DayOfWeek(E1+cnt) == 0 and cnt <= 31 Then
{
var2 = var2+1;
if var2 == 1 then
{
E2 = E1+cnt;
}
}
}
Summer = sdate > S2 And sdate < E2;
if Summer == true then
{
ST = 70000;
ET = 223000;
}
Else
{
ST = 80000;
ET = 233000;
}
}
if (sdate != sdate[1] and stime >= ST) or
(sdate == sdate[1] and stime >= ST and stime[1] < ST) Then
Tcond = true;
if (sdate != sdate[1] and stime >= ET) or
(sdate == sdate[1] and stime >= ET and stime[1] < ET) Then
Tcond = False;
if sdate != sdate[1] Then
SetStopEndofday(ET);
if bdate != bdate[1] Then
SetStopEndofday(0);
if Tcond == true then
{
#진입로직
if H > DayOpen(0)+50 Then Buy("B",OnClose);
if L < DayOpen(0)-50 Then Sell("S",OnClose);
}
답변 1
예스스탁
예스스탁 답변
2024-08-01 14:57:39
안녕하세요
예스스탁입니다.
var : Tcond(False),ST(0),ET(0);
if bdate != bdate[1] Then
{
if sTime < 80000 then
{
ST = 70000;
ET = 223000;
}
Else
{
ST = 80000;
ET = 233000;
}
}
if ET > ST Then
SetStopEndofday(ET);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(ET);
}
if (sdate != sdate[1] and stime >= ST) or
(sdate == sdate[1] and stime >= ST and stime[1] < ST) Then
Tcond = true;
if (sdate != sdate[1] and stime >= ET) or
(sdate == sdate[1] and stime >= ET and stime[1] < ET) Then
Tcond = False;
if Tcond == true then
{
#진입로직
if H > DayOpen(0)+50 Then Buy("B",OnClose);
if L < DayOpen(0)-50 Then Sell("S",OnClose);
}
즐거운 하루되세요
> 카프리카 님이 쓴 글입니다.
> 제목 : 프리장 써머타임/비써머타임에 따른 거래시간 변동 적용
> 안녕하세요. 수식 문의드립니다.
미국 정규장 이전의 프리장동안만 매매를 하고 싶은데, 써머타임 적용 유무에 따라 시작/종료 시간에 변동을 주고 싶습니다.
커뮤니티에 있는 것들을 보면서 수식을 만들었는데, 이렇게 돌리면 종료시간에 청산을 하지 않고, 다음날까지 넘어가버립니다.
다음날까지 넘어가지 않고, 종가청산은 미국 정규시장 시작시간 전에 실행하고 싶습니다.
전략 예시는 시가 대비 50pt 변동시 그 방향으로 진입하는 간단한 사례를 넣어놓았습니다.
감사합니다.
///////////////////////////////////////////////////////////////////////////////////
#07:00 시가 대비 ±50pt 초과진행시 진입
#써머타임 (당일 07:00 ~ 22:30)
#비써머타임 (당일 08:00 ~ 23:30)
var : Summer(False);
var : S1(0),S2(0),E1(0),E2(0),cnt(0),ST(0),ET(0);
var : Tcond(false);
if sdate != sdate[1] Then
{
S1 = Floor(sdate/10000)*10000+0300;
E1 = Floor(sdate/10000)*10000+1100;
var1 = 0;
var2 = 0;
for cnt = 1 to 31
{
if DayOfWeek(S1+cnt) == 0 Then
{
var1 = var1+1;
if var1 == 2 then
{
S2 = S1+cnt;
}
}
if DayOfWeek(E1+cnt) == 0 and cnt <= 31 Then
{
var2 = var2+1;
if var2 == 1 then
{
E2 = E1+cnt;
}
}
}
Summer = sdate > S2 And sdate < E2;
if Summer == true then
{
ST = 70000;
ET = 223000;
}
Else
{
ST = 80000;
ET = 233000;
}
}
if (sdate != sdate[1] and stime >= ST) or
(sdate == sdate[1] and stime >= ST and stime[1] < ST) Then
Tcond = true;
if (sdate != sdate[1] and stime >= ET) or
(sdate == sdate[1] and stime >= ET and stime[1] < ET) Then
Tcond = False;
if sdate != sdate[1] Then
SetStopEndofday(ET);
if bdate != bdate[1] Then
SetStopEndofday(0);
if Tcond == true then
{
#진입로직
if H > DayOpen(0)+50 Then Buy("B",OnClose);
if L < DayOpen(0)-50 Then Sell("S",OnClose);
}