
Die Strategie basiert auf der Entwicklung von Bollinger Bands, bei denen Preise über die Bollinger Bands hinweg mehr machen, während Preise über die Bollinger Bands hinweg weniger machen. Sie ist eine Trend-Tracking-Strategie.
Die Strategie beurteilt die Schwankungsbreite und die Trendrichtung des Marktes anhand der Bollinger Bands. Wenn der Preis die Bollinger Band durchbricht, wird dies als Signal für eine Trendwende angesehen. Der Eintritt wird entsprechend des Signals ausgebucht. Die Position in der Nähe der Mittellinie dient als Stop-Loss-Position.
Die Risiken können auf folgende Weise gelöst werden:
Die Strategie ermittelt die Preisentwicklung und die Resistenz in den Bollinger Bands, wobei der Einstieg in den Bollinger Bands mit einem Ausbruch in die unteren Bahnen und der Ausbruch in der Bollinger Bands mit einem Ausbruch in die mittleren Bahnen stattfindet. Die Strategie ist einfach zu verstehen und leicht umzusetzen. Sie kann durch Anpassung der Parameter oder durch Kombination mit anderen Indikatoren optimiert werden.
/*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)