BB ケルトナー 圧縮取引戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-25 17:38:08
タグ:

概要

BBケルトナー・スクリーズ (BB Keltner Squeeze) トレーディング戦略は,ボリンジャーバンドとケルトナーチャネル間の圧縮を探してトレンド逆転を特定する.これは短期的なトレード戦略である.この戦略は,ボリンジャーバンドをベース指標とケルトナーチャネルとして使用し,シグナルを確認する.価格がボリンジャーバンドを突破すると,ケルトナーチャネルとの圧縮はトレンド逆転をシグナルする.

戦略の原則

この戦略の基本原則は以下のとおりです.

  1. ボリンジャー帯は価格の変動を測定する.価格が変動状態にあるかどうかを識別するために上,中,下帯があります.

  2. Keltner Channels はボリンジャー信号を検証する. Keltner Channels は価格の変動も測定する.価格がボリンジャーバンドに近づくと,Keltner と圧縮すると波動性が高まり,潜在的逆転を意味する.

  3. トレードシグナルは圧縮に基づいて生成される. ボリンガー上帯の上部のブレイクアウトで,ケルトナー信号の下部の狭窄はロング. ボリンガー下帯下部のブレイクアウトで,ケルトナー信号上部の狭窄はショート.

  4. 中央帯はトレンド方向を示します. 中央帯の上の価格が上昇傾向を示し,下の価格が下落傾向を示します.

  5. 入口と出口は中帯方向に基づいています.中帯方向の確認信号で圧縮で長/短;方向が転じた場合は平らします.

この戦略は,逆転点を特定するために,ボリンジャー帯とケルトナーチャネルを補完します.これは平均逆転取引戦略を例示しています.

利点

この戦略の主な利点は以下の通りです.

  1. 2つのインジケーターを組み合わせることで,単一のインジケーターから誤った断裂を避けるため,信号の信頼性が向上します.

  2. 中央帯を用いて 明確なトレンドを識別します リアルタイムトレンドを直感的に追跡します

  3. 中間帯マッチに基づいた柔軟なエントリー/エグジット論理.トレンドに反して取引を避ける.

  4. 短期間の取引に適し 短期間のブレイクや圧縮を把握して 迅速な利益を得ます

  5. 直感的なビジュアルは圧縮,中間帯,MACDヒストグラムなどを強調します. 清潔なグラフィック表現.

  6. シンプルな論理と構成可能なパラメータにより 簡単に導入できます

リスク

考慮すべき主なリスクは:

  1. 引き下げリスクは 伸びた動きによるものです 引き下げは 強いトレンドの間 失敗する取引の連続を 引き起こす可能性があります

  2. 失敗したブレイクリスク 初期ボリンジャーブレイクは短命の偽物かもしれない

  3. パラメータの最適化リスク 帯やチャンネルを正しく調節しないと性能が低下します 厳格なテストが必要です

  4. 牛市リスク 長期上昇傾向で引き起こす過剰なショート 牛市期間の投資を避ける

  5. 高頻度取引リスク 短期性により,手数料やスライドによるコストが増加する可能性があります

  6. 指示器の故障リスク 極端な条件では信号が停止する可能性があります

ストップ損失,ポジションサイズ,パラメータ調整,そして堅牢な予期せぬ計画による リスクの積極的な管理が必要です

増進 の 機会

戦略を改善する方法は以下の通りです.

  1. 信号を強化するために追加指標を組み込み 勝利率を向上させます

  2. ストップ・ロスのメカニズムを追加します トレイリング・ストップやATR・ストップなどです

  3. 厳格なテストを通じてバンドとチャンネルのパラメータを最適化します

  4. 市場状況とトレンド強度に基づいてポジションサイズを調整する.

  5. パラメータ最適化,信号強化,適応のために機械学習を適用する.

  6. 強い方向性バイアスのとき,反トレンド取引を減らす.

  7. ボリュームとモメントインジケーターを補完して 信号の多様性を強化します

継続的な改善によって 戦略は様々な市場で 堅牢で一貫した短期取引システムになることができます

結論

BBケルトナー・スクリーズ戦略は,ボリンジャー帯とケルトナーチャネル間の圧縮を通じて価格逆転をキャピタライズする.高確率信号のための二重指標を組み合わせ,トレンド方向を測定するためにミドルバンドを使用し,絞り込みを通じて差し迫った逆転を特定する.この戦略は,頻繁な機会を求める短期トレーダーに適しています.しかし,引き下げ制御とパラメータチューニングは不可欠です.継続的な強化により,持続可能な短期取引戦略になる可能性があります.


/*backtest
start: 2023-09-17 00:00:00
end: 2023-09-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BB Keltner Squeeze Strategy", overlay=true, initial_capital=10000, currency='USD')
length = input(title="Length", type=input.integer, defval=20, minval=0)
src = input(close, title="Source")
bband(length, mult) =>
    sma(close, length) + mult * stdev(close, length)
keltner(length, mult) =>
    ema(close, length) + mult * ema(tr, length)


//BB
B2mult = input(2.0, minval=0.001, maxval=50, title="Band 1 StDev")
B2basis = sma(src, length)
B2dev = B2mult * stdev(src, length)
B2upper = B2basis + B2dev
B2lower = B2basis - B2dev
plot(B2basis, color=color.blue)
p1 = plot(B2upper, color=#00ffff, linewidth=2, title="Band 2SD upper")
p2 = plot(B2lower, color=#00ffff, linewidth=2, title="Band 2SD lower")

//Keltner
useTrueRange = input(true)
Kmult = input(1.5, title="Keltner Range")
Kma = ema(src, length)
Krange = useTrueRange ? tr : high - low
Krangema = ema(Krange, length)
Kupper = Kma + Krangema * Kmult
Klower = Kma - Krangema * Kmult
p5 = plot(Kupper, color=color.yellow, linewidth=2, style=plot.style_circles, title="Keltner upper")
p6 = plot(Klower, color=color.yellow, linewidth=2, style=plot.style_circles, title="Keltner lower")


e1 = (highest(high, length) + lowest(low, length)) / 2 + sma(close, length)
osc = linreg(close - e1 / 2, length, 0)
diff = bband(length, 2) - keltner(length, 1)
osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : 
   osc[0] >= 0 ? #009b9b : #ff9bff
mid_color = diff >= 0 ? color.green : color.red
fromYear = year > 2014
toYear = year < 2016


direction = 0
squeeze = Kupper > B2upper
midc = 0
midc := squeeze ? 0 : close > B2basis ? 1 : 2
midcolor = midc == 0 ? #666666 : midc == 1 ? #00ff00 : #ff0000
direction := midc[1]

plot(B2basis, color=midcolor, linewidth=4, title="BB Mid")
bgcolor(midc == 0 ? #333333 : #000000, transp=75)

if direction == 0
    if midc[1] == 0 and midc == 1
        strategy.entry("LONG", strategy.long)
        direction := 1
    else if midc[1] == 0 and midc == 2
        strategy.entry("SHORT", strategy.short)
        direction := 2
else if direction != midc
    strategy.close_all()
    direction := 0








もっと