커뮤니티
만기롤오버
2013-05-20 14:27:14
269
글번호 63371
안녕하세요. 아래와 같이 만기롤오버하는 식을 게시판에 나와있는 식과 동일하게
적용하였으나, 만기일 익일 제대로 작동하지 않네요. 오류 개선 부탁드려요.
3월 14일 만기일 진입하였고, 당일 청산하였습니다. 그런데 익일인 3월 15일
바로 매도 진입하지 않고, 시스템 조건에 의해 오후 1시 15분경에 진입하네요.
Var : Va1(0), Va2(0), Va3(0);
Va1 = Int(Date/100)-Int(Date/10000)*100;
Va2 = Date - Int(Date/100)*100;
Va3 = DayOfWeek(Date);
If Va1%3 == 0 And Va2 >= 8 And Va2 <= 14 And Va3 == 4 Then
{
Condition1 = true;
SetStopEndofday(143000);
}
Else {SetStopEndofday(0); Condition1 = false;}
//만기일 다음날 첫봉
if date != date[1] and Condition1 == false and Condition1[1] == true Then{
if IsExitName("StopEndofday",1) == true and MarketPosition(1) == 1 Then
buy();
if IsExitName("StopEndofday",1) == true and MarketPosition(1) == -1 Then
sell();
}
- 1. Rollover오류.jpg (0.07 MB)
답변 1
예스스탁 예스스탁 답변
2013-05-20 22:01:22
안녕하세요
예스스탁입니다.
수식에 참조데이터를 사용하시는것 같습니다.
식을 수정했습니다.
Var : Va1(0,data1), Va2(0,data1), Va3(0,data1),cond(false,data1);
Va1 = data1(Int(Date/100)-Int(Date/10000)*100);
Va2 = data1(Date - Int(Date/100)*100);
Va3 = data1(DayOfWeek(Date));
if sdate == 20130314 and stime == 120000 Then{
buy();
}
If Va1%3 == 0 And Va2 >= 8 And Va2 <= 14 And Va3 == 4 Then
{
Cond = true;
SetStopEndofday(143000);
}
Else {
SetStopEndofday(0);
Cond = false;
}
//만기일 다음날 첫봉
if data1(date != date[1] and Cond == false and Cond[1] == true) Then{
if IsExitName("StopEndofday",1) == true and MarketPosition(1) == 1 Then
buy("만기다음날매수");
if IsExitName("StopEndofday",1) == true and MarketPosition(1) == -1 Then
sell("만기다음날매도");
}
즐거운 하루되세요
> HI_chakanee 님이 쓴 글입니다.
> 제목 : 만기롤오버
> 안녕하세요. 아래와 같이 만기롤오버하는 식을 게시판에 나와있는 식과 동일하게
적용하였으나, 만기일 익일 제대로 작동하지 않네요. 오류 개선 부탁드려요.
3월 14일 만기일 진입하였고, 당일 청산하였습니다. 그런데 익일인 3월 15일
바로 매도 진입하지 않고, 시스템 조건에 의해 오후 1시 15분경에 진입하네요.
Var : Va1(0), Va2(0), Va3(0);
Va1 = Int(Date/100)-Int(Date/10000)*100;
Va2 = Date - Int(Date/100)*100;
Va3 = DayOfWeek(Date);
If Va1%3 == 0 And Va2 >= 8 And Va2 <= 14 And Va3 == 4 Then
{
Condition1 = true;
SetStopEndofday(143000);
}
Else {SetStopEndofday(0); Condition1 = false;}
//만기일 다음날 첫봉
if date != date[1] and Condition1 == false and Condition1[1] == true Then{
if IsExitName("StopEndofday",1) == true and MarketPosition(1) == 1 Then
buy();
if IsExitName("StopEndofday",1) == true and MarketPosition(1) == -1 Then
sell();
}