
이 전략은 부린 띠 지표 설계에 기반하여, 가격이 부린 띠를 뚫고 궤도에 올랐을 때 더 많이 하고, 가격이 부린 띠를 뚫고 궤도에 내려갈 때 공백하고, 트렌드 추적 전략에 속한다.
이 전략은 부린 띠를 통해 시장의 변동 범위와 트렌드 방향을 판단하고, 가격이 부린 띠를 뚫고 하향 궤도에 올랐을 때, 트렌드 반전의 신호로 간주하고, 이 신호에 따라 입장은 더 많은 공백을 한다. 중도 궤도 근처에서 손실 위치로, 중도 궤도를 뚫고 진출한다.
위험 해결 방법:
이 전략은 부린띠 지표를 통해 가격 트렌드와 지지 저항 지점을 판단하고, 부린띠 상의 하향 레일 돌파점으로 입시하고, 상한점은 부린띠 중간에 있다. 전략 논리는 간단하고 명확하며, 쉽게 구현할 수 있다. 파라미터를 조정하거나 다른 지표와 조합하여 최적화할 수 있으며, 트렌드 상황에서 더 효과적이다.
/*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)