アームド・セッション・ボックス戦略のダイアグラム
静かな夜はどこかで終わります。このダイアグラムは、夜間の2つの時刻の間に相場が保った値幅を計測し、取引セッションの開始を待って一度だけアーム(待機状態の確定)を行い、そのボックスの上限と下限を、売買に使う2つの価格として固定します。それ以降は板の最良気配を監視し、固定したレベルのいずれかに到達した瞬間に買いまたは売りを行います。
戦略の概要
- 5分足のローソク足を途中経過の更新付きで購読し、確定値ブロック(Final value)が確定済みのローソク足だけを通します。ダイアグラム内のすべての判断は、完成した足の上で行われます。
- 稼働時間ブロック(Working time)が計測ウィンドウを示し、その信号によってローソク足型の変数ブロック(Variable)が起動します。これにより夜間ウィンドウに入るローソク足だけが指標に届き、ボックスはそのウィンドウだけから作られます。
- 絞り込まれたストリームに対する最高値(Highest)と最安値(Lowest)がボックスの上限と下限になり、2つの変数が最後の値を保持します。そのため計測から数時間後でも、ダイアグラムの他の部分は任意のローソク足でボックスを参照できます。
- 板情報ブロック(Market depth)から最良売り気配と最良買い気配を読み取り、さらに2つの変数がその気配値をローソク足の拍子に合わせて保持します。板は1本の足の間に数百回更新されるため、ローソク足を基準に組み立てた条件とは、そのままではかみ合いません。
- 数式ブロック(Formula)がボックスを、価格に対する割合としての幅へ、そしてその幅から測った端のマージンへと変換します。これにより、数万の価格帯の銘柄でも一桁の価格帯の銘柄でも、同じ2つの設定が同じ意味を持ちます。
- 2つ目の稼働時間ブロックが取引セッションを開き、論理条件が4つの答えを集めます。ボックスが狭いこと、売り気配が上限から十分に離れていること、買い気配が下限から十分に離れていること、そしてポジションがフラットであることです。
- フラグブロック(Flag)はその条件を、セッションごとに一度だけのアーミングという事象に変え、2つのレベルを固定します。その背後のボックスは翌晩に引き直されるかもしれませんが、固定されたレベルは動きません。
- エントリーは、保持された気配値が固定レベルに到達したときに、フラットなポジションから出す成行注文です。そこから先はポジション保護ブロック(Position protection)が取引を引き継ぎます。
エントリーとエグジットの条件
- ロングエントリー: セッション中、ボックスがアーム済みでポジションがフラットの状態で、ローソク足の時点で保持された最良売り気配が、固定された上限レベルに到達します。ポジション変更ブロック(Position modify)が注文数量を成行で買います。
- ショートエントリー: 同じセッション中、同じくアーム済みかつフラットという条件のもとで、ローソク足の時点で保持された最良買い気配が、固定された下限レベルまで下がります。ポジション変更ブロックが注文数量を成行で売ります。
- エグジット: ダイアグラム上に決済シグナルはありません。建玉ができるとポジション保護ブロックが取引を引き受け、エントリー価格から1パーセントの利益確定(テイクプロフィット)または損切り(ストップロス)で決済します。現在価格はローソク足ではなく板から読み取ります。エントリーが成立するとアーム状態も0に戻されるため、1つのセッションで取引は1回となり、次のアーミングは翌日を待ちます。
パラメーター
| パラメーター | 既定値 | 説明 |
|---|---|---|
| Candles | 00:05:00 | ダイアグラム全体が動作するローソク足系列の時間足。 |
| Box From | 02:00:00 | ボックスを計測するウィンドウの開始時刻。 |
| Box Until | 07:59:59 | 計測ウィンドウの終了時刻。その前に始まった最後のローソク足までは対象に含まれます。 |
| Box Top Length | 72 | ボックスの上限を、計測ウィンドウの何本のローソク足から取るか。 |
| Box Bottom Length | 72 | ボックスの下限を、計測ウィンドウの何本のローソク足から取るか。 |
| Max Box Width, % | 3 | 取引できるほど静かとみなされるボックスの最大幅。価格に対する割合。 |
| Edge Margin, % | 20 | アーミングの時点で価格が端からどれだけ離れている必要があるか。ボックスの高さに対する割合。 |
| Session From | 08:00:00 | アーミングとエントリーが許可されるセッションの開始時刻。 |
| Session Until | 20:00:00 | セッションの終了時刻。これ以降はフラグが解除され、アーム状態がクリアされます。 |
| Order Volume | 0.01 | 両方のエントリーが送る注文数量。 |
| Take Profit, % | 1 | 利益確定までの距離。エントリー価格に対するパーセント。 |
| Stop Loss, % | 1 | 損切りまでの距離。エントリー価格に対するパーセント。 |
ダイアグラムの詳細
- ボックスは、計測ウィンドウに入ったローソク足に対する、設定した長さのローリングな最高値と最安値であり、毎晩ゼロから作り直される値幅ではありません。ウィンドウの序盤にはバッファに前夜の末尾がまだ残っていますが、ウィンドウの終わりまでには値はまさに計測したばかりのその夜のものになり、使われるのはそのときです。
- アーム状態はフラグブロックの出力ではなく、数値として保持されます。フラグブロックは一度だけ真を出したあとは沈黙するため、アーミング時に1、セッション終了時に0、エントリー後に0が書き込まれる変数こそが、エントリー条件が毎本のローソク足で読める値になります。
- 比較や論理条件に入るすべての値は、保持用の変数を通して、確定した各ローソク足で再び送出されます。比較は前回の発火以降に両辺が届いたときにだけ発火するため、1日に一度しか取得しないレベルも、足ごとに改めて渡し直す必要があります。
- アーミングはセッションの最初の1分だけでなく、セッションのすべてのローソク足で判定されます。価格が狭いボックスの内側に十分な余裕をもって収まった最初の瞬間が、レベルを固定する瞬間です。したがってアーミングと最初に可能なエントリーとの間には、常に少なくとも1本のローソク足の間隔があります。
- エントリーはレベルにタッチした時点の成行注文であり、保護的な決済はボックスの反対側の端ではなく、エントリー価格に対する割合で決まります。そのため取引の入口と出口が同じ単位で表され、銘柄を変えてもそのまま機能します。
使い方
.json ファイルを Designer に読み込み、バックテスターで過去データを使って実行し、実運用の前にパラメーターやブロック自体を自分の銘柄に合わせて調整してください。