커뮤니티
거래시간
2018-08-01 03:39:37
146
글번호 121045
안녕하세요.
미국 CME 거래소 종목을 매매하기 위한 시간대 수식을 아래와 같이 가지고 있으나 시뮬레이션 차트 상에서는 자정부터 진입해서 당일 새벽 5시 15분 안에 청산되는 것으로 확인됩니다.
원하는 거래시간대는 당일 저녁 8시부터 익일 오전 5시까지 진입하고 05시 15분 이전에 강제청산하고자 합니다.
아래 수식에서 잘못된 점이 있는지 확인 부탁드립니다.
Inputs: SSTIME(200000), EETIME(050000);
Vars: ST(0), ET(0), Year(0), TimeCond(False), MP(0);
Year = Floor(sDate / 10000);
Var18 = DayofWeek( (10000 * Year) + (100 * 3) + 1 );
If Var18 = 0 Then Value98 = 8;
Else Value98 = 15 - Var18; // 3월 두번째 일요일 날짜
Var20 = DayofWeek( (10000 * Year) + (100 * 11) + 1 );
If Var20 = 0 Then Value99 = 1;
Else Value99 = 8 - Var20; // 11월 첫번째 일요일 날짜
If sDate > (10000 * Year) + (100 * 3) + Value98 And sDate < ( 10000 * Year) + (100 * 11) + Value99 Then
Begin
ST = 070000; // 써머타임 적용 시, 장 시작 시간
ET = 060000; // 써머타임 적용 시, 장 종료 시간
End
Else
Begin
ST = 080000; // 장 시작 시간
ET = 070000; // 장 종료 시간
End;
CONDITION1 = ( IntPortion(Time / 10000) > IntPortion(ET / 10000) And IntPortion(Time[1] / 10000) <= IntPortion(ET / 10000) ) Or ST <> ST[1];
If EETIME <= SSTIME Then
Begin
If SSTIME < TIME Or TIME < EETIME Then TimeCond = True;
Else TimeCond = False;
End
Else
Begin
If SSTIME < TIME And TIME < EETIME Then TimeCond = True;
Else TimeCond = False;
End;
//--------- 진입 로직 ---------//
If TimeCond Then
Begin
End;
If (MP <> 0) then SetStopEndofday(051430);
답변 1
예스스탁 예스스탁 답변
2018-08-01 14:22:17
안녕하세요
예스스탁입니다.
1
예스랭귀지에서 두값이 같다는 표현은 A == B 입니다.
올려주신 수식에 If Var18 = 0 Then 와 같이 작성된 부분이 있습니다.
변수에 값할당은 =
같다라는 표현은 == 입니다.
2
지표로 확인하시기 바랍니다.
지표값이 1이 나오는 구간이 TimeCond가 true인 구간입니다.
Inputs: SSTIME(200000), EETIME(050000),XXTIME(051500);
Vars: ST(0), ET(0), Year(0), TimeCond(False), MP(0);
Year = Floor(sDate / 10000);
Var18 = DayofWeek( (10000 * Year) + (100 * 3) + 1 );
If Var18 == 0 Then
Value98 = 8;
Else
Value98 = 15 - Var18; // 3월 두번째 일요일 날짜
Var20 = DayofWeek( (10000 * Year) + (100 * 11) + 1 );
If Var20 == 0 Then
Value99 = 1;
Else
Value99 = 8 - Var20; // 11월 첫번째 일요일 날짜
If sDate > (10000 * Year) + (100 * 3) + Value98 And sDate < ( 10000 * Year) + (100 * 11) + Value99 Then
Begin
ST = 070000; // 써머타임 적용 시, 장 시작 시간
ET = 060000; // 써머타임 적용 시, 장 종료 시간
End
Else
Begin
ST = 080000; // 장 시작 시간
ET = 070000; // 장 종료 시간
End;
CONDITION1 = ( IntPortion(Time / 10000) > IntPortion(ET / 10000) And IntPortion(Time[1] / 10000) <= IntPortion(ET / 10000) ) Or ST <> ST[1];
if (sdate != sdate[1] and stime >= SSTIME) or
(sdate == sdate[1] and stime >= SSTIME and stime[1] < SSTIME) Then
TimeCond = true;
if (sdate != sdate[1] and stime >= EETIME) or
(sdate == sdate[1] and stime >= EETIME and stime[1] < EETIME) Then
TimeCond = false;
/*
if (sdate != sdate[1] and stime >= XXTIME) or
(sdate == sdate[1] and stime >= XXTIME and stime[1] < XXTIME) Then
{
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}*/
plot1(iff(TimeCond,1,0));
3
Inputs: SSTIME(200000), EETIME(050000),XXTIME(051500);
Vars: ST(0), ET(0), Year(0), TimeCond(False), MP(0);
Year = Floor(sDate / 10000);
Var18 = DayofWeek( (10000 * Year) + (100 * 3) + 1 );
If Var18 == 0 Then
Value98 = 8;
Else
Value98 = 15 - Var18; // 3월 두번째 일요일 날짜
Var20 = DayofWeek( (10000 * Year) + (100 * 11) + 1 );
If Var20 == 0 Then
Value99 = 1;
Else
Value99 = 8 - Var20; // 11월 첫번째 일요일 날짜
If sDate > (10000 * Year) + (100 * 3) + Value98 And sDate < ( 10000 * Year) + (100 * 11) + Value99 Then
Begin
ST = 070000; // 써머타임 적용 시, 장 시작 시간
ET = 060000; // 써머타임 적용 시, 장 종료 시간
End
Else
Begin
ST = 080000; // 장 시작 시간
ET = 070000; // 장 종료 시간
End;
CONDITION1 = ( IntPortion(Time / 10000) > IntPortion(ET / 10000) And IntPortion(Time[1] / 10000) <= IntPortion(ET / 10000) ) Or ST <> ST[1];
if (sdate != sdate[1] and stime >= SSTIME) or
(sdate == sdate[1] and stime >= SSTIME and stime[1] < SSTIME) Then
TimeCond = true;
if (sdate != sdate[1] and stime >= EETIME) or
(sdate == sdate[1] and stime >= EETIME and stime[1] < EETIME) Then
TimeCond = false;
if (sdate != sdate[1] and stime >= XXTIME) or
(sdate == sdate[1] and stime >= XXTIME and stime[1] < XXTIME) Then
{
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
If (MP <> 0) then SetStopEndofday(051430);
즐거운 하루되세요
> gap 님이 쓴 글입니다.
> 제목 : 거래시간
> 안녕하세요.
미국 CME 거래소 종목을 매매하기 위한 시간대 수식을 아래와 같이 가지고 있으나 시뮬레이션 차트 상에서는 자정부터 진입해서 당일 새벽 5시 15분 안에 청산되는 것으로 확인됩니다.
원하는 거래시간대는 당일 저녁 8시부터 익일 오전 5시까지 진입하고 05시 15분 이전에 강제청산하고자 합니다.
아래 수식에서 잘못된 점이 있는지 확인 부탁드립니다.
Inputs: SSTIME(200000), EETIME(050000);
Vars: ST(0), ET(0), Year(0), TimeCond(False), MP(0);
Year = Floor(sDate / 10000);
Var18 = DayofWeek( (10000 * Year) + (100 * 3) + 1 );
If Var18 = 0 Then Value98 = 8;
Else Value98 = 15 - Var18; // 3월 두번째 일요일 날짜
Var20 = DayofWeek( (10000 * Year) + (100 * 11) + 1 );
If Var20 = 0 Then Value99 = 1;
Else Value99 = 8 - Var20; // 11월 첫번째 일요일 날짜
If sDate > (10000 * Year) + (100 * 3) + Value98 And sDate < ( 10000 * Year) + (100 * 11) + Value99 Then
Begin
ST = 070000; // 써머타임 적용 시, 장 시작 시간
ET = 060000; // 써머타임 적용 시, 장 종료 시간
End
Else
Begin
ST = 080000; // 장 시작 시간
ET = 070000; // 장 종료 시간
End;
CONDITION1 = ( IntPortion(Time / 10000) > IntPortion(ET / 10000) And IntPortion(Time[1] / 10000) <= IntPortion(ET / 10000) ) Or ST <> ST[1];
If EETIME <= SSTIME Then
Begin
If SSTIME < TIME Or TIME < EETIME Then TimeCond = True;
Else TimeCond = False;
End
Else
Begin
If SSTIME < TIME And TIME < EETIME Then TimeCond = True;
Else TimeCond = False;
End;
//--------- 진입 로직 ---------//
If TimeCond Then
Begin
End;
If (MP <> 0) then SetStopEndofday(051430);
이전글