안녕하세요!
시스템 로직에 trailingstop 관련 문의드립니다.
trailingstop으로 시스템 시뮬레이션후, 실제 시스템 적용하여 운용하다 보면,
실제 거래결과와 시스템 적용결과값과 다르게 나오는 경우가 발생하는데,
이를 해결할려면 어찌해야 하는지요.
예를 들어, 5분봉 시스템에서 조건만족시 청산기준적용으로 셋팅하고 trailingstop값이
0.5pt 짧은 수익 후 trailingstop 로직과 큰 수익(2pt) 수익 후 trailingstop로직이
함께 적용되어 있으면, 실제 거래에서는 0.5pt후 청산으로 거래되는데, 장 끝나고,
재접속하여서 보면 큰 수익(2pt)후 청산된 것으로 시스템리포트가 나오는 형태의
경우가 발생하네요.
답변 1
예스스탁
예스스탁 답변
2021-01-26 14:44:07
안녕하세요
예스스탁입니다.
1
trailingstop은 실시간 봉에서는
봉하나의 움직임을 추적해서 청산신호를 발생하지만
과거봉에서 시뮬레이션이 될 때에는 하나의 봉에 모든 틱이 들어 있는 것이 아니고
봉에 시고저종가만 있기 때문에 그 내부 움직임을 알수 없어
내부적으로 지정한 가설대로 움직인것으로 보고 신호가 발생합니다.
예스랭귀지 도움말에서 예스랭귀지 활용 --> 과거데이타 움직임가설 부분을 참고하시기 바랍니다.
2
setstoptrailing함수로는 해당 해당 현상을 수정할 방법이 없습니다.
setstoptrailing을 풀어서 완성봉 기준으로 수익을 판단하고
다음봉 미완성시에 수익이 일정폭이상 감소할 때 청산이 되게 구현하는 방법뿐이 없습니다.
#수익이 0.5~2.0 사이는 0.1포인트 감소시 청산
#수익이 2.0 이상은 0.2포인트 감소시 청산
var : hh(0),ll(0);
if MarketPosition == 1 Then
{
hh = Highest(H,BarsSinceEntry);
if hh >= EntryPrice+0.5 and hh < EntryPrice+2.0 Then
ExitLong("bx1",AtStop,hh-0.1);
if hh >= EntryPrice+2.0 Then
ExitLong("bx2",AtStop,hh-0.2);
}
if MarketPosition == -1 Then
{
ll = lowest(L,BarsSinceEntry);
if ll <= EntryPrice-0.5 and ll > EntryPrice-2.0 Then
ExitShort("sx1",AtStop,ll+0.1);
if ll <= EntryPrice-2.0 Then
ExitShort("sx2",AtStop,ll+0.2);
}
즐거운 하루되세요
> 태산정복 님이 쓴 글입니다.
> 제목 : trailingstop 수식함수 관련 문의
> 안녕하세요!
시스템 로직에 trailingstop 관련 문의드립니다.
trailingstop으로 시스템 시뮬레이션후, 실제 시스템 적용하여 운용하다 보면,
실제 거래결과와 시스템 적용결과값과 다르게 나오는 경우가 발생하는데,
이를 해결할려면 어찌해야 하는지요.
예를 들어, 5분봉 시스템에서 조건만족시 청산기준적용으로 셋팅하고 trailingstop값이
0.5pt 짧은 수익 후 trailingstop 로직과 큰 수익(2pt) 수익 후 trailingstop로직이
함께 적용되어 있으면, 실제 거래에서는 0.5pt후 청산으로 거래되는데, 장 끝나고,
재접속하여서 보면 큰 수익(2pt)후 청산된 것으로 시스템리포트가 나오는 형태의
경우가 발생하네요.