GitHub で見る

加重バスケット・トレンド戦略ダイアグラム

このダイアグラムは 2 つの銘柄を 1 つのバスケットとして売買し、判断には 2 本ではなく 3 本の価格系列を使います。売買する両方の銘柄から合成銘柄を組み立て、その式に含まれる除数で価格の高いレッグを縮小し、価格の安いレッグでも結果を動かせるようにします。この合成銘柄のトレンドが、ダイアグラムのいうバスケットの方向です。続いて、各レッグも同じ方法で単独に測ります。レッグを買うか売るかは、そのレッグ自身のトレンドがバスケットと一致したときだけであり、バスケットが反転すると、向きが合わなくなったレッグはすべて決済されます。ポジションを閉じる要因はほかにありません。目標値もストップもなく、バスケットの符号が建てる理由でもあり、降りる理由でもあります。

戦略の概要

  • 銘柄インデックスのブロックが、売買する 2 つの銘柄から 1 つの合成銘柄を作ります。重みはその式の中にあるため、大きい価格が小さい価格をかき消すことなく、2 つのレッグが比較可能なスケールで寄与します。
  • 3 本のローソク足系列が同じ時間軸で動きます。合成バスケットに 1 本、各レッグに 1 本ずつです。3 本とも確定したローソク足だけを購読するため、下流で読まれる値はすべて、すでに終了したバーのものになります。
  • 各系列は短期と長期の平滑移動平均に入り、数式が短期から長期を差し引きます。結果は符号付きのトレンド差であり、バスケット用に 1 つ、各レッグ用に 1 つずつ、計 3 つあります。
  • それぞれの差は変数に取り込まれて保持され、第 1 レッグのローソク足が確定した時点で放出されます。そのため、ある時点で取ったバスケットの値と、別の時点で取ったレッグの値から判断が組み立てられることはありません。
  • 値は最後にそれを生成した系列から得られ、時刻は売買対象のローソク足から得られます。したがって下流のすべてが、注文を送信するバーのタイムスタンプを持ちます。
  • 6 つの比較が、ラッチされた 3 つの差をゼロと比べた符号フラグに変えます。バスケットの上下、第 1 レッグの上下、第 2 レッグの上下です。
  • 各銘柄に 1 つずつ結び付けられた 2 つのポジションブロックがすでに保有している量を報告し、さらに 2 つの比較が、そのレッグが現在ノーポジションかどうかを示します。これにより、シグナルが繰り返されても同じレッグに 2 度目のエントリーが積み上がることはありません。
  • 4 つの論理条件がそれぞれ 3 つのフラグ(バスケットの方向、レッグの方向、レッグがノーポジションであること)を集め、それぞれが成行注文のブロックを起動します。さらに 4 つの注文ブロックが決済を担当し、2 つのバスケットフラグから直接駆動されます。

エントリーとエグジットの条件

  • ロングエントリー: レッグを買うのは、バスケットの差がプラスで、そのレッグ自身の差もプラスで、そのレッグに何も保有していないときです。2 つのレッグは同じバー上で独立に判断されるため、両方が同時に買いになることも、一方だけが買いでもう一方は見送りになることも、どちらも条件を満たさないこともあります。
  • ショートエントリー: レッグを売るのは、バスケットの差がマイナスで、そのレッグ自身の差もマイナスで、そのレッグに何も保有していないときです。売り側は買い側の正確な鏡像であり、レッグ同士の独立性も同じように当てはまります。
  • エグジット: 決済のきっかけはバスケットの差の符号が変わることだけです。バスケットがマイナスになると売り方向を持つ 2 つの決済ブロックが発火し、プラスになると買い方向を持つ 2 つが発火します。決済ブロックの方向は命令ではなくフィルターです。ブロックは反対向きのポジションにだけ作用するため、売り側の決済ブロックは買いのレッグに触れ、そのレッグがノーポジションかすでに売りであれば何もしません。自身の差は反転したがバスケットはまだ反転していないレッグは、バスケットが一致するまでそのまま放置されます。

パラメーター

