GitHub で見る

遅延リバーサル・セッション戦略のダイアグラム

このダイアグラムは、シグナルと発注の間に二つのものを挟みます。待ち時間と時計です。移動平均の周囲にパーセンテージで回廊(コリドー)を描き、価格がその回廊を抜けることをリバーサルとみなします。リバーサルは発生した時点では取引しません。確定した足を決まった本数だけ数える遅延ブロックに渡し、その反対側から出てきたインパルスだけが発注ブロックに近づけます。しかも、稼働時間ブロックが「時計はセッション内にある」と示している間だけです。

戦略の概要

  • 30分・確定足のみという単一のローソク足系列が、ダイアグラムのすべての分岐を駆動します。
  • 移動平均が中心線を与え、定数が感応度を保持し、二つの数式がこの組から上端と下端をつくります。すなわち移動平均に「移動平均×感応度」を足したものと引いたものです。
  • 二つのクロスブロックが、終値とこれらの端を監視します。一方は終値が下から上端を上抜いたときに発火し、もう一方は逆向きに配線され、上昇側の入力に下端をつないであるため、終値が下端を割り込んだときに発火します。
  • 各クロスはそれぞれの遅延ブロックを起動します。遅延は起動後に到着する確定足を数え、カウントが尽きたところで単一のインパルスを放出するため、シグナルはそれを生んだ足の上ではなく、あとから執行されます。
  • 稼働時間ブロックはすべてのローソク足の時刻を読み、その時点がセッション内かどうかを報告します。論理NOTが同じフラグをセッション外フラグに変えます。
  • 各方向の論理ANDが、放出されたインパルスとセッションのフラグを結合するため、稼働時間外に届いたインパルスはキューに入らず破棄されます。
  • エントリーは、ノーポジションからのみ建てる設定にしたポジション変更(Position modify)ブロック経由の成行注文です。したがって遅延シグナル1回につきポジションは1つだけ建ち、同方向のインパルスが繰り返してもピラミッディングはできません。
  • 3つめのポジション変更ブロックは、建っているものを何でも決済します。駆動源は3つ、いずれかの方向の遅延シグナルと、セッション外フラグです。チャートパネルにはローソク足、移動平均、回廊の両端、注文と約定が描かれます。

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

  • ロングエントリー: 終値が回廊の上端を下から上抜き、ロング側の遅延を起動します。設定した本数の確定足ののちに遅延がインパルスを放出し、その時点で時計がセッション内であれば、ロング側のポジション変更ブロックが注文数量を成行で買います。このブロックはノーポジションからのみ建てるため、すでにポジションがあるときは買いは見送られます。その場合、同じインパルスはすでに決済ブロックへ渡っています。
  • ショートエントリー: 終値が回廊の下端を割り込み、ショート側の遅延を起動します。設定した本数の確定足ののちにインパルスが届き、時計がセッション内であれば、ショート側のポジション変更ブロックが注文数量を成行で売ります。こちらも同様に、ノーポジションからのみです。
  • エグジット: 取引を終わらせるものは二つあります。いずれかの方向の遅延シグナルは、自分のエントリーブロックだけでなく決済ブロックにも配線されているため、建っているポジションに逆行するリバーサルが遅延を抜けてくると、そのポジションを成行でフラットにします。続くエントリーは次のシグナルを待ちます。建玉ブロックはノーポジションからしか働かないからです。もう一つは時計です。稼働時間フラグが false になると、NOTブロックがすべてのローソク足で発火し、決済ブロックはポジションをフラットにして、次にセッションが開くまでフラットのまま保ちます。ノーポジションのとき決済ブロックは何もしません。ここにはストップロスもテイクプロフィットのブロックもありません。

パラメーター

パラメーター 既定値 説明
Candles 00:30:00 ダイアグラム全体が動作の基準とする単一のローソク足系列の時間軸。
Average Length 20 回廊の中心を描く移動平均の期間。
Corridor Sensitivity 0.004 移動平均に対する割合で表した回廊の片側幅。既定では片側 0.4 パーセントです。大きくするとリバーサルはまれになり幅が広がり、小さくすると端が抜かれる回数がはるかに増えます。
Long Signal Delay 2 上向きのリバーサルと、買う可能性のあるインパルスとの間で数える確定足の本数。1 は次の足を意味し、値を大きくするほどシグナルを長く保持します。
Short Signal Delay 2 下向きのリバーサルと、売る可能性のあるインパルスとの間で数える確定足の本数。
Session Start 08:00:00 稼働セッションの開始。これより前に放出されたインパルスは破棄され、ダイアグラムはノーポジションのままです。
Session End 20:00:00 稼働セッションの終了。この時点から、セッション外フラグが、次にセッションが開くまですべてのローソク足で建っているポジションをフラットにします。
Order Volume 1 エントリー時に送る注文サイズ(ロット数)。決済ブロックは常に建っているものを何でもフラットにします。

ダイアグラムの詳細

  • クロスブロックは状態ではなくイベントです。二つの系列が入れ替わった足でしか発言しないため、各遅延はリバーサルごとに一度だけ起動され、価格が回廊の外にいる間ずっと足ごとに再起動されることはありません。
  • クロスブロックは反対方向を false 値として報告しますが、遅延の起動入力も注文のトリガーも false を無視するため、一方のクロスブロックの下向きの半分が上向きの分岐を起動したり発火させたりすることはありません。
  • 遅延がカウント中の間、二度目の起動は無視されます。したがってリバーサルが立て続けに起きてもインパルスは一つだけで、その列ができることはなく、カウントは集計ではなく本物の休止になります。
  • ローソク足ブロックは確定足のみを出力します。形成中の足の更新はその足が始まった時刻を運ぶため、そうした値から組み立てた注文はエミュレータの時計より過去の日時となり、拒否されます。
  • セッションは実時間の時計ではなくローソク足自身の時刻から読み取ります。そのためリプレイはライブ実行とまったく同じに振る舞い、同じダイアグラムを何も変えずにバックテストできます。

使い方

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