2銘柄スプレッド乖離戦略のダイアグラム
普段は連動して動く2つの銘柄も、ときおり足並みが揃わなくなり、そして開いた差は再び縮まる傾向があります。このダイアグラムは一方の価格をもう一方の価格で割り、その比率が自身の移動平均からどれだけ離れたかを監視して、差が開いた瞬間ではなく、差が縮み始めた瞬間に1番目の銘柄を買う、または売ります。
戦略の概要
- インデックスのブロックが、1番目の銘柄の価格を2番目の銘柄の価格で割ることで、2つの実在する銘柄から1つの合成銘柄を作ります。ローソク足の系列はこの合成銘柄に対して購読されるため、スプレッドは手作業で組み立てるのではなく、出来上がったローソク足として届きます。
- スプレッドのローソク足に対して移動平均が計算され、コンバーターがその終値を取り出します。これによりスプレッドには、現在の水準と、それ自身の基準線の両方が与えられます。
- 数式がこの2つを1つの数値にまとめます。すなわち、終値から平均までの距離を、平均に対する百分率で表した値です。
- 同じ値の1本前の状態は、1本前のスプレッドのローソク足と1本前の平均値から組み立て直され、2つ目の数式がそれら2つを1本前の足の乖離に変換します。
- 2つ目のローソク足の系列は売買対象の銘柄で動作し、2つの変数が2つの乖離をその系列に同期させます。各変数はスプレッドが生成した最後の数値を保持し、売買対象のローソク足が確定した時点でそれを送出します。そのため、すべての判断は注文が出される銘柄の時間軸で行われます。
- 続いて比較が4つの問いを立てます。1本前の乖離がしきい値に対してどこにあったか、乖離が現在どちらへ動いているか、乖離が依然として平均のどちら側にあるか、そしてポジションがノーポジションかどうかです。論理条件がこの4つの答えをまとめ、売買方向ごとに1つのエントリー条件を作ります。
- エントリーは固定数量の成行注文で、ノーポジションの状態からのみ行われ、戦略自体に設定された銘柄に対して送信されます。合成銘柄は数値の供給源であり、そこに注文が出されることはありません。
- さらに2つの比較が、乖離が再び平均に到達するのを監視し、その瞬間を売買方向ごとに1つずつ用意された2つのポジションブロックへ渡します。これらのブロックが、保有中のポジションを決済します。
エントリーとエグジットの条件
- ロングエントリー: 1本前の足の乖離が下側のしきい値を下回っており、今回の足の乖離が1本前より大きく、乖離は依然として平均を下回っていて、ポジションがノーポジションであること。ロングのブロックが注文数量を成行で買います。
- ショートエントリー: 1本前の足の乖離が上側のしきい値を上回っており、今回の足の乖離が1本前より小さく、乖離は依然として平均を上回っていて、ポジションがノーポジションであること。ショートのブロックが注文数量を成行で売ります。
- エグジット: ポジションは、そもそも狙っていたスプレッドの動きが完了した時点で決済されます。ロングは乖離が平均に到達するか平均を上抜けたとき、ショートは乖離が平均に到達するか平均を下抜けたときです。各決済ブロックはそれぞれ自分の売買方向を持つため、ロング用のブロックがショートに触れることはなく、ノーポジションの状態で作動した決済ブロックは何もしません。ここには利益確定の目標も、損切りも、時間による制限もありません。スプレッドの回帰そのものが決済のすべてです。
パラメーター
| パラメーター | 既定値 | 説明 |
|---|---|---|
| Index Expression | BTCUSDT@BNBFT/TONUSDT@BNBFT | 合成銘柄を組み立てる式です。1番目の銘柄の価格を2番目の銘柄の価格で割ります。両方の銘柄が接続先のデータに存在している必要があり、売買されるのはそのうち1番目の銘柄だけです。 |
| Spread Candles | 00:05:00 | スプレッドの系列を構成するローソク足の長さです。 |
| Traded Candles | 00:05:00 | 注文を出す基準となるローソク足の長さです。スプレッドの系列と同じ値に保ってください。そうしないと、同期された数値が、それを読み取る足よりも古いものになります。 |
| Average Length | 20 | 乖離を測る基準となる移動平均に含まれる、スプレッドのローソク足の本数です。 |
| Deviation Threshold, % | 0.3 | 平均への回帰を売買する価値があると判断するために、スプレッドが平均からどれだけ離れる必要があるかを百分率で指定します。 |
| Order Volume | 1 | 注文数量(ロット単位)です。 |
ダイアグラムの詳細
- 1本前の足の乖離は、計算済みの百分率を保持するのではなく、1本前のローソク足と1本前の平均値から組み立て直されます。そのため比率を構成する両方の値が同じ1本前の時点で読み取られ、現在と過去の比較で異なる2つの時点が混ざることはありません。
- 2つの系列は同じ瞬間に確定するわけではありません。合成銘柄は2つのデータフィードから組み立てられるため、そのローソク足は通常の銘柄より少し遅れて確定します。数値を売買対象のローソク足に同期させることが、戦略を単一の時間軸に保つ仕組みです。もし両方の系列をそのまま同時に流すと、すべての注文には2つのうち早いほうの時刻が付くことになり、現在時刻より前の時刻が付いた注文は拒否されます。
- 定数は売買対象のローソク足によって送出されます。比較は評価のたびに2つの入力値が改めて届くことを必要とするため、再送されない定数は、そこにつながる条件を何の兆候もなく停止させてしまいます。
- 下側のしきい値は2つ目の定数ではなく、同じ値に対する数式として求められます。そのため、しきい値をどの値に設定しても帯は対称に保たれます。
- 注文ブロックは戦略がオンラインになるのを待たない設定になっており、エントリーはノーポジションの状態からのみ建てるよう設定されています。そのため、ポジションを保有している間に同じシグナルが繰り返し出ても、そこに積み増しは行われません。
使い方
.json ファイルを Designer に読み込み、バックテスターで過去データを使って実行し、実運用の前にパラメーターやブロック自体を自分の銘柄に合わせて調整してください。