パラメーター 既定値 説明
First Leg BTCUSDT@BNBFT 売買する 1 つ目の銘柄です。この銘柄専用のローソク足系列、専用の移動平均 2 本、専用のポジションブロック、専用の 4 つの注文ブロックに供給されます。これを変えるとそのレッグ全体が入れ替わります。
Second Leg TONUSDT@BNBFT 売買する 2 つ目の銘柄で、1 つ目と同じように配線されています。2 つのレッグは対称であり、どちらか一方が他方に従属することはありません。
Basket Index BTCUSDT@BNBFT / 20000 + TONUSDT@BNBFT 合成バスケット銘柄を組み立てる式です。除数が 2 つのレッグを比較可能なスケールに揃えます。値を大きくすれば第 2 レッグが優勢になり、小さくすれば第 1 レッグの重みが増します。そして、この系列の符号がすべてのエントリーを許可します。
Basket Candles 00:15:00 バスケットのローソク足の時間軸です。レッグの時間軸と等しく保ってください。3 つのストリームは 1 本のバーとして読まれることを前提としています。
First Leg Candles 00:15:00 第 1 レッグのローソク足の時間軸です。この系列は売買の時計でもあり、ラッチと定数、ひいてはすべての注文を送信する時刻を決めます。
Second Leg Candles 00:15:00 第 2 レッグのローソク足の時間軸です。両方のレッグが同じ長さのバーで判断されるよう、第 1 レッグと等しく保たれています。
Basket Fast Length 3 バスケットの短期移動平均の期間です。短いほど反応が早く、バスケットの符号が頻繁に反転するため、ポジションを建てる回数も決済する回数も増えます。
Basket Slow Length 7 バスケットの長期移動平均の期間です。この期間と短期の期間との差が、バスケットが反転したとみなされるまでに、どれだけ明確な値動きが必要かを決めます。
First Leg Fast Length 3 第 1 レッグの短期移動平均の期間です。これはそのレッグがバスケットと一致するかどうかを決めるだけで、バスケットの方向そのものを決めることはありません。
First Leg Slow Length 7 第 1 レッグの長期移動平均の期間です。2 つの期間の差を広げるとこのレッグの裏付けが出にくくなり、バスケットが反転してもこのレッグが追随しないことがあります。
Second Leg Fast Length 3 第 2 レッグの短期移動平均の期間で、その銘柄について同じ裏付けの役割を果たします。
Second Leg Slow Length 7 第 2 レッグの長期移動平均の期間です。一方のレッグのほうがノイズが多い場合には、2 つのレッグを意図的に別々に調整できます。
First Leg Volume 0.1 第 1 レッグの注文数量で、その銘柄自身の単位で表します。バスケットを完全に建てたときに両側へ同程度の資金が入るよう、第 2 レッグの数量と合わせて設定するとよいでしょう。
Second Leg Volume 2000 第 2 レッグの注文数量です。2 つの銘柄はまったく異なるスケールで価格が付いているため数量は別々になっており、単一の共通の数値では一方のレッグが取るに足らないものになってしまいます。

ダイアグラムの詳細

  • 2 つのレッグの釣り合いを取る重みは、ダイアグラム上に配線された数値ではなく、インデックスの式の一部です。バスケットのリバランスとは、そのパラメータ文字列を 1 つ書き換えることであり、合成系列全体がそこから作り直されます。
  • ローソク足は確定したものだけを購読します。更新中のローソク足から送られた注文はバーの開始時刻のタイムスタンプを持ち、それは実際に送信される時刻より前であるため、その理由で拒否されます。終了したバーだけを取ることで、すべての注文に本来あるべき時刻が刻まれます。
  • バスケットを実際に使えるものにしているのは、3 つのラッチ用変数です。合成銘柄は 2 つのフィードから組み立てられ、そのバーは通常のものより遅れて確定します。そのため、3 つの値がすべて 1 つの時間枠に収まるのを待つブロックは、決して揃わない組み合わせを待ち続けます。各値を売買対象のローソク足にラッチすれば、値はそのままの形で、時刻はローソク足から取られ、比較も論理条件も注文も、すべて売買対象のバーの時計で動きます。
  • エントリーのブロックはポジションを建てる設定になっているため、エントリーはノーポジションからのみ作用します。したがって、複数のバーにわたって成立し続けるシグナルでも、バーごとに 1 つずつではなく注文は 1 つだけ発生し、ノーポジションに戻る手段は決済ブロックだけになります。
  • チャートパネルには 3 本のローソク足系列すべて、6 本の移動平均すべて、そして 8 つの注文ブロックすべての注文と約定が描画されます。そのため、あるバーを、それを許可したバスケットと、それを裏付けたレッグと突き合わせて読むことができます。

使い方

.json ファイルを Designer に読み込み、バックテスターで過去データを使って実行し、実運用の前にパラメーターやブロック自体を自分の銘柄に合わせて調整してください。