스트래티지 프로퍼티

각각의 파인 스트래티지는 그 행동을 결정하는 여러 가지 프로퍼티를 갖고 있습니다:

  1. 이니셜 캐피털
  2. 베이스 커런시
  3. 오더 사이즈
  4. 피라미딩
  5. 미션
  6. 리밋 오더 프라이스 인증
  7. 슬리피지
  8. 마진
  9. 재계산 

이러한 프로퍼티들은 프로퍼티탭의 스트래티지 세팅에 나와 있습니다:


스트래티지 프로퍼티에 지정된 각 파라미터는 해당 파인 스크립트안에서 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)

프로퍼티 메뉴의 인풋 파라미터를 하나씩 들여다 보겠습니다:

1 - 이니셜 캐피털 (파라미터: initial_capital) 은 트레이드하고자 하는 스트래티지에 대해 쓸 수 있는 초기 자금을 베이스 커런시 에 정의된 커런시로 보여줍니다. 디폴트로, 이 밸류는 100,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_typecommission_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) 포지션 유지에 필요한 마진. 충분한 펀드가 없으면 마진콜이 일어나게 되어 기존 포지션 유지에 충분한 펀드가 될 때까지 억지로 모든 포지션을 마켓 오더로 클로즈합니다.

9 - 재계산 옵션은 스트래티지를 얼마나 자주 다시 셈할지를 정합니다. 디폴트로, 각 바의 클로즈마다 스트래티지를 다시 셈합니다. 하지만 아래 옵션을 써서도 셈을 다시할 수 있습니다:

  • 오더가 체결된 뒤 (파라미터: calc_on_order_fills) - 오더 체결뒤 곧바로 한 번 더 인트라바 오더 셈을 허용합니다. 이 엑스트라 셈은 히스토리 및 리얼타임 바 둘다에 일어납니다.
  • 매 틱마다 (파라미터: calc_on_every_tick). 디폴트로, 스트래티지는 리얼타임 바의 클로즈에서만 셈을 합니다. 이 파라미터를 쓰면 스터디에서와 같이 리얼타임 바가 업데이트될 때마다 스트래티지를 셈하도록 합니다. 차트 리프레쉬를 하면 틱 데이터가 사라지므로 이 옵션을 쓰는 스트래티지는 리페인트이 일어납니다. 이 파라미터는 히스토리 바에 대해서는 스트래티지에 영향을 주지 않습니다. 그리고 이 피처를 쓰는 스트래티지는 히스토리 바에 대해서는 실제와 다른 결과를 보여주는데, 이는 틱데이터가 없기 때문입니다.