시뮬레이션과 실전매매 차이

시뮬레이션과 실전매매 차이

담운 0 1,065 2018.09.01 14:59
아래식은 거래비용(수수료0.01%, 슬리피지 0.03pt)을 적용하고 양봉이면 매수하고 음봉이면 매도하는 식에 최대수익대비 하락청산을 포함시킨 것이다. 리포트 상으로는 환상적인 수익이 발생하지만, 현실적으로는 시뮬레이션처럼 매매가 되지 않는다. 아마 실전매매에서는 반대모양의 우하향하는 수익률 그래프가 그려질 것이다.

이 내용은 랭귀지 안에서 강제청산 함수를 이용하건, 시스템트레이딩 설정창에서 설정하건 모두 시뮬레이션과 실제매매의 차이가 발생한다.

 

1. 시스템식

//연결선물 5분봉 적용

input : entryCount(5);
var : count(0) ;

#진입회수 제한
Count = 0 ;
for Value1 = 0 to 10 {
      if EntryDate( Value1 ) == sdate then
            Count = Count + 1;
}

#양봉매수 음봉매도
if Count < entryCount then {
    if Close > Open Then  buy();
    if Close < Open Then  sell();
}

SetStopTrailing(0.01,0.01);

 

2. 시스템 수익곡선



차트상에서 매매된 결과를 보면 매수진입한 다음봉의 고가에서 한틱아래의 가격으로 청산하고, 매도진입한 다음봉의 저가에서 한틱위의 봉에서 청산한 것으로 신호가 발생한다. 이는 봉에 모든 틱데이타를 포함하지 않고 시, 고, 저, 종가의 데이타만 가지고 매매신호를 발생시키기 때문이다. 실제매매에서는 모든 틱데이타가 들어오므로 다음봉 고가에서 한틱아래의 가격으로 체결되는 것이 아니라 수익발생이후 한틱만 하락해도 청산하게 되므로 시뮬레이션과 실제매매는 전혀 다른 결과를 발생시킨다.


 

3. 해결 방법

1) 시뮬레이션을 위한 과거의 봉데이타에 모든 체결틱 데이타가 제공되지 않는한 최대수익대비하락(setstoptrailing)에서 실제매매와 시뮬레이션의 불일치는 피할 수 없다.  이 두가지의 갭을 줄이기 위해서는 설정에 사용되는 값을 평균적인 봉의 길이보다 크게 사용하는 방법과 청산방법을 '수익금액대비'로 설정하지 말고 '최고가격대비'로 설정하는 방법도 도움이 될 수 있다.

수익금액대비로 설정할 경우 매수진입금액이 200.00이고 최소수익금액이 1%, 수익금액대비를 1%로 셋팅할 경우 202.00으로 가격이 상승한 이후부터는 1틱만 하락해도 청산주문이 발생하게 된다. 바로 '수익금액대비'로 설정했기 때문이다.  '수익금액대비'를 '최고가격대비'와 자주 혼동하게 되는데 최고가격대비는 202.00이후의 최고가격*0.01 이지만,

'수익금액대비'는 (202.00이후의 최고가격-진입가격)*0.01 이므로 너무 작은 값을 사용할 경우 최소수익 이후에 한두틱만 하락해도 바로 청산하게 된다.

 

2) 최대수익대비하락에서 이와 같은 현상이 발생하는 이유는 자기봉의 고가와 저가(매수인경우는 고가, 매도인 경우는 저가)를 이용하기 때문이다. 따라서 아래 예제와 같이 자기봉의 고가와 저가를 포함하지 않는 trailingStop 로직을 사용하면 해결할 수 있는 문제이다.

 

#최고가격대비 Point Trailing Stop
//매수진입이후 전봉까지의 최고가격대비 0.7pt하락하면 매수청산
//매도진입이후 전봉까지의 초저가격대비 0.7pt상승하면 매도청산

input : TsValue(0.7);
var : posHigh(0), posLow(0);

If BarsSinceEntry() == 0 Then PosHigh = High;
If MarketPosition() == 1 Then {
 If High > PosHigh Then PosHigh = High;
 ExitLong("trailStop_EL", AtStop, PosHigh - TsValue);
}
If BarsSinceEntry() == 0 Then PosLow = Low;
If MarketPosition() == -1 Then {
 If Low < PosLow Then PosLow = Low;
 ExitShort("trailStop_ES", AtStop, PosLow + TsValue);
}

 

#최고가격대비 Percent Trailing Stop
//매수진입이후 전봉까지의 최고가격대비 0.7%하락하면 매수청산
//매도진입이후 전봉까지의 초저가격대비 0.7%상승하면 매도청산

input : TsValue(0.7);
var : posHigh(0), posLow(0);

If BarsSinceEntry() == 0 Then PosHigh = High;
If MarketPosition() == 1 Then {
 If High > PosHigh Then PosHigh = High;
 ExitLong("trailStop_EL%", AtStop, PosHigh - PosHigh*TsValue/100);
}
If BarsSinceEntry() == 0 Then PosLow = Low;
If MarketPosition() == -1 Then {
 If Low < PosLow Then PosLow = Low;
 ExitShort("trailStop_ES%", AtStop, PosLow + PosLow*TSvalue/100);
}

 

