커뮤니티

주말 청산

프로필 이미지
gap
2018-11-02 00:28:02
176
글번호 123284
답변완료
안녕하세요. CME 거래소 종목을 대상으로 월요일부터 금요일까지 거래를 하되 주중에는 장 개시와 마감에 상관없이 포지션 거래를 하다가 주말인 금요일에는 장이 마감되는 시간(한국시간으로 토요일 새벽 5시 이후)에 강제청산을 하는 방식을 취하고 싶습니다. 현재 로직은 오후 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-02 14:57:36

안녕하세요 예스스탁입니다. Inputs: SSTIME(200000), EETIME(050000), XXTIME(050000); 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; #토요일 5시에만 청산 If DayOfWeek(sdate) == 6 and ((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; 즐거운 하루되세요 > gap 님이 쓴 글입니다. > 제목 : 주말 청산 > 안녕하세요. CME 거래소 종목을 대상으로 월요일부터 금요일까지 거래를 하되 주중에는 장 개시와 마감에 상관없이 포지션 거래를 하다가 주말인 금요일에는 장이 마감되는 시간(한국시간으로 토요일 새벽 5시 이후)에 강제청산을 하는 방식을 취하고 싶습니다. 현재 로직은 오후 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;