스트래티지 프로퍼티

각 파인 전략에는 그 동작을 결정하는 여러 속성이 있습니다:

  1. 초기 자본금
  2. 기본 통화
  3. 주문 규모
  4. 피라미딩
  5. 수수료
  6. 한도 주문 가격 검증
  7. 슬리피지
  8. 마진
  9. 재계산
  10. 주문 체결

이들 속성은 전략 설정의 속성 탭에서 확인할 수 있습니다:

전략 속성에 지정된 각 매개변수는 해당 파인 스크립트에서 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 - 재계산 옵션은 전략이 재계산되는 빈도를 지정합니다. 기본적으로 전략은 각 바(bar) 종가 시 재계산되지만, 아래 옵션을 사용하면 다음과 같이 재계산할 수도 있습니다:

  • 주문 체결 후 (매개변수: calc_on_order_fills) - 주문이 체결된 직후 추가적인 바 내 주문 계산을 수행할 수 있게 합니다. 이 추가 계산은 과거 바와 실시간 바 모두에서 발생합니다.
  • 매틱마다 (매개변수: calc_on_every_tick). 기본적으로 전략은 실시간 막대 종가 시점에만 계산합니다. 이 매개변수는 인디케이터처럼 실시간 막대가 업데이트될 때마다 전략이 계산하도록 합니다. 차트가 새로 고침될 때 틱 데이터가 손실되므로 이 옵션을 사용하는 전략은 리페인팅됩니다. 이 매개변수는 역사적 막대에서의 전략 동작에는 영향을 미치지 않습니다. 또한 이 기능을 사용하는 전략은 티크 데이터가 포함되지 않은 역사적 바에서는 현실적인 결과를 보여주지 못합니다.

10 - 주문 체결:

  • 바 돋보기 사용 (매개변수: use_bar_magnifier) - 역사적 백테스팅 시 브로커 에뮬레이터가 더 정밀한 낮은 타임프레임 가격을 사용하도록 지시하여 더 현실적인 결과를 얻습니다. 이 기능에 대한 자세한 내용은 도움말 센터에서 확인하세요.
  • 바 마감 시 (매개변수: process_orders_on_close). true로 설정 시, 전략은 바가 마감되고 전략 계산이 완료된 후 추가 주문 실행 시도를 생성합니다. 시장가 주문인 경우, 브로커 에뮬레이터는 다음 바의 개장 전에 이를 실행합니다. 가격 조건부 주문인 경우, 가격 조건이 충족될 때만 체결됩니다. 이 옵션은 주문 생성 시점에 즉시 실행을 원할 때 유용합니다: 기본적으로 주문은 현재 바의 종가 시점에 생성되고 다음 바의 시가 시점에 실행됩니다. 이 설정을 활성화하면 주문이 생성된 동일한 종가 시점에 실행됩니다. 단, 주문 생성 시점과 동일한 틱에서 포지션을 진입하는 것은 실제 거래에서는 불가능하므로 오해의 소지가 있을 수 있습니다.
  • 표준 OHLC 사용 (매개변수: fill_orders_on_standard_ohlc) 차트에서 실행되는 전략이 실제 OHLC 가격을 사용하여 주문을 체결하도록 강제하여 보다 현실적인 결과를 제공합니다. 기본적으로 전략 스크립트는 차트 유형에 관계없이 차트의 가격을 사용하여 주문을 체결합니다. 하이킨 아시 차트의 경우, 이 설정은 현실과 일치하지 않을 수 있는 합성 가격의 사용을 방지합니다. 예를 들어, 데일리 NASDAQ:AAPL 하이킨 아시 차트에 적용한 본 전략은 2023-09-25에 175.61 USD의 합성 가격으로 주문을 체결했습니다. 그러나 “표준 OHLC 사용” 옵션을 활성화한 후 동일한 주문은 표준 차트 가격인 174.20 USD로 체결되었습니다.