GitHub で見る

非リペイント型練行足エミュレーション戦略のダイアグラム

トレーダーが練行足(ブリックチャート)を選ぶのは、いったん描かれたブリックが二度と変化しないからです。そこで受け取ったシグナルが一分後に取り消されることはありません。このダイアグラムは、通常の時間足ローソク足から同じ性質を引き出します。ローソク足のソースはあえて途中経過の更新付きで購読され、ソースと判断を行うすべてのブロックとの間には確定値(Final value)ブロックが置かれます。そのため、移動平均もクロスもエントリーも、すべてすでに確定したバーの上で決まります。リアルタイムのストリームも捨てずに残しますが、その送り先は、形成途中のローソク足がふさわしい場所であるチャートだけです。

戦略の概要

  • 5分足は途中経過の更新を有効にして購読されるため、ソースは形成中のバーを何度も出力し、確定時にもう一度出力します。
  • ローソク足型の確定値(Final value)ブロックが、ソースからロジックへ通じる唯一の入口です。値が確定しているときにだけそれを先へ渡すので、その先のブロックがまだ動きうる価格を目にすることはありません。
  • このブロックは飾りではなく、構造を支える部品です。インジケーターブロックは渡された値をすべて確定値として扱うため、形成途中のバーを与えられた移動平均は更新のたびに同じバーの値を書き換えてしまい、そうした2本の移動平均で作ったクロスはバーの内側で現れたり消えたりします。
  • 速い指数移動平均、遅い指数移動平均、相対力指数はいずれも確定済みのストリーム上で計算され、3つとも形成が完了してからのみ値を出す設定になっているため、最初の判断は遅い側の期間が満たされるまで待たされます。
  • 2つのクロス(Crossing)ブロックが同じ事象の両面を担います。一方は上側の入力に速い移動平均、下側の入力に遅い移動平均を置き、もう一方はそれを入れ替えているので、それぞれが名前どおりのクロスで true を出します。
  • 相対力指数はミッドラインの変数と両方向で比較され、発注の前にクロスと一致していなければならないモメンタムフィルターになります。
  • ポジションは保有量の変数に読み込まれ、確定したローソク足ごとにトリガーされてゼロと2回比較されます。これにより、エントリーは「ロングでないこと」を、イグジットは「ロングであること」を条件にできます。
  • 2つの論理積(AND)ブロックがクロス、モメンタム、ポジションをまとめます。一方は Open position 条件を持つ成行エントリーを、もう一方は Close position 条件を持つ成行イグジットを駆動し、チャートパネルにはリアルタイムのローソク足、3つのインジケーター、注文、約定が描画されます。

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

  • ロングエントリー: 確定したローソク足で速い移動平均が遅い移動平均を上抜け、相対力指数がミッドラインを上回り、ポジションがロングでない状態です。AND ブロックが3つの答えをまとめ、エントリーブロックが注文数量を成行で買います。このブロックの Open position 条件により、注文はノーポジションの状態からのみ送られるため、ポジション保有中に2度目のクロスが起きても何も変わりません。
  • ショートエントリー: ショートのエントリーはありません。ミッドラインを下回っている場合や、速い移動平均が遅い移動平均の下にある場合、このダイアグラムは何もせず見送ります。売り方向で送られる唯一の注文は、ロングを決済するものだけです。
  • エグジット: 確定したローソク足で速い移動平均が遅い移動平均を下抜け、相対力指数がミッドラインを下回り、ポジションがロングである状態です。2つ目の AND ブロックが発火し、決済ブロックがポジション全体を成行で売ります。その数量は Close position 条件によって建玉から算出されます。ストップロスのブロックもテイクプロフィットのブロックもありません。トレードを開始させたクロスがそのままトレードを終わらせるものであり、これらの判断はいずれも完成したバーの上で下されます。

パラメーター

パラメーター 既定値 説明
Candles 00:05:00 ダイアグラム全体が動作するローソク足シリーズの時間軸です。このシリーズは途中経過の更新付きで購読され、確定値(Final value)ブロックがそこから確定したバーを選り分けます。
Fast EMA Length 14 速い指数移動平均の期間です。シグナルとなるクロスを作る2本のラインのうち、速い方にあたります。
Slow EMA Length 40 遅い指数移動平均の期間です。速い方のラインを測る基準となるラインにあたります。
RSI Length 14 両側でモメンタムフィルターとして使う相対力指数の期間です。
RSI Midline 50 モメンタムフィルターを分ける水準です。これより上ではダイアグラムはロングを建てることができ、下ではロングを決済できます。
Order Volume 1 エントリーが送る注文数量です。イグジットの数量は、代わりに建玉から取られます。

ダイアグラムの詳細

  • ゲートはクロスが起きたバーでちょうど発火します。クロス(Crossing)ブロックは2本のラインが入れ替わった瞬間にだけ出力し、比較ブロックは確定したローソク足ごとに出力します。論理条件は前回の発火以降にすべての入力がそろうまで各入力を保持するため、足りない部品は常にクロスであり、それと組み合わされる答えは同じバーのものになります。
  • 2つのクロス(Crossing)ブロックは、入力を入れ替えただけの同じブロックです。それぞれ、自分の上側の入力が下側の入力に達するか上回ったときに true を、逆の事象で false を出します。だからこそ、1つのブロックが両方のゲートに供給するのではなく、一方が上昇クロス用、もう一方が下降クロス用という名前になっています。
  • ポジションブロックはポジションが変化したときにしか値を出さず、動きのない週にはまったく出力しないこともあります。その後ろにある保有量の変数はゼロから始まり、最後に与えられた数値を保持して確定したローソク足ごとに再出力するため、2つの比較には常に新しい左辺が用意されます。
  • シグナルを時間的に間引く仕組みはありません。条件を満たしたクロスはすべて採用され、エントリーが別のエントリーに重なるのを防ぐのは、ポジションがロングでないという要件と、それを裏づける注文ブロック自体の Open position 条件だけです。
  • 形成途中のローソク足は捨てられるのではなく、判断から遠ざけられているだけです。生のストリームはチャート上でインジケーターの隣に描かれ、インジケーターは確定済みのストリームから描かれるので、両者を見比べることができます。

使い方

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