스트래티지 프로퍼티
각각의 파인 스트래티지는 그 행동을 결정하는 여러 가지 프로퍼티를 갖고 있습니다:
- 이니셜 캐피털
- 베이스 커런시
- 오더 사이즈
- 피라미딩
- 커미션
- 리밋 오더 프라이스 인증
- 슬리피지
- 마진
- 재계산
- 필 오더
프로퍼티탭의 스트래티지 세팅에 나와 있습니다:
스트래티지 프로퍼티에 지정된 각 파라미터는 해당 파인 스크립트안에서 strategy() 펑크션 콜의 아규먼트를 에디팅하여 바꿀 수 있습니다:
strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick, process_orders_on_close, use_bar_magnifier)
프로퍼티 메뉴의 인풋 파라미터를 하나씩 들여다 보겠습니다:
1 - 이니셜 캐피털 (파라미터: initial_capital) 은 트레이드하고자 하는 스트래티지에 대해 쓸 수 있는 초기 자금을 베이스 커런시 에 정의된 커런시로 보여줍니다. 디폴트로, 이 밸류는 1,000,000 입니다. 어떤 심볼 트레이드에는 이 밸류를 더 늘려야 할 수도 있습니다.
2 - 베이스 커런시 (파라미터: currency) 는 셈할 때 쓰게 될 커런시를 지정합니다. 스트래티지 테스터 탭 (프라핏, 로스, 드로다운 등) 에 보이는 결과들은 이 커런시로 표현됩니다. 쓸 수 있는 것들:
디폴트, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. 만약디폴트를 고르게 되면 스트래티지는 이 심볼에 대해 디폴트 커런시를 쓰게 되며 커런시 컨버전도 없게 됩니다.
3 - 오더 사이즈 (파라미터: default_qty_value, default_qty_type). 이 파라미터는 하나의 밸류와 셈 모드를 필요로 합니다. 셈이 된 밸류들은 해당 심볼에 대한 최소 거래 수량에 따른 제약을 받을 수 있습니다:
- 컨트랙트 (아규먼트: strategy.fixed) - 지정 수량의 컨트랙트/셰어/로트로 전략에 들어가게 됩니다.
- 통화 어마운트 (아규먼트: strategy.cash) - 스트래티지는 베이스 커런시에 지정된 어마운트로 들어가게 됩니다.
- 에쿼티 퍼센티지: (아규먼트: strategy.percent_of_equity) - 포지션 사이즈는 트레이드가 일어날 당시 쓸 수 있는 에쿼티의 퍼센티지로 셈이 됩니다.
4 - 피라미딩 (파라미터: pyramiding) 같은 방향으로 이어서 들어갈 수 있는 맥시멈 엔트리 갯수를 지정합니다. 피라미딩이 꺼져 있으면 스트래티지는 엔트리 컨디션이 만족되더라도 오로지 하나의 롱 또는 숏 포지션만 오픈할 수 있습니다. 피라미딩은 strategy.entry() 펑크션을 써서 들어간 엔트리만 영향을 미칩니다. strategy.order() 로 만들어진 오더에는 아무런 영향을 주지 않습니다.
5 - 커미션 (파라미터: commission_type, commission_value). 각각의 트레이드에 대해 내는 트레이딩 피입니다. 하나의 밸류 및 셈 모드를 넣어 주어야 합니다. 커미션은 엔트리 및 엑시트 둘 다에 적용되며, 퍼센티지를 쓰면 트랜잭션 밸류에 따라 커미션도 달라집니다:
- 트랜잭션 밸류의 퍼센티지 (아규먼트: strategy.commission.percent) - 각각의 오더마다 지정된 퍼센티지와 같은 커미션을 매깁니다.
- 컨트랙트당 커런시 (아규먼트: strategy.commission.cash_per_contract) - 각각의 컨트랙트마다 커미션을 매깁니다.
- 오더당 커런시 (아규먼트: strategy.commission.cash_per_order) - 각각의 오더마다 커미션을 매깁니다.
6 - 리밋 오더 프라이스 인증 (파라미터: backtest_fill_limits_assumption) 리밋 오더로 들어가는 포지션 조건을 좀 더 어렵게 만들어 줍니다. 디폴트로, 이 밸류는 0, 다시 말해, 리밋 오더는 오더에 나타낸 프라이스에 다다르자 마자 히스토리 데이터로 체결됩니다. 이 파라미터가 0 이 아니면 리밋 오더는 마켓 프라이스가 지정된 틱수만큼 리밋 오더 레벨을 넘어가기만 하면 그 바안에서 포지션에 들어갑니다.
7 - 슬리피지 (파라미터: slippage) 마켓 또는 스탑 오더의 체결 프라이스에 지정된 틱수를 더합니다. 스프레드를 설명할 때 쓰일 수 있습니다.
8 - 롱/숏 포지션에 대한 증거금(매개변수: margin_long, margin_short)은 각 거래에 대한 증거금, 즉 트레이더가 자금을 조달해야 하는 포지션의 비율을 지정합니다. 예를 들어, 매수 포지션의 증거금을 25%로 설정하면 트레이더는 개시된 거래의 25%를 충당할 수 있는 충분한 자금을 보유해야 하며 모든 거래에서 편일예탁잔고의 최대 400%까지 사용할 수 있습니다. 거래가 개시된 후 트레이더의 자금이 거래의 일부를 충당하기에 충분하지 않을 정도로 손실이 발생하면 마진콜이 발생하여 원래 포지션의 일부를 강제로 청산합니다. 이 기능에 대한 자세한 내용과 계산 방법은 이 도움말 센터 문서에서 확인할 수 있습니다.
9 - 재계산 옵션은 스트래티지를 얼마나 자주 다시 셈할지를 정합니다. 디폴트로, 각 바의 클로즈마다 스트래티지를 다시 셈합니다. 하지만 아래 옵션을 써서도 셈을 다시할 수 있습니다:
- 오더가 체결된 뒤 (파라미터: calc_on_order_fills) - 오더 체결뒤 곧바로 한 번 더 인트라바 오더 셈을 허용합니다. 이 엑스트라 셈은 히스토리 및 리얼타임 바 둘다에 일어납니다.
- 매 틱마다 (파라미터: calc_on_every_tick). 디폴트로, 스트래티지는 리얼타임 바의 클로즈에서만 셈을 합니다. 이 파라미터를 쓰면 스터디에서와 같이 리얼타임 바가 업데이트될 때마다 스트래티지를 셈하도록 합니다. 차트 리프레쉬를 하면 틱 데이터가 사라지므로 이 옵션을 쓰는 스트래티지는 리페인트가 일어납니다. 이 파라미터는 히스토리 바에 대해서는 스트래티지에 영향을 주지 않습니다. 그리고 이 피처를 쓰는 스트래티지는 히스토리 바에 대해서는 실제와 다른 결과를 보여주는데, 이는 틱데이터가 없기 때문입니다.
10 - 필 오더:
- 바 돋보기 사용(매개변수: use_bar_magnifier)을 사용하면 브로커 에뮬레이터가 히스토리 백테스팅 중에 더 낮은 시간대 데이터를 사용하여 보다 현실적인 결과를 얻을 수 있습니다. 바 돋보기 백테스팅 모드에 대한 자세한 내용은 해당 도움말 센터에서 확인할 수 있습니다.
- 바 마감 시(매개변수: process_orders_on_close ). 참이면 전략은 바가 닫히고 전략 계산이 완료된 후 주문을 실행하려는 추가 시도를 생성합니다. 주문이 시장가 주문인 경우 브로커 에뮬레이터는 다음 바가 열리기 전에 주문을 실행합니다. 주문이 가격 지정가인 경우 가격 조건이 충족될 때만 주문이 체결됩니다. 이 옵션은 주문이 생성되는 동시에 주문을 체결하려는 경우에 유용합니다. 기본적으로 주문은 현재 바의 종가에 생성되고 다음 바의 개장 시점에 체결되지만 이 설정을 켜면 주문이 생성된 것과 동일한 종가에 체결됩니다. 주문이 생성된 시점과 동일한 틱에 포지션을 입력하는 것은 실제 거래에서 불가능하므로 오해의 소지가 있을 수 있습니다.
- 표준 OHLC를 사용하면 (매개변수: fill_orders_on_standard_ohlc) 하이킨 아시 차트에서 실행되는 전략이 실제 OHLC 가격을 사용하여 주문을 체결하므로 보다 현실적인 결과를 얻을 수 있습니다. 기본적으로 전략 스크립트는 차트 유형에 관계없이 차트 가격을 사용하여 주문을 체결합니다. 하이킨 아시 차트의 경우 이 설정은 현실과 일치하지 않을 수 있는 합성 가격을 사용하지 못하도록 합니다. 예를 들어, 이 전략을 일일 NASDAQ:AAPL Heikin Ashi 차트에 적용하면 2023-09-25에 합성가 175.61달러로 주문이 체결됩니다. 그러나 "표준 OHLC 사용" 옵션을 활성화한 후에는 동일한 주문이 표준 차트 가격인 174.20 USD에 체결되었습니다.