안녕하세요
지표 작성 중에 그리고 백테스팅 시에 트레일링 스탑에 관해 궁금한 사항 여쭤봅니다.
30 포인트 올랐다가 10포인트 빠지면 트레일링 스탑, 타겟 프로핏은 50포인트라고 가정해볼게요. 해당 트레일링 스탑은 봉 완성이 아니라 조건 만족 즉시 발동이라고 가정해볼게요.
매수 시그널이 발생해서 나스닥 만포인트에 매수 포지션을 들어갔다치고, 다음 봉에 10070까지 올라가서 양봉 마감했을 경우, 백테스팅 시에 타겟 프로핏을 만족했고 뜨는데, 실제로는 위아래 변동성이 워낙커서 트레일링 스탑으로 마감 할 때가 많아 보입니다.그럼에도 불구하고 프로핏 타겟 만족이라고 뜨더라고요.
즉, 백테스팅이 정확하지 않다는건데요, 이 문제를 해결하기 위해서는 어떻게해야하나요?
간단하게 위의 전략이 1시간 봉 기준으로 작동한다면, 세부적인 차트(1분봉)에서 해당 전략이 작동하게 하면 해결 될 것같은데, 도움 좀 부탁드립니다.
답변 1
예스스탁
예스스탁 답변
2021-03-09 18:15:37
안녕하세요
예스스탁입니다.
차트의 과거봉은 시고저종만 있습니다.내부에 모든 틱이 없어 실제 봉의 움직임을 알수 없어
과거 데이타에 대한 움직임에 대한 가설을 만들고 해당 가설로 움직인것으로 보고 과거신호를 발생하게 됩니다.
해당부분에 대해서는 예스랭귀지 도움말에서 예스랭귀지 활용 --> 과거데이타 움직임 가설을 참고하시기 바랍니다.
과거봉 내부의 모든 움직임을 알수 없어
시뮬레이션시 트레일링스탑은 실전매매와 시뮬레이션결과가 괴리가 발생할 수 있습니다.
이런 이유로 아래와 같이 트레일링스탑을 풀어서 작성해서 수익은 완성봉기준으로 판단하고
다음봉에서 일정폭이상 감소를 체크해서 신호가 발생하게 많이 작성해서 사용합니다.
#10% 수익이후 20% 수익 감소하면 청산
input : UPrate(10),Dnrate(20);
if MarketPosition == 1 Then{
var1 = highest(H,BarsSinceEntry);
if var1 >= EntryPrice*(1+UPrate/100) then
exitlong("Btr1",AtStop,var1-(var1-EntryPrice)*(Dnrate/100));
}
if MarketPosition == -1 Then{
var2 = Lowest(L,BarsSinceEntry);
if var2 <= EntryPrice*(1-UPrate/100) then
ExitShort("Str1",AtStop,var2+(EntryPrice-var2)*(Dnrate/100));
}
# 5포인트 수익이후에 최고가격대비 2포인트 하락하면 청산
input : UPpoint(5),Dnpoint(2);
if MarketPosition == 1 Then{
var1 = highest(H,BarsSinceEntry);
if var1 >= EntryPrice+UPpoint then
exitlong("Btr2",AtStop,var1-Dnpoint);
}
if MarketPosition == -1 Then{
var2 = Lowest(L,BarsSinceEntry);
if var2 <= EntryPrice-UPpoint then
ExitShort("Str2",AtStop,var2+Dnpoint);
}
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 트레일링 스탑에 관해
> 안녕하세요
지표 작성 중에 그리고 백테스팅 시에 트레일링 스탑에 관해 궁금한 사항 여쭤봅니다.
30 포인트 올랐다가 10포인트 빠지면 트레일링 스탑, 타겟 프로핏은 50포인트라고 가정해볼게요. 해당 트레일링 스탑은 봉 완성이 아니라 조건 만족 즉시 발동이라고 가정해볼게요.
매수 시그널이 발생해서 나스닥 만포인트에 매수 포지션을 들어갔다치고, 다음 봉에 10070까지 올라가서 양봉 마감했을 경우, 백테스팅 시에 타겟 프로핏을 만족했고 뜨는데, 실제로는 위아래 변동성이 워낙커서 트레일링 스탑으로 마감 할 때가 많아 보입니다.그럼에도 불구하고 프로핏 타겟 만족이라고 뜨더라고요.
즉, 백테스팅이 정확하지 않다는건데요, 이 문제를 해결하기 위해서는 어떻게해야하나요?
간단하게 위의 전략이 1시간 봉 기준으로 작동한다면, 세부적인 차트(1분봉)에서 해당 전략이 작동하게 하면 해결 될 것같은데, 도움 좀 부탁드립니다.