4. 함수도움말

함수 
SetStopTrailing ([drop price], [floor], [method], [trailing_method])
    - [drop price] : 수익감소 허용값, 이 값이 0이면 최대수익대비 하락 설정이 해지됩니다
    - [floor] : 최소 수익 값
    - [method] : 생략 가능, 기본값은 Percent
                    PercentStop : 수익 감소 허용 값과 최소 수익 값을 진입의 %(Percent)로 설정
                    PointStop : 수익 감소 허용 값과 최소 수익 값을 원(Point)으로 합니다
    - [trailing_method] : 생략 가능, 기본값은 0(수익금액대비)
                    0 : 수익 금액 대비, 진입 후 진입 가격과 최고가격과의 차에 의한 대비
                    1 : 최고 가격 대비, 진입 후 최고가격대비 하락 시에 청산
 
 
설명 
최대수익대비하락
현재의 수익이 최대 수익에서 지정된 값만큼 감소하였을 때 그 포지션을 청산합니다. 포지션의 수익이 상승하면 최대 수익은 현재의 포지션으로 설정됩니다. 이 거래는 손실의 제한이 아닌 아닌 수익감소를 제한하는 것입니다. 
 
참고 
SetStopTrailing(5, 2, PercentStop, 0) ☞ 포지션 진입 이후, 2% 수익이 나고 수익금액 대비 5%가 하락하면 청산 됩니다. [method]와 [trailing_method]는 생략 가능하고 기본값이 「Percent」와 「수익금액 대비」이므로 SetStopTrailing(5, 2) 같이 설정이 가능 합니다.
 


 

[출처-예스스탁]

Comments

번호 제목 글쓴이 날짜 조회
38 보조지표 TR은 없나요? 담운 2019.04.27 1132
37 체결수량과 체결강도의 활용 담운 2019.04.11 2156
36 단기매매(단타)에 있어 저가매수타이밍 잡기 담운 2019.04.11 1679
35 거래량으로 시세포착하기 - [#1. 고점과 바닥신호 포착하기] 담운 2019.04.11 1227
34 요약 담운 2018.10.01 1245
33 매수총잔량 vs 매도총잔량 담운 2018.10.01 1200
32 호가잔량 단순매매 담운 2018.10.01 1258
31 호가 잔량을 맹신하지 말라 담운 2018.10.01 1171
30 호가잔량 배우기 담운 2018.10.01 1209
29 호가 잔량을 이용한 선물 데이트레이딩 담운 2018.10.01 1582
28 매수와 매도잔량 비율 계산하라 담운 2018.10.01 1391
27 피봇 전략 담운 2018.09.30 1719
26 Naked 매매 전략 시나리오 담운 2018.09.30 1309
25 보조지표 편 - 1.추세지표. (2) cci 담운 2018.09.25 1891
24 CCI (Commodity Channel Index) 담운 2018.09.25 1343
23 박스권매매기법(볼린저밴드+CCI지표) 담운 2018.09.25 1273
22 '피봇'과 '디마크' 담운 2018.09.12 1303
21 수평선 보조지표에 대해서 담운 2018.09.12 1263
20 CCI(Commodity Channel Index) 담운 2018.09.11 1067
19 RSI(Relative Strength Index) 담운 2018.09.11 1303
18 스토캐스틱(Stochastics) 담운 2018.09.11 1506
17 피봇 포인트에 대한 이해 담운 2018.09.09 2355
16 피봇(Pivot)과 캔들 패턴의 활용 담운 2018.09.09 1487
15 cci와 rsi로 눌림목 매매하기 담운 2018.09.09 2080
14 분봉챠트를 이용한 단타 매매 방법 담운 2018.09.09 1377
13 스캘핑에 유용한 보조 지표 / 트레이딩 뷰 담운 2018.09.09 3350
12 저점매수기법, CCI를 활용하는 방법 담운 2018.09.09 1208
11 손용재-단타 담운 2018.09.09 1240
10 단기매매활용지표 체결강도(Volume Power, VP ) 담운 2018.09.09 1135
9 단기매매용 보조지표 스토캐스틱 담운 2018.09.09 1444
8 매매기법 담운 2018.09.02 1149
7 RSI 담운 2018.09.02 1042
6 MACD 담운 2018.09.02 1080
5 볼린저 밴드 담운 2018.09.02 1032
4 CCI 담운 2018.09.02 1168
3 추세를 따라가보자 담운 2018.09.02 1157
2 예스트레이더 지표값 변경 건 담운 2018.09.01 1176
열람중 시뮬레이션과 실전매매 차이 담운 2018.09.01 1066
Category
State
  • 현재 접속자 44 명
  • 오늘 방문자 178 명
  • 어제 방문자 121 명
  • 최대 방문자 608 명
  • 전체 방문자 172,171 명
  • 전체 게시물 145 개
  • 전체 댓글수 1 개
  • 전체 회원수 3 명
Facebook Twitter GooglePlus KakaoStory NaverBand