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

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

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

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

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

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

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 引数) - ポジションサイズは、取引開始時に利用可能な資産に対する比率で計算されます。100%以上の値を指定することができます。

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 引数) は、ポジションを維持するために必要な証拠金を指定します。十分な資金がない場合には、マージンコールが発生し、既存のポジションを維持するのに十分な資金になるまで、ポジションの一部またはすべてが成行注文で強制的に決済されます。

9 - 「再計算」オプションは、ストラテジーを再計算する頻度を指定します。デフォルトでは、ストラテジーは各バーのクローズで計算されますが、以下のオプションを使って再計算することもできます:

  • 「注文が約定した後」(calc_on_order_fills 引数) - 注文が約定した直後に、バー内で注文の追加計算を行います。この追加計算は過去バーとリアルタイムバーの両方で行われます。
  • 「ティック毎」(calc_on_every_tick 引数) - デフォルトでは、ストラテジーはリアルタイムバーのクローズ時にのみ計算を行います。このパラメータを利用すると、インジケーターのように、リアルタイムバーの更新ごとに計算することができます。但し、チャートがリロードされるとティックデータは失われますので、このオプションを使用したストラテジーはリペイントが発生します。このパラメーターは、過去バーでのストラテジーの動作には影響しません。また過去バーにはティックデータが含まれていないため、この機能を使用したストラテジーは現実的な結果を表示しない事にもご注意ください。