이 전략은 볼링거 밴드 지표에 기초하여 설계되었습니다. 가격이 상단역을 통과할 때 길게 가고, 가격이 하단역을 통과할 때 짧게됩니다. 트렌드를 따르는 전략에 속합니다.
이 전략은 시장의 변동 범위와 트렌드 방향을 결정하기 위해 볼링거 밴드를 사용합니다. 가격이 볼링거 밴드의 상부 또는 하부 밴드를 통과하면 진입을위한 트렌드 역전 신호로 간주됩니다. 중간 밴드의 주변 지역은 스톱 로스 위치로 사용됩니다. 가격이 중간 밴드를 통과 할 때 출구 위치.
해결책:
이 전략은 가격 트렌드 및 지원 / 저항 수준을 결정하기 위해 볼링거 밴드 지표를 사용합니다. 볼링거 밴드 브레이크아웃 포인트에 입력하고 중간 밴드에서 스톱 로스를 설정합니다. 전략 논리는 간단하고 명확하며 구현하기가 쉽습니다. 매개 변수를 조정하거나 다른 지표와 결합하여 최적화 할 수 있으며 트렌딩 시장에서 잘 작동합니다.
/*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)