커뮤니티

sdate 관련...

프로필 이미지
자마이카
2008-08-18 15:45:57
956
글번호 16714
답변완료
당일진입,당일청산하는 데이 시스템입니다. 하루 손실한도를 정해서 이를 초과하면 매매중단하며 이를 위해서 아래의 수식을 사용하고 있습니다. if date!=date[1] then stoptrade=0; profit=0; for count=0 to 10 { if entrydate(count)==sdate and exitdate(count)==sdate then profit=profit+positionprofit(count); } if profit<-(당일손절) then {exitlong("당일손절"); stoptrade=1;} 그런데 위 식에서 "exitdate(count)==sdate" 부분을 빼면 시뮬레이션 결과가 차이가 나고,그대로 두면 당일손절이 제대로 안되는 것 같습니다.(다만 그대로 둘 경우에도 청산결과 당일손실액을 넘어서면 추가진입은 막아줍니다.) 왜 그런지 이유를 (가능하면 자세히...너무 초보라 죄송)알려주시기 바랍니다. 항상 감사드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2008-08-19 14:11:16

안녕하세요? 예스스탁입니다. 문의하신 내용 답변드립니다. entrydate(0) 은 현재 진입해 있는 포지션의 날짜를 나타내고 entrydate(1)은 청산된 포지션중 가장 최근 진입했던 포지션의 날짜를 나타냅니다. exitdate(0)은 0값을 리턴하고 exitdate(1)은 가장 최근 청산된 포지션의 청산 날짜를 리턴합니다. 즉, 현재 포지션에 진입해 있다면 entrydate(1)과 exitdate(1)은 서로 다른 포지션의 청산과 진입 시간을 가져오게 됩니다.exitdate(1)이 entrydate(1)보다 앞선 날짜를 가져옵니다. 따라서 entrydate(count)==sdate and exitdate(count)==sdate 와 같이 쓸 경우 현재 포지션에 진입해 있다면 entrydate(count)==sdate 보다는 한번의 거래를 더 계산하게 되는 차이가 발생하기 때문에 시뮬레이션 결과도 차이가 발생하게 됩니다. 감사합니다. > 자마이카 님이 쓴 글입니다. > 제목 : sdate 관련... > 당일진입,당일청산하는 데이 시스템입니다. 하루 손실한도를 정해서 이를 초과하면 매매중단하며 이를 위해서 아래의 수식을 사용하고 있습니다. if date!=date[1] then stoptrade=0; profit=0; for count=0 to 10 { if entrydate(count)==sdate and exitdate(count)==sdate then profit=profit+positionprofit(count); } if profit<-(당일손절) then {exitlong("당일손절"); stoptrade=1;} 그런데 위 식에서 "exitdate(count)==sdate" 부분을 빼면 시뮬레이션 결과가 차이가 나고,그대로 두면 당일손절이 제대로 안되는 것 같습니다.(다만 그대로 둘 경우에도 청산결과 당일손실액을 넘어서면 추가진입은 막아줍니다.) 왜 그런지 이유를 (가능하면 자세히...너무 초보라 죄송)알려주시기 바랍니다. 항상 감사드립니다.