커뮤니티
함수변환 요청
2019-01-08 16:30:23
217
글번호 125077
안녕하세요?
함수요청드립니다.
아래는 하나대투에서 사용했던 시그널메이커로 작성된 스크립트로 해외선물 크루드오일 1분봉으로 작성된 로직입니다.
한국투자증권에서 사용할 수 있도록 함수변환 요청드립니다.
1. 써머타임 적용시
1-1. 22시 31분봉(22:30:00~22:30:59) == 해당봉이 양봉이면 22시 32분에 매수 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 추가매수
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 매수청산
1-2. 22시 31분봉(22:30:00~22:30:59) == 해당봉이 음봉이면 22시 32분에 매도 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 매도청산
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 추가매도
1-3. 강제청산: 익일 오전 3시 1분 시가봉
2. 써머타임 해제시
2-1. 23시 31분봉(22:30:00~22:30:59) == 해당봉이 양봉이면 23시 32분에 매수 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 추가매수
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 매수청산
2-2. 23시 31분봉(22:30:00~22:30:59) == 해당봉이 음봉이면 23시 32분에 매도 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 매도청산
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 추가매도
2-3. 강제청산: 익일 오전 4시 1분 시가봉
영업일 기준으로 당일 진입, 당일 청산입니다
-------------------------------------------------------------------------------------
Vars : st(0), et(0), vExTime(0), vEntryT(0);
V1 = Dayofweek((10000 * Year(D)) + (100 * 3) + 1);
If V1 = 0 Then Value2 = 8
Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜
V2 = Dayofweek((10000 * Year(D)) + (100 * 11) + 1);
If V2 = 0 Then Value4 = 1
Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜
If date > (10000 * Year(D)) + (100 * 3) + value2
And date < (10000 * Year(D)) + (100 * 11) + value4 Then
Begin
st = 070000; // 써머타임 적용 시, 장시작 시간
et = 060000; // 써머타임 적용 시, 장종료 시간
vEntryT = 223100;
vExTime = 030100;
End
Else
Begin
st = 080000; // 장 시작 시간
et = 070000; // 장 종료 시간
vEntryT = 233100;
vExTime = 040100;
End;
condition1 = (IntPortion(time/10000) > IntPortion(et/10000)
And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1];
/////////////////////////////////////////////////////////////////
Vars : SP(0);
SP = SignalPosition;
If TIME = vEntryT And SP = 0 Then
Begin
If C > O Then Buy("B", Atmarket)
Else Sell("S", Atmarket);
End;
If TIME[2] < TIME[1] And TIME[1] > TIME Then
Begin
If SP = 1 Then
Begin
IF C > O Then Buy("reB")
Else ExitLong("ExL");
End;
If SP = -1 Then
Begin
If C < O Then Sell("reS")
Else ExitShort("ExS");
End;
End;
SetStopEndofday(vExTime);
답변 1
예스스탁 예스스탁 답변
2019-01-10 10:38:20
안녕하세요
예스스탁입니다.
Vars : st(0), et(0), vExTime(0), vEntryT(0);
var : Year(0),V1(0),V2(0);
Year = Floor(sdate/10000);
V1 = Dayofweek((10000 * Year) + (100 * 3) + 1);
If V1 == 0 Then Value2 = 8;
Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜
V2 = Dayofweek((10000 * Year) + (100 * 11) + 1);
If V2 == 0 Then Value4 = 1;
Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜
If sdate > (10000 * Year) + (100 * 3) + value2
And sdate < (10000 * Year) + (100 * 11) + value4 Then
Begin
st = 070000; // 써머타임 적용 시, 장시작 시간
et = 060000; // 써머타임 적용 시, 장종료 시간
vEntryT = 223100;
vExTime = 030100;
End
Else
Begin
st = 080000; // 장 시작 시간
et = 070000; // 장 종료 시간
vEntryT = 233100;
vExTime = 040100;
End;
condition1 = (IntPortion(time/10000) > IntPortion(et/10000)
And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1];
/////////////////////////////////////////////////////////////////
Vars : SP(0);
SP = MarketPosition;
If sTIME == vEntryT And SP == 0 Then
Begin
If C > O Then Buy("B", Atmarket);
Else Sell("S", Atmarket);
End;
If sTime[2] < sTime[1] And sTime[1] > sTime Then
Begin
If SP == 1 Then
Begin
IF C > O Then Buy("reB");
Else ExitLong("ExL");
End;
If SP == -1 Then
Begin
If C < O Then Sell("reS");
Else ExitShort("ExS");
End;
End;
if sdate != sdate[1] Then
SetStopEndofday(vExTime);
if bdate != bdate[1] Then
SetStopEndofday(0);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수변환 요청
> 안녕하세요?
함수요청드립니다.
아래는 하나대투에서 사용했던 시그널메이커로 작성된 스크립트로 해외선물 크루드오일 1분봉으로 작성된 로직입니다.
한국투자증권에서 사용할 수 있도록 함수변환 요청드립니다.
1. 써머타임 적용시
1-1. 22시 31분봉(22:30:00~22:30:59) == 해당봉이 양봉이면 22시 32분에 매수 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 추가매수
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 매수청산
1-2. 22시 31분봉(22:30:00~22:30:59) == 해당봉이 음봉이면 22시 32분에 매도 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 매도청산
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 추가매도
1-3. 강제청산: 익일 오전 3시 1분 시가봉
2. 써머타임 해제시
2-1. 23시 31분봉(22:30:00~22:30:59) == 해당봉이 양봉이면 23시 32분에 매수 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 추가매수
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 매수청산
2-2. 23시 31분봉(22:30:00~22:30:59) == 해당봉이 음봉이면 23시 32분에 매도 진입
가. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 양봉이면 익봉 시가에 매도청산
나. 0시 0분봉(23:59:00~23:59:59) == 해당봉이 음봉이면 익봉 시가에 추가매도
2-3. 강제청산: 익일 오전 4시 1분 시가봉
영업일 기준으로 당일 진입, 당일 청산입니다
-------------------------------------------------------------------------------------
Vars : st(0), et(0), vExTime(0), vEntryT(0);
V1 = Dayofweek((10000 * Year(D)) + (100 * 3) + 1);
If V1 = 0 Then Value2 = 8
Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜
V2 = Dayofweek((10000 * Year(D)) + (100 * 11) + 1);
If V2 = 0 Then Value4 = 1
Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜
If date > (10000 * Year(D)) + (100 * 3) + value2
And date < (10000 * Year(D)) + (100 * 11) + value4 Then
Begin
st = 070000; // 써머타임 적용 시, 장시작 시간
et = 060000; // 써머타임 적용 시, 장종료 시간
vEntryT = 223100;
vExTime = 030100;
End
Else
Begin
st = 080000; // 장 시작 시간
et = 070000; // 장 종료 시간
vEntryT = 233100;
vExTime = 040100;
End;
condition1 = (IntPortion(time/10000) > IntPortion(et/10000)
And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1];
/////////////////////////////////////////////////////////////////
Vars : SP(0);
SP = SignalPosition;
If TIME = vEntryT And SP = 0 Then
Begin
If C > O Then Buy("B", Atmarket)
Else Sell("S", Atmarket);
End;
If TIME[2] < TIME[1] And TIME[1] > TIME Then
Begin
If SP = 1 Then
Begin
IF C > O Then Buy("reB")
Else ExitLong("ExL");
End;
If SP = -1 Then
Begin
If C < O Then Sell("reS")
Else ExitShort("ExS");
End;
End;
SetStopEndofday(vExTime);