GitHub で見る

トレーリングストップ付き EMA クロス戦略ダイアグラム

このダイアグラムのエントリーは、パレットの中で最も素直なもの、すなわち 4 時間足のローソク足で終値が指数移動平均を交差するというだけのものです。この例が実際に主題としているのは、その後にポジションを手仕舞うブロックのほうです。ポジション保護(Position protection)はエントリーの約定によって作動し、ローソク足が確定するたびに価格を受け取り、トレーリングを有効にしておくと、思惑どおりに進んでいる取引の後ろをストップが追いかけていきます。そのため決済は、エントリー時点で固定された線ではなく、一方向にだけ切り上がっていく水準になります。

戦略の概要

  • 4 時間足のローソク足がこのダイアグラムの時計であり、確定したものだけが配信されるため、すべての判断はすでに完成したバーの上で下されます。
  • コンバーターが各ローソク足から終値を取り出し、同じ系列の上に構築された指数移動平均が、価格を測る基準となる水準になります。
  • 2 つのクロスブロックがこの組を反対側から監視します。一方は終値を上側の入力、平均を下側の入力として受け取り、もう一方はその逆です。それぞれ、2 本の線が実際に入れ替わったバーでのみ信号を出します。
  • 現在のポジションは、入力で値を保持しローソク足のトリガーで放出する変数によって、ローソク足のリズムに合わせられます。ゼロとの 3 つの比較が、この保持された数値をノーポジション・ロング・ショートに変換します。
  • 4 つの論理 AND ゲートが、2 つのクロスとこれら 3 つの状態を組み合わせます。ノーポジションのときの上抜けはロングを建て、ノーポジションのときの下抜けはショートを建て、既存のポジションに逆らうどちらのクロスもそれを手仕舞います。
  • どちらのエントリーブロックもポジションなしの条件を備えているため、すでに取引が進行中に発火したゲートは、買い増しも途転もできません。このダイアグラムは一度に 1 つのポジションだけを保持します。
  • 自分の約定はすべて組み合わせ(Combination)を経由してポジション保護に届きます。これが、このブロックのポジション認識を正しく保つ仕組みです。エントリーがブロックを作動させ、手仕舞いの約定がそれを解除します。
  • その Price ソケットにはシグナルが使うのと同じ終値が供給されるため、トレーリング水準はローソク足が確定するたびに 1 回だけ再計算されます。チャートパネルには、ローソク足、平均、エントリーとエグジットの注文、保護用ストップ、そしてすべての約定が描画されます。

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

  • ロングエントリー: 確定したローソク足で、保持されたポジションがゼロのまま終値が指数移動平均を上抜けます。ロングのゲートが通過し、ポジション変更(Position modify)が注文数量を成行で買います。
  • ショートエントリー: 確定したローソク足で、保持されたポジションがゼロのまま終値が指数移動平均を下抜けます。ショートのゲートが通過し、ポジション変更が注文数量を成行で売ります。
  • エグジット: 取引を終わらせる方法は 2 つあり、通常は最初のほうが働きます。ポジション保護はエントリー価格から 1.5% 離れた位置にストップを置き、トレーリングが有効な場合、ローソク足が確定してさらに利益方向へ進むたびに、ロングでは上へ、ショートでは下へストップを運びます。終値がその水準を再び通過した時点で、取引は成行注文によって決済されます。2 つ目の出口はシグナルそのものです。保有中のポジションに逆らうクロスが、決済に設定された 3 つ目のポジション変更ブロックを起動し、そこにあるものを手仕舞います。このブロック自身の数量は不要です。どちらの経路もポジションを途転させません。反対方向は次のクロスを待つ必要があり、そのときにはダイアグラムはノーポジションで、自由にそれを取ることができます。

パラメーター

パラメーター 既定値 説明
Candles 04:00:00 ローソク足系列の時間軸。確定したローソク足 1 本が 1 回の判断であり、トレーリング水準の 1 回の再計算です。
EMA Length 15 終値を測る基準となる指数移動平均のローソク足本数。長いほどクロスの頻度は下がり、より多くのノイズを通して取引を保持します。
Order Volume 1 注文サイズ(ロット単位)。
Trailing Stop, % 1.5 トレーリングストップの距離(パーセント)。エントリー価格からではなく、ポジションを建ててから到達した最良価格から測定されます。

ダイアグラムの詳細

  • トレーリング水準は、ブロックに与えられた価格に追随します。ここでその価格は終値です。したがってストップはローソク足が終わった位置に置かれ、ヒゲが届いた位置には置かれません。そのため、バー内のスパイクは水準を引きずることも、取引を弾き出すこともありません。
  • より細かいトレーリングは、リンク 1 本で実現できます。最終取引価格を読む Level 1 ブロックから Price ソケットに供給するか、代わりに板情報(Market depth)ソケットに板を渡せば、同じストップが 4 時間に 1 回ではなく、気配が更新されるたびに価格を付け直されます。
  • 自分の約定はすべてポジション保護に入り、手仕舞いの約定も含まれます。決済の約定は、ブロックが積み上げてきたポジションをゼロに戻し、ストップを解除します。これがなければ、ブロックはもう存在しないポジションを監視し続け、最終的には反対方向のポジションを建てることでそれを保護してしまいます。
  • 平均は形成済みで確定した値だけを配信するため、まだ値が溜まりきっていない最初のバーでは、独自のクロスは発生しません。
  • 注文数量は 1 つの公開された数値で、両方のエントリーブロックで共有されます。決済ブロックは数量をまったく取りません。ポジション決済の注文は、開いているものに合わせて自分で数量を決めるからです。

使い方

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