ボリンジャー・バンドのブレイク・トレード戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-21 11:35:14
タグ:

img

概要

この戦略は,ボリンジャーバンド指標に基づいて設計されています.価格は上部バンドを突破するとロングになり,価格が下部バンドを突破するとショートになります.これはトレンドフォロー戦略に属します.

戦略の論理

  1. ボリンジャー・バンドの中帯,上帯,下帯を計算する
  2. 閉店価格が上位帯を突破すると,ロング
  3. 閉じる価格が下帯を突破すると,ショート
  4. 出口規則: 価格が中間帯を突破するとロングポジションを閉じる,価格が中間帯を突破するとショートポジションを閉じる

この戦略は,ボリンジャーバンドを使用して市場の変動範囲とトレンド方向を決定する.価格がボリンジャーバンドの上または下帯を突破すると,それはエントリーのためのトレンド逆転信号とみなされる.中間帯の周りのエリアはストップ損失ポジションとして使用される.価格が中間帯を突破したとき,出口ポジション.

利点分析

  1. 市場傾向とサポート/レジスタンスレベルを決定するためにボリンジャー・バンド指標を使用する
  2. ボリンジャー・バンドの破綻の確率は高い
  3. 明確な入国・退出規則

リスク分析

  1. ボリンジャー・バンドからの誤ったブレイクシグナルのリスク
  2. 大幅な価格変動でストップ損失が大きい

解決策:

  1. 傾向を確認するために他の指標と組み合わせる
  2. ボリンジャー・バンドの範囲を拡大するためにパラメータを調整する

オプティマイゼーションの方向性

  1. 不必要なリバース取引を避けるためにトレンド指標と組み合わせる
  2. パラメータサイズを最適化するためにボリンジャーバンドのパラメータを動的に調整します.

概要

この戦略は,ボリンジャーバンド指標を使用して価格トレンドとサポート/レジスタンスレベルを決定する.ボリンジャーバンドのブレイクアウトポイントで入力し,中間帯でストップロスを設定する.戦略論理はシンプルで明確で,実装が簡単です.パラメータを調整したり,他の指標と組み合わせたりすることで最適化され,トレンドする市場でうまく機能します.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FFFDBTC", overlay=true,initial_capital = 100,commission_type =strategy.commission.percent,commission_value= 0.15,default_qty_value = 100,default_qty_type = strategy.percent_of_equity)
// === INPUT BACKTEST RANGE ===
FromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input.int(defval=1972, title="From Year", minval=1972)
ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input.int(defval=9999, title="To Year", minval=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() => true
// Definindo tamanho da posição
position_size = strategy.equity
// Definir parâmetros das Bandas de Bollinger
length = input.int(51, "Comprimento")
mult = input.float(1.1, "Multiplicador")

// Calcular as Bandas de Bollinger
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
// Definir condições de entrada e saída
entrada_na_venda = low < lower
saida_da_venda = high > lower and strategy.position_size < 0
entrada_na_compra = high > upper
saida_da_compra = low < upper and strategy.position_size > 0
shortCondition = close[1] < lower[1] and close > lower and close < basis
longCondition = close[1] > upper[1] and close < upper and close > basis

// Entrar na posição longa se a condição longCondition for verdadeira
if ((entrada_na_compra) and window() )
    strategy.entry("Buy", strategy.long)
//saida da compra
if (saida_da_compra)
    strategy.close("Buy")
//entrada na venda
if ((entrada_na_venda) and window() )
    strategy.entry("Sell", strategy.short)
//saida da venda
if (saida_da_venda)
    strategy.close("Sell")
if ((longCondition) and window())
    strategy.entry("Long", strategy.long)

// Entrar na posição curta se a condição shortCondition for verdadeira
if ((shortCondition) and window())
    strategy.entry("Short", strategy.short)

// Definir a saída da posição

strategy.exit("Exit_Long", "Long", stop=ta.sma(close, length), when = close >= basis)
strategy.exit("Exit_Short", "Short", stop=ta.sma(close, length), when = close <= basis)

// Desenhar as Bandas de Bollinger no gráfico
plot(basis, "Média", color=#2962FF, linewidth=2)
plot(upper, "Upper", color=#BEBEBE, linewidth=2)
plot(lower, "Lower", color=#BEBEBE, linewidth=2)

もっと