스트래티지 프로퍼티
각 파인 전략에는 그 동작을 결정하는 여러 속성이 있습니다:
- 초기 자본금
- 기본 통화
- 주문 규모
- 피라미딩
- 수수료
- 한도 주문 가격 검증
- 슬리피지
- 마진
- 재계산
- 주문 체결
이들 속성은 전략 설정의 속성 탭에서 확인할 수 있습니다:

전략 속성에 지정된 각 매개변수는 해당 파인 스크립트에서 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로 체결되었습니다.