안녕하세요.
제가 삼성전자 연결선물을 대상으로 백테스트 중에 특정일에 청산이 안되고 다음날로
넘어가서 청산되는 현상을 발견했습니다.
로직상, 당일 장종료 전에 청산하게끔 되어있는데, 다른 만기일에는 다 잘 특정시간이 되면 청산이 잘 되는데 유독, '19.7.11날(만기일)에만 다음날로 넘어가서 손절로 처리가 되네요..
종료시간을 message로그로 확인을 했는데, 만기일날 분명히 15:20분 이전으로 확인했구요.
혹시 데이터상에 문제가 있거나 오류가 있을수가 있는지요?
신기한점은 아래 dif(400)값을 700등으로 변경하면 또 원하는시간에 청산이 된다는 점입니다...
---------------------------------------------------------------------------
if sTime == 종료시간-dif Then
{
ExitLong();
ExitShort();
}
답변 1
예스스탁
예스스탁 답변
2022-10-28 16:43:32
안녕하세요
예스스탁입니다.
1
올려주신 내용은 사용자분이 작성하신 수식내용을 검토해 보셔야 합니다.
랭귀지의 시간(stime)은 6자리(십만단위) 숫자입니다.
9시30분이면 93000, 15시면 150000와 같이 리턴됩니다.
150000에서 400을 차감하면 149600이 됩니다.
자동으로 시간개념으로 145600이 되는 것이 아닙니다.
작성하신 식에서 종료시간-dif가 19년7월11일에 어떤 값을 리턴하는지 확인하시기 바랍니다.
plot1(종료시간-dif);
2
if sTime == 종료시간-dif Then
현재 작성하신 식에서는 봉의 stime(시작시간)과 종료시간-dif값이 동일한 봉이 있어야 청산이 됩니다.
만약 동일한 봉이 없으면 신호가 발생하지 않습니다.
거래가 많이 없는 경우 지정한 시간의 봉이 없을 수 있으므로
일반적으로 sTime >= 종료시간-dif와 같이 조건을 주게 됩니다.
3
아래식 참고하시기 바랍니다.
종료시간을 만기일은 15시20분, 만기일이 아니면 15시35분으로 지정하고
종료시간 4분전에 청산하게 작성된 식입니다.
시간은 TimeToMinutes함수를 이용해서 0시 이후 경과한 분수로 환산해서 비교하게 됩니다.
var : month(0),nday(0),week(0),X(False),종료시간(0);
month = int(date/100)-int(date/10000)*100;
nday = date - int(date/100)*100;
Week = DayOfWeek(date);
if (nday >= 8 and nday <= 14 and week == 4) then
종료시간 = 152000;
Else
종료시간 = 153500;
if Bdate != Bdate[1] Then
Buy();
if TimeToMinutes(sTime) >= TimeToMinutes(종료시간)-4 Then
{
ExitLong();
ExitShort();
}
즐거운 하루되세요
> 건곤대 님이 쓴 글입니다.
> 제목 : 만기일 오류
> 안녕하세요.
제가 삼성전자 연결선물을 대상으로 백테스트 중에 특정일에 청산이 안되고 다음날로
넘어가서 청산되는 현상을 발견했습니다.
로직상, 당일 장종료 전에 청산하게끔 되어있는데, 다른 만기일에는 다 잘 특정시간이 되면 청산이 잘 되는데 유독, '19.7.11날(만기일)에만 다음날로 넘어가서 손절로 처리가 되네요..
종료시간을 message로그로 확인을 했는데, 만기일날 분명히 15:20분 이전으로 확인했구요.
혹시 데이터상에 문제가 있거나 오류가 있을수가 있는지요?
신기한점은 아래 dif(400)값을 700등으로 변경하면 또 원하는시간에 청산이 된다는 점입니다...
---------------------------------------------------------------------------
if sTime == 종료시간-dif Then
{
ExitLong();
ExitShort();
}