바 돋보기로 좀 정확한 백테스트를 해 보십시오

May 30, 2022

프리미엄 어카운트 홀더는 이제 바 돋보기 옵션을 써서 스트래티지 백테스트를 할 때 좀 더 현실적인 주문 체결을 얻을 수 있습니다. 이 툴은 바 내부를 조사하여 좀 더 깊은 프라이스 무브먼트를 읽어 내어 훨씬 더 정확한 주문 체결을 하도록 해줍니다. 바 돋보기를 고르면 바 돋보기 모드가 브로커 이뮬레이터가 과거 바에 대해 오로지 OHLC 밸류만을 전제로 한 프라이스 무브먼트에 대한 가정을 대체합니다.

바 돋보기와 함께 쓰이는 인트라바 타임프레임은 차트 타임프레임에 따라 다이내믹하게 조절됩니다. 아래 테이블에 차트 타임프레임 크기에 따른 인트라바 타임프레임이 적혀 있습니다:

차트 타임프레임, T 쓰인 인트라바 타임프레임
1S < T < 30S 1S
30S <= T < 5 5S
5 <= T < 30 15S
30 <= T < 60 1
60 <= T < 240 5
240 <= T < D 15
D <= T < W 60
W <= T < 2W 120
T >= 2W D

테이블 1. 쓰이는 인트라바 타임프레임

아래 스트래티지 보기에 바 돋보기 옵션을 쓰지 않으면서 스탑 오더를 쓰는 스트래티지가 있습니다:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = false)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

브로커 이뮬레이터가 바 #10381 에 스탑 오더를 내고 stop = 157.0 조건이 만족되자마자 다음 바에서 157.0 에 오더가 체결됩니다. 브로커 이뮬레이터는 그 바 안에서 프라이스가 “클로즈” 에서 ” 로우”로 갔다가 그 다음 “하이” (엔트리 트리거) 로, 끝으로 “클로즈”로 간 것으로 가정합니다. 두어 개의 바 다음 (현재 타임프레임으로 보면 11날) 에, stop price = 156.0 으로 포지션을 청산하는 조건이 트리거 됩니다:

바 돋보기가 켜져 있을 때 (파라미터 use_bar_magnifier = true), 엑싯과 엔트리 프라이스는 바뀌지 않습니다; 하지만 포지션 엑싯이 엔트리가 일어났던 바로 그 바안에서 일어납니다:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = true)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

같은 심볼에 대해 더 낮은 타임프레임을 체크해 보면 (인트라바 테이블에 따라 60-분 차트) 그리고 바 10382 에 대응하는 타임 레인지를 찾아 보면 시간 타임프레임에서 157.0 에 다다라 엔트리를 트리거한 뒤, 프라이스가 156.0 아래로 내려가서 stop = 156.0 컨디션을 만족하게 됩니다:

바 돋보기가 온이면 브로커 이뮬레이터는 백테스팅할 때 낮은 타임프레임으로부터 프라이스 체인지를 읽어 같은 타임 피어리어드에 대해 스트래티지 포워드 태스팅하는 동안 일어나는 것과 비슷한 행동을 나타내게 됩니다.

아래에 리밋과 스탑 오더에 대해 좀 더 정밀한 체결을 얻기 위해 낮은 타임프레임을 쓰는 스트래티지 보기가 나와 있습니다:

//@version=5
strategy(
 title                  =   "Magnifier On",
 overlay                =   true, 
 calc_on_order_fills    =   true,
 calc_on_every_tick     =   true,
 precision              =   3, 
 default_qty_type       =   strategy.cash, 
 currency               =   currency.USD, 
 default_qty_value      =   1000, 
 initial_capital        =   1000,
 use_bar_magnifier      =   true)

trailPoints = input.int(150, "Trail Points (in ticks)")
trailOffset = input.int(100, "Trail Offset (in ticks)")
stopSize    = input.int(300, "Stop Offset (in ticks)")

longCondition = bar_index % 25 == 0 and not (strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index)

if (longCondition)
    strategy.entry("Long", strategy.long)

strategy.exit("Exit", loss = stopSize, trail_points = trailPoints, trail_offset = trailOffset)

바 돋보기 옵션이 온이면 스트래티지 결과는 리얼타임일 때의 결과에 더 가까워 집니다. 테스트 스트래티지의 프라핏은 온일 때 50% 더 안 좋아 스트래티지 자체가 문제가 있지만, 좀더 정확한 백테스팅 데이터를 얻기 위해 낮은 타임프레임 데이터를 쓰는 것이 얼마나 중요한 것인지를 보여줍니다.

바 돋보기 옵션은 스트래티지 “세팅/프로퍼티” 윈도우에서 해당 인풋을 토글하여 바꿀 수 있습니다:

옵션을 끈 뒤에는 스트래티지는 다이 올드 로직으로 다시 셈이 되어 스트래티지 행동에 대해 훨씬 덜 정확한 정보를 보여주게 됩니다:

새로운 파인 피처 정보를 받으려면 유저 매뉴얼의 릴리즈 노트에 관심을 가지도록 하십시오. 또한 파인코더즈 어카운트는 자신의 스쿼크 박스 텔리그램 채널, 트위터 어카운트, 그리고 “파인 스크립트™ Q&A” 퍼블릭 챗방으로 부터 트레이딩뷰에 대한 업데이트를 브로드캐스트합니다.

이번 개선 사항이 쓸모가 있기를 바라며 여러분의 피드백을 기다리고 있습니다. 당사 유저를 위해 트레이딩뷰를 만들고자 하며 여러분들의 목소리를 들려 주십시오.

Look first Then leap

트레이딩뷰는 여러분을 위해 만들어졌으므로 트레이딩뷰의 멋진 기능을 최대한 활용하세요