ストラテジーのプロパティ

それぞれのPineのストラテジーには、その動作を決定するいくつかのプロパティがあります:

  1. 初期資金
  2. 基準通貨
  3. 発注サイズ
  4. ピラミッディング
  5. 手数料
  6. 指値価格の厳密性
  7. スリッページ
  8. 証拠金
  9. 再計算
  10. 注文の約定

これらのパラメーターは、ストラテジーの設定画面の「プロパティ」タブで調整が可能です:


ストラテジーのプロパティで指定されている各パラメーターは、対応するPineスクリプトの 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)

それでは、プロパティの各入力項目とそれに対応するPine言語の引数を見てみましょう:

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 引数) は、同じ方向に連続してエントリーできる最大数を指定します。ピラミッディングが無効の場合、エントリー条件が満たされていても、ストラテジーは1つのロングポジションまたはショートポジションのみを開きます。ピラミッディングは 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 引数) - これが true の場合、バーが閉じてストラテジーの計算が完了した後、ストラテジーは注文実行に向け追加試行を行います。注文が成行注文の場合、ブローカーエミュレータは次のバーのオープンの前に注文を実行します。注文が価格に依存するものである場合、価格の条件が満たされた場合にのみ注文が成立します。このオプションは、注文の作成と同時に執行したい場合に便利です。デフォルトでは、現在のバーのクローズ時に注文が作成され、次のバーのオープンで執行されます。この設定をオンにすると、注文が作成された時と同じバーがクローズする時に注文が執行されます。実際の取引では、注文作成時と同じティックでポジションを建てることはできないため、誤解を招く可能性があることにもご注意ください。
  • 「標準のOHLC値で約定」 (fill_orders_on_standard_ohlc 引数) は、平均足チャート上でも現実のOHLC値を使って約定するようにストラテジーを強制するものです。ストラテジーのスクリプトにおいては、チャートの種類によらずチャート上に示されたデータを使って注文のシミュレーションを行うのがデフォルトになっています。つまり、デフォルトの状態でシミュレーションを実行すると合成された平均足の価格が使用されるので、現実と一致しないケースがあることになります。たとえば、このストラテジーをNASDAQ:AAPLの平均足の日足チャートに適用した場合、下図の最初の例では2023-09-25に合成価格の175.61米ドルで約定しています。しかし「標準のOHLC値で約定」オプションを有効にすると、その次の例に見られるとおり、同じ注文が標準チャート価格の174.20米ドルで約定しています。