Recovery Target Breakout ストラテジーのダイアグラム
ここでのエントリーが見ているのは一点だけ、直近の相場に比べて極端に値幅の広いローソク足である。決済のほうは価格ではなく金額で判断する。ポジションの含み損益を、ダイアグラムが変数に保持するターゲットと突き合わせるが、そのターゲットは定数ではない。損失で終わった決済はそれを倍率で拡大し、利益で終わった決済は基準値へ戻す。だから、どのトレードも直前のトレードがいくら失ったかを知っている。
戦略の概要
- 確定した15分足が4つの変換ブロックへ渡され、各バーの高値、安値、始値、終値を取り出す。
- 数式ブロックが高値から安値を引いてバーの値幅を求め、Average true range インジケーターが直近10本の値幅の平均を測る。
- 2つ目の数式ブロックが Average true range に Breakout Multiplier を掛け、比較ブロックがこのバーの値幅がそのしきい値を超えているかを問う。これが「異常に広いバー」の定義のすべてである。
- 方向の判定は比較ひとつ、終値が始値より上かどうかである。論理 Not が同じシグナルを陰線の場合へ反転させるので、2つのエントリーは同じローソク足の実体を反対側から読むことになる。
- どちらのエントリーゲートも3つの条件の論理 And である。バーが広いこと、向きが合っていること、ポジションがノーポジであること。条件が揃うとポジション変更(Position modify)が注文数量で成行の買いまたは売りを出す。
- 損益変化(P&L change)が更新のたびにポジションの含み損益を供給し、2つの比較ブロックがそれを金額ターゲットおよび金額ストップと突き合わせる。
- 金額ターゲットは固定値ではない。数式ブロックが Target Base に変数へ保持されたリカバリー係数を掛けるので、ゴールはリカバリーの状態とともに動き、同じ数字をダイアグラムに二度書き込まずに済む。
- リカバリー係数を書き換えるイベントはちょうど2つで、それぞれが専用のゲートを通る。そして組み合わせ(Combination)が2つの書き込みを、係数を保持する変数のひとつの入力へまとめる。
エントリーとエグジットの条件
- ロングエントリー: 高値から安値までの値幅が Average true range に Breakout Multiplier を掛けた値を超え、かつ自身の始値より上で引けた確定足。ノーポジ状態から取る。ポジション変更が注文数量で成行の買いを出す。
- ショートエントリー: 値幅は同じしきい値を超えるが、自身の始値より上では引けなかった確定足。ノーポジ状態から取る。ポジション変更が同じ注文数量で成行の売りを出す。
- エグジット: ダイアグラムには価格によるストップもターゲットも存在せず、ポジションは金額だけで決済される。含み損益が現在の金額ターゲットに達すると、ポジションを閉じる設定のポジション変更がひとつ作動し、金額ストップまで下がるともうひとつが作動する。それぞれの決済ブロックがリカバリー・ラッチの片方の分岐を受け持つ。損失決済の約定は拡大した係数を放ち、利益決済の約定は数値1を放ち、2つの書き込みは組み合わせで合流して係数を保持する変数へ入る。
パラメーター
| パラメーター | 既定値 | 説明 |
|---|---|---|
| Candles | 00:15:00 | ダイアグラム全体が動作するローソク足の時間足。 |
| ATR Length | 10 | Average true range を測るバーの本数。広いバーかどうかを判定する物差しになる。 |
| Breakout Multiplier | 1.5 | ブレイクアウトと見なすために、バーが平均の何倍の広さである必要があるか。上げるとエントリーはより稀で極端になり、下げると回数が増える。 |
| Volume | 1 | 各エントリー注文のサイズ。以下の金額の数値はすべてこのサイズの結果なので、片方を変えればもう片方も調整し直すことになる。 |
| Target Base | 300 | 利益トレードの後に取ったトレードの金額ターゲット。損益を計上する通貨で表す。 |
| Recovery Multiplier | 2 | 損失トレードの後にターゲットへ掛ける倍率。2 は次のトレードが基準ターゲットの2倍を取り返さなければならないことを意味し、1 はリカバリーを無効にして通常の金額ターゲットのままにする。 |
| Stop Money | -600 | ポジションを放棄する含み損益。負の数で書く。固定値であり、リカバリー係数では拡大されない。 |
ダイアグラムの詳細
- このラッチはダイアグラム唯一のループである。係数の変数が数式ブロックへ渡されてそこで Recovery Multiplier が掛けられ、結果はゲート用の変数で待機し、損失決済が実際に約定した時点でゲートがそれを係数の変数へ書き戻す。
- どちらのゲートも、決済を要求した比較ではなく、決済ブロックの約定によって起動する。決済注文が執行中の間、比較は同じ判定を何度も繰り返しうるが、約定は一度しか起きない。だから係数は損失トレード1回につき1回だけ掛けられる。
- 係数の変数は入力をトリガーとして扱わずに受け取るため、書き込みは保持している値を変えるだけである。出力は与えられたトリガー、すなわち損益の更新で行われ、それによってターゲット比較の両辺が同じタイミングで揃う。
- 最初のポジションが建つまで金額側の分岐は沈黙している。評価する対象があって初めて含み損益が報告されるからである。そこから先は、係数、Target Base、Recovery Multiplier が更新のたびに揃って出力される。
- ローソク足は確定足のみを購読しているので、すべてのシグナルはすでに閉じたバーに属し、注文にはバーが始まった時刻ではなくその確定時刻が付く。
使い方
.json ファイルを Designer に読み込み、バックテスターで過去データを使って実行し、実運用の前にパラメーターやブロック自体を自分の銘柄に合わせて調整してください。