フラクタル最小距離ストラテジーのダイアグラム
フラクタルとは、その両隣にある2本ずつのローソク足よりも高い、あるいは低い位置にあるローソク足のことであり、後続のローソク足が出そろって初めてフラクタルと呼べる。このダイアグラムは両方の種類を検出し、それぞれについて直近のものの価格を保持したうえで、二つの水準が取引に値するだけ離れるまではエントリーを行わない。すべては確定したローソク足で測られるため、水準は認定された時点で決まり、その後に修正されることはない。
戦略の概要
- ダイアグラム全体は1本のローソク足系列だけで動き、そこでは確定したローソク足のみが渡される。そのため、後続のティックで取り消されうる価格から水準・距離・注文が作られることはない。
- 前の値(Previous value)は1本前のローソク足を返し、Highest と Lowest はそこで終わる5本のローソク足の極値を測る。つまり、完全に過去に収まったウィンドウである。
- 2つ目の前の値は3本前のローソク足、すなわちそのウィンドウのちょうど中心を返し、2つのコンバーターがその高値と安値を取り出す。
- 中心の高値がウィンドウの最高値と一致すれば上側フラクタルとなり、安値について同じ判定を鏡写しに行えば下側フラクタルとなる。ラッチ付き変数が各フラクタルの価格を保持し、ラッチは比較が偽のときは値を取り込まないため、保持された価格は実際にフラクタルが出たローソク足でのみ更新される。
- もう一組の変数が、保持された2つの水準をローソク足ごとに再送出する。そのため、両者の間隔を計算する式も、最小距離との比較も、フラクタルが出た足だけでなくすべての足で結果を返す。
- 売買それぞれの側で、自分のフラクタル判定とこの距離判定が論理条件で結合される。条件を満たしたシグナルは、まず反対側のポジションを決済し、そのうえで新規のポジションを建てる。いずれも成行で行われる。
- ポジション保護(Position protection)はすべての約定を追跡し、確定した各ローソク足の終値で決済価格を判定するため、テイクプロフィットとストップロスの確認は1本の足につき1回となる。
- ローソク足、2つの極値、保持された2つの水準、そしてすべての約定が1つのチャート領域に描画されるため、2つの水準とその間隔を図から直接読み取れる。
エントリーとエグジットの条件
- ロングエントリー: 下側フラクタルが確定し(3本前の安値が、1本前で終わる5本のウィンドウの最安値である)、かつ直近の上側水準と直近の下側水準の距離が最小距離以上であること。ダイアグラムは、ショートポジションを保有していればそれを決済し、続いて注文数量分を成行で買う。
- ショートエントリー: 上側フラクタルが確定し(3本前の高値が同じウィンドウの最高値である)、かつ同じ距離条件を満たすこと。ダイアグラムは、ロングポジションを保有していればそれを決済し、続いて注文数量分を成行で売る。
- エグジット: 取引が終わる経路は2つある。反対側のフラクタルが出ると、新規エントリーの発注前に保有中のポジションが決済される。そのため、どちらのシグナルでも決済のブロックが新規建てのブロックより手前に置かれている。それとは別に、ポジション保護が、約定価格に対する百分率で測ったテイクプロフィットまたはストップロスでポジションを決済する。判定は確定した各ローソク足の終値に対して行われる。
パラメーター
| パラメーター | 既定値 | 説明 |
|---|---|---|
| Candles | 00:05:00 | 唯一のローソク足系列のタイムフレーム。確定したローソク足のみが渡されるため、判断は1本の足につき1回行われる。 |
| Upper Fractal Length | 5 | 中心のローソク足の高値を、その最高値と比較する対象となるウィンドウのローソク足の本数。 |
| Lower Fractal Length | 5 | 中心のローソク足の安値を、その最安値と比較する対象となるウィンドウのローソク足の本数。フラクタルを対称に保つため、上側と同じ値にしておくこと。 |
| Fractal Shift | 3 | 中心のローソク足が何本前に位置するか。5本のウィンドウを1本分ずらした構成では、3 を指定すると中心がちょうど真ん中に来る。 |
| Minimum Distance | 100 | エントリーを許可するために必要な、直近の上側水準と直近の下側水準の最小の間隔。銘柄の価格単位による絶対的な距離であるため、桁の異なる価格で取引される銘柄にダイアグラムを移すたびに、値を調整し直す必要がある。 |
| Order Volume | 1 | 注文数量(ロット単位)。 |
| Take Profit, % | 2 | テイクプロフィットまでの距離。約定価格に対する百分率で指定し、確定した各ローソク足の終値で判定される。 |
| Stop Loss, % | 1 | ストップロスまでの距離。約定価格に対する百分率で指定し、確定した各ローソク足の終値で判定される。 |
ダイアグラムの詳細
- インジケーターのブロックは、届いた値を無条件に確定値として扱う。形成中のローソク足と確定済みのローソク足を区別する手段を持たないためである。確定したローソク足だけを渡すことで、未確定の高値・安値がウィンドウに入り込むのを防いでいる。入り込めば、極値を気づかぬうちに動かし、次の更新で上書きされてしまう。
- 同じサブスクリプションが注文の正当性も保っている。未確定のローソク足の更新から作られた注文は、その足の開始時刻を持つため、過去から届いた注文として拒否される。
- ウィンドウを1本分ずらしてあるのは、判定対象のローソク足が前に2本、後ろに2本を従えてちょうど中央に来るようにするためである。したがってフラクタルは、それが発生してから3本後より早く認定されることはなく、その後に修正されることもない。
- ラッチのトリガーは、比較が偽のときは値を保存せずに捨てる。これによって「この足で判定を満たした」が「判定を満たした直近の価格はこれである」に変わる。どちらの水準も最初のフラクタルが出るまでは存在しないため、両方の種類が出そろうまでエントリーは起こらない。
- 2つのエントリーブロックはいずれも成行で発注し、ストラテジーがオンラインであることを要求しない設定になっている。そのため、記録された過去データ上でもライブ取引でも、ダイアグラムの挙動は同じになる。
使い方
.json ファイルを Designer に読み込み、バックテスターで過去データを使って実行し、実運用の前にパラメーターやブロック自体を自分の銘柄に合わせて調整してください。