Little Bird Trading

Pine Script:インジケーターとストラテジーの違い

4分で読めます · 更新日

TradingViewでは、インジケーターとストラテジーはPine Editor上では似て見えますが、役割は根本的に違います。一方はチャートに描くだけ。もう一方は売買のふりをします。この2つを混同することが、過去データでは見事に見えたスクリプトが実際の相場でまったく違う手応えになる最大の原因です。このガイドでは、その違いを具体的かつ正直に、結果を実際に左右する部分だけに絞って説明します。

違いを一行で

Pine scriptの一行目で、そのスクリプトの種類が決まります。indicator()で始まるスクリプトができるのは計算と描画だけで、ライン、色、ラベル、塗りつぶしを扱います。ポジション、約定価格、損益という概念はありません。strategy()で始まるスクリプトには注文シミュレーションのエンジンが加わります。strategy.entryやstrategy.exitなどの関数を呼び出せ、TradingViewはその注文を過去のバーに当てはめてストラテジーテスターのレポートを作ります。純利益、最大ドローダウン、勝率、プロフィットファクター、シミュレーション上のトレード一覧です。

つまり区別はこうです。インジケーターは状況を描写し、ストラテジーはその状況でいくら稼げたはずかを主張する。後者の主張は前者よりはるかに重いものです。注文をシミュレーションした瞬間に、その注文がいつ、いくらで約定したかについて、いくつもの前提を背負うことになるからです。

バックテストエンジンが黙って置いている前提

ストラテジーの損益曲線の信頼性は、その下にある約定の前提で決まります。損害の大半は4つのデフォルト設定から生じます。

  • バー確定時の評価。デフォルトでは、テスターはバーが確定した時点でロジックを評価します。条件がそのバー自身の高値、安値、終値を参照していると、過去の「約定」は、実際のトレードではバー確定後まで知り得なかった情報を使っている可能性があります。
  • 次のバーの始値での約定。シグナルで出した成行注文は、シミュレーション上は次のバーの始値で約定します。動きの速い寄り付きでは、その価格が実際の約定価格から数ティック、あるいは数ポイント離れていることがあります。
  • コストゼロ。strategy()の呼び出しで手数料とスリッページをゼロのままにすると、シミュレーション上のトレードはすべて無料になります。実際のトレードでは毎回手数料とスリッページがかかります。
  • サンプル数。テスターは、わずか12回のトレードから作った美しい曲線でも平然と表示します。12連勝は、エッジの衣装を着たノイズです。

計算例

あるストラテジーが、コストをゼロのままES先物で40回のトレードで+$4200を示したとします。往復手数料として約$5を加えます。個人向けの先物手数料はブローカーによって大きく違うので、自分の数字を使ってください。さらに片道1ティックのスリッページを加えます。ESの1ティックは0.25ポイントで$12.50に相当するので、往復1ティックずつで$25です。1トレードあたり約$30のコストになり、40回のトレードで約$1200、見出しの+$4200は~$3000近くまで下がります。しかもこれは控えめな見積もりです。エントリーが荒れた寄り付きに集中すれば、実際のスリッページは1ティックより大きくなり、差はさらに広がります。同じロジックのインジケーター版には、こうしたコストは一切現れません。インジケーターはそもそも約定を主張しないからです。本物のエッジと過剰に当てはめたエッジを見分ける方法は、過剰最適化されたトレードシステムの見抜き方を参照してください。

リペイントの本当の意味

「リペイント」という言葉は、後から見た値がリアルタイムで表示された値と違うスクリプト全般に使われがちですが、多くの場合は誤用です。正直な判定基準は一つの問いです。その判断は、同じ情報で、同じ瞬間に、リアルタイムで下せたか?バー確定時にだけ確定するシグナルは、確定まで待つよう求めているだけです。本当に誤解を招くのは、形成中のバー上に描かれたシグナルがバー確定時に動いてしまうケースや、上位足のデータを先読みで取得しているケースです。確定したバーでロジックを評価すれば、インジケーターを作る場合もストラテジーを作る場合も、バックテストと実際の体験が正直に一致します。

トレードプランとの関係

トレードプランは、事前に決めた固定の水準を渡すことで、リペイントの問題を意図的に避けています。毎日の水準、つまりES, SPY, NQとQQQの水準は前日の大引け後に計算され、取引セッション中は動きません。リペイントするものは何もありません。各水準は米東部時間9:30より前に決まり、そのまま動きません。それらのラインを描くMyLinedChartはインジケーターと同じように動作します。水準を描画するだけで何もシミュレーションしないので、上で述べた約定や手数料の前提は一切含まれません。公開された水準が自分のストラテジーの示す内容と食い違うなら、その食い違い自体が情報であり、多くの場合、答えは待つことです。

どちらのスクリプトを信頼する前にも確認する短いチェックリスト

  • 自分がどちらを使っているかを把握する:indicator()は描画するだけ。strategy()は注文をシミュレーションし、ストラテジーテスターのレポートを作ります。
  • ストラテジーでは、利益の数字を一つでも見る前に、実際に取引する銘柄に合った現実的な手数料とスリッページを設定する。
  • 過去データとリアルタイムで判断の瞬間がそろうよう、確定したバーでロジックを確認する。
  • 意味のある数のトレードで結果を判断してください。
  • 参考用のオーバーレイ(公開された水準など)は、執行の判断とは切り分けておく。チャートは判断材料を与え、判断を下すのは書き出した自分のルールです。

このように使えば、インジケーターはレンズ、ストラテジーは仮説です。どちらも信頼する前に、実際の約定で検証してください。

関連記事

出典

教育目的のコンテンツです。投資助言ではありません。

教育目的のコンテンツです。投資助言ではありません。