バックテストのバーの拡大モードとは?

Premiumアカウントをご利用の方は、バーの拡大モードの機能を使用することで、ストラテジーのバックテストでより現実的な注文の約定を得ることができるようになりました。このツールは、日中足を解析して、バー内の価格の動きに関するより詳細な情報を取得し、より正確な約定を可能にします。このモードを選択すると、ブローカーエミューレーターがヒストリカルバーでOHLC値のみを利用して仮定する価格の動きを、バーの拡大モードが置き換えます。

バーの拡大モードで使用される日中の時間足は、チャートの時間足に合わせて動的に調整されます。以下の表は、チャートの時間足と使用される日中の時間足を下位の時間足から一覧にしたものです:

チャートの時間足 = T

使用される日中の時間足

1S < T < 30S

1S

30S <= T < 5

5S

5 <= T < 30

15S

30 <= T < 60

1

60 <= T < 240

5

240 <= T < D

15

D <= T < W

60

W <= T < 2W

120

T >= 2W

D

表1. 使用される日中の時間足

こちらはバーの拡大モードを利用せずにストップ注文を行うストラテジーの例です:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = false)

if bar_index  == 10381
strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

ブローカーエミュレーターは、バーのインデックスが #10381 のバーで逆指値注文を出し、stop = 157.0 の条件が満たされると、すぐに次のバーで価格157.0の注文が約定します。ブローカーエミュレーターは、バー内で価格が「始値」から「安値」、そして「高値」(ここでエントリー注文がトリガー)から「終値」に動いたと仮定します。数バー後(日足では11日間後)、stop price = 156.0 のポジションをエグジットする条件がトリガーされています:

バーの拡大モードが有効な場合(パラメーター use_bar_magnifier = true の場合)、エグジットとエントリー価格は変わりませんが、ポジションのエグジットはエントリーが発生したバーと同じバー内で行われます:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = true)

if bar_index  == 10381
strategy.entry("Long", strategy.long, stop = 157.0)
strategy.exit("Exit", stop = 156.0)

同じシンボルの下位足のチャート(この場合、先の一覧表によると60分足)でバー #10382 に対応する時間範囲を確認すると、1時間足では、157.0に到達してエントリーが行われた後、価格が156.0に下落し、stop = 156.0 の条件を満たしたことが分かります:

バーの拡大モードをオンにすると、ブローカーエミュレーターはバックテスト中に下位の時間足の価格変化にアクセスできるようになり、そのタイミングでストラテジーをフォワードテストしているときの動作により近くなります。

バーの拡大モードは、ストラテジーの「設定」ダイアログでオン/オフを切り替えることができます:

このオプションには制限があることにご注意ください: ストラテジーは下位の時間足に100,000本以上のバーを要求することはできません。多くのヒストリカルデータを持つシンボルの場合(チャート上のバーの数 * チャートのバーあたりの下位足のバーの数 > 100000)の場合、チャート上の初期のトレードはバーの拡大モードの適用外となる可能性があります。チャートの直近のデータから数えて、バーの拡大モードの適用対象となるるバーの数は、おおよそ次のように計算することができます:

直近のバーのインデックス - (100000 / ( 1 / チャートのバー毎の下位足のバーの数)

下位の時間足のバーの数はバーごとに異なる可能性がある為、計算の値はおおよその目安となります。