커뮤니티
진입 청산
2018-11-09 09:39:10
155
글번호 123491
안녕하세요.
CME 거래소 종목을 대상으로 월요일부터 금요일까지 거래를 하되
오전 8시부터 익일 오전 5시까지만 진입을 허용하고
오전 5시 14분 이전까지 보유 포지션을 모두 정리하는 데이 트레이딩 전략을 원합니다.
현재 로직은 오후 8시부터 익일 오전 5시까지 거래하되 5시 15분 이전에 포지션을 정리하는 방식입니다.
아래 로직을 바탕으로 수정을 해주시면 감사하겠습니다.
Inputs: SSTIME(200000), EETIME(050000), XXTIME(051430);
Var: MP(0);
MP = MarketPosition;
//--------- 써머타임 체크 로직 ---------//
Vars: ST(0), ET(0), Year(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];
//------- 매매 시간대 -------//
Var: TimeCond(False);
If (sDate != sDate[1] and sTime >= SSTIME) or (sDate == sDate[1] and sTime >= SSTIME and sTime[1] < SSTIME) Then
Begin
TimeCond = True;
End;
If (sDate != sDate[1] and sTime >= EETIME) or (sDate == sDate[1] and sTime >= EETIME and sTime[1] < EETIME) Then
Begin
TimeCond = False;
End;
If (sDate != sDate[1] and sTime >= XXTIME) or (sDate == sDate[1] and sTime >= XXTIME and sTime[1] < XXTIME) Then
Begin
If MP == 1 Then ExitLong();
If MP == -1 Then ExitShort();
End;
//--------- 진입 로직 ---------//
If TimeCond Then
Begin
~~~~~ 중략 ~~~~~
End;
답변 1
예스스탁 예스스탁 답변
2018-11-09 14:58:04
안녕하세요
예스스탁입니다.
수식이 썸머타임과 아닐대로 시간이 구분되어 있어
외부변수는 삭제했습니다.
수식에 ST,ET,XT에 시간 시간지정해 주시면 됩니다.
Var: MP(0);
MP = MarketPosition;
//--------- 써머타임 체크 로직 ---------//
Vars: ST(0), ET(0), Year(0),XT(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 = 040000; // 진입종료
XT = 041400; // 청산
End
Else #썸머타임이 아닐때
Begin
ST = 080000; // 진입시작
ET = 050000; // 진입종료
XT = 051400; // 청산
End;
CONDITION1 = ( IntPortion(Time / 10000) > IntPortion(ET / 10000) And IntPortion(Time[1] / 10000) <= IntPortion(ET / 10000) ) Or ST <> ST[1];
//------- 매매 시간대 -------//
Var: TimeCond(False);
If (sDate != sDate[1] and sTime >= ST) or (sDate == sDate[1] and sTime >= ST and sTime[1] < ST) Then
Begin
TimeCond = True;
End;
If (sDate != sDate[1] and sTime >= ET) or (sDate == sDate[1] and sTime >= ET and sTime[1] < ET) Then
Begin
TimeCond = False;
End;
If (sDate != sDate[1] and sTime >= XT) or (sDate == sDate[1] and sTime >= XT and sTime[1] < XT) Then
Begin
If MP == 1 Then ExitLong();
If MP == -1 Then ExitShort();
End;
//--------- 진입 로직 ---------//
If TimeCond and DayOfWeek(bdate) >= 1 and DayOfWeek(bdate) <= 5 Then
Begin
~~~~~ 중략 ~~~~~
End;
즐거운 하루되세요
> gap 님이 쓴 글입니다.
> 제목 : 진입 청산
> 안녕하세요.
CME 거래소 종목을 대상으로 월요일부터 금요일까지 거래를 하되
오전 8시부터 익일 오전 5시까지만 진입을 허용하고
오전 5시 14분 이전까지 보유 포지션을 모두 정리하는 데이 트레이딩 전략을 원합니다.
현재 로직은 오후 8시부터 익일 오전 5시까지 거래하되 5시 15분 이전에 포지션을 정리하는 방식입니다.
아래 로직을 바탕으로 수정을 해주시면 감사하겠습니다.
Inputs: SSTIME(200000), EETIME(050000), XXTIME(051430);
Var: MP(0);
MP = MarketPosition;
//--------- 써머타임 체크 로직 ---------//
Vars: ST(0), ET(0), Year(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];
//------- 매매 시간대 -------//
Var: TimeCond(False);
If (sDate != sDate[1] and sTime >= SSTIME) or (sDate == sDate[1] and sTime >= SSTIME and sTime[1] < SSTIME) Then
Begin
TimeCond = True;
End;
If (sDate != sDate[1] and sTime >= EETIME) or (sDate == sDate[1] and sTime >= EETIME and sTime[1] < EETIME) Then
Begin
TimeCond = False;
End;
If (sDate != sDate[1] and sTime >= XXTIME) or (sDate == sDate[1] and sTime >= XXTIME and sTime[1] < XXTIME) Then
Begin
If MP == 1 Then ExitLong();
If MP == -1 Then ExitShort();
End;
//--------- 진입 로직 ---------//
If TimeCond Then
Begin
~~~~~ 중략 ~~~~~
End;