GitHub で見る

ペアバー方向ストラテジーのダイアグラム

2つの銘柄、1本のバー。このダイアグラムは、売買対象の銘柄ともう1つの参照銘柄について同じ5分足の方向を読み取り、両者が食い違うときだけ買います。すなわち、参照銘柄のバーが陽線で引け、売買対象のバーが陰線で引けた場合です。ポジションは、価格が前のバーの高値を上回って引けた時点で手仕舞われます。

戦略の概要

  • 2つのローソク足ブロックがダイアグラムに値を供給します。売買対象側はストラテジー自身の銘柄で動き、参照側は Security 変数によって指定した銘柄に向けられるため、ペアの組み合わせは配線ではなく設定で決まります。
  • どちらの系列も確定したローソク足のみを対象とする設定になっているため、未確定のバーが判断を動かすことはありません。
  • 同期(Sync)は銘柄ごとに1本のラインを保持し、5分ごとのタイミングで両方のローソク足を同時に通します。2つのフィードは独立して届くため、この保持を経て初めて2本のローソク足が同じバーに属することになり、これこそが両者の比較を意味のあるものにする唯一の条件です。
  • コンバーターは通過した各ローソク足から始値と終値を取り出し、どの銘柄も、そのバーがどちら向きだったかを示す2つの数値に還元します。
  • 2つの比較がこれらの数値を読み取ります。参照銘柄の終値が始値より上であれば参照バーが陽線で引けたこと、売買対象の終値が始値より下であれば売買対象のバーが陰線で引けたことを意味します。
  • 前回値(Previous value)は売買対象のローソク足を1つ前に保持し、コンバーターがそこから高値を読み取ります。ブロックが保持するのはローソク足そのもので、フィールドの読み取りはその後に行われます。この順序であれば、どのバーでも値が得られます。
  • ポジションは、ローソク足のトリガーで値を出す変数によってバーに同期され、その後ゼロと2回比較されます。ゼロ以下であればエントリーを、ゼロより上であれば手仕舞いを許可します。
  • 2つの論理 AND ゲートが2つのポジション変更(Position modify)ブロックを駆動します。一方は Open position condition でポジションを建て、もう一方は Close position で手仕舞います。チャートパネルには、売買対象のローソク足、手仕舞い水準、注文および約定が表示されます。

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

  • ロングエントリー: 通過したバーで、参照銘柄が自身の始値より上で引け、売買対象の銘柄が自身の始値より下で引け、かつポジションがゼロ以下である場合です。AND ゲートが作動し、ポジション変更(Position modify)が Open position condition の条件で注文数量を成行で買います。そのため、すでにポジションを建てている状態で同じパターンが繰り返されても、何も追加されません。
  • ショートエントリー: ショート側はありません。このダイアグラムはロング専用で、売買対象銘柄の陰線は買うべき押し目として読まれ、売る理由とは見なされません。
  • エグジット: ポジションがゼロより上の間に、終値が前のバーの高値を上回るバーが通過すると手仕舞いゲートが作動し、2つ目のポジション変更(Position modify)が Close position の条件で成行で手仕舞います。ストップロスもテイクプロフィットもありません。前のバーの高値が手仕舞いルールのすべてであり、またこのブロックは固定数量を売るのではなく建っている分を手仕舞うため、手仕舞いによってポジションがショートに反転することはありません。

パラメーター

パラメーター 既定値 説明
Reference Instrument TONUSDT@BNBFT バーの方向によってエントリーを裏づける銘柄。売買対象の銘柄と併せて、接続先から取得できる必要があります。
Reference Candles 00:05:00 参照ローソク足の時間軸。
Traded Candles 00:05:00 売買対象ローソク足の時間軸。
Sync Interval 00:05:00 同期(Sync)が両方の銘柄を通すタイミング。ローソク足の時間軸と同じ値に保ってください。そうでないと、通過したペアは比較が前提としているバーになりません。
Order Volume 1 注文サイズ(ロット単位)。

ダイアグラムの詳細

  • どちらのポジション変更(Position modify)ブロックもオンライン接続を必要としない設定になっているため、同じダイアグラムがヒストリカルデータでもライブフィードでも同一に動作します。
  • エントリー側に Open position condition を指定しているのは意図的です。これがないと、ブロックはトリガーされたポジション変化のすべてに反応し、1つのシグナルが注文の連続に変わってしまいます。
  • ダイアグラム内のすべての定数、すなわちゼロと注文数量は、確定したローソク足によってトリガーされます。変数は自身の値ではなくトリガーによって値を出すため、トリガーされない定数があると、その隣にある比較は実行中ずっと沈黙したままになります。
  • 各 Sync ラインの両端が接続されています。ブロックに送り込まれたまま取り出されない値があると、閉じないラインを待ち続けることになり、ストラテジーはそもそも起動しません。
  • 手仕舞い水準はチャート上に独立したラインとして描画されるため、その水準を上回って引けたバーと、それに続いた約定をパネル上で並べて読み取れます。

使い方

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