Estratégia de tendência progressiva BB KC


Data de criação: 2024-01-26 15:10:41 última modificação: 2024-01-26 15:10:41
cópia: 0 Cliques: 725
1
focar em
1617
Seguidores

Estratégia de tendência progressiva BB KC

Visão geral

Esta estratégia usa um conjunto de sinais de Brin e Kate para identificar tendências de mercado. A Brin é uma ferramenta de análise técnica que define canais de acordo com a amplitude de flutuação dos preços. A Kate é um indicador técnico que combina a volatilidade dos preços com a tendência para determinar se há apoio ou pressão.

Princípio da estratégia

  1. O meio-carril, o trem superior e o trem inferior de Brin, com 20 ciclos, são calculados com uma largura de banda de 2 vezes a diferença padrão.
  2. O meio-carril, o carril superior e o carril inferior do Kate de 20 ciclos são calculados e a largura de banda é determinada por 2,2 vezes o alcance real das oscilações.
  3. Faça mais quando Kate estiver na faixa de Brin na faixa de Brin e o volume de transação for maior do que a média de 10 ciclos.
  4. Quando o Kate atravessa a faixa de Brin abaixo da linha e o volume de transações é maior do que a média de 10 ciclos, faça um vazio.
  5. Se 20 linhas K não se retirarem após a abertura da posição, o stop loss forçado é retirado.
  6. Depois de fazer mais, configure um stop loss de 1,5% e um stop loss de -1,5% depois de fazer curto; depois de fazer mais, configure um stop loss de 2% e um stop loss de -2% depois de fazer curto.

A estratégia baseia-se principalmente na faixa de Bryn para determinar o alcance e a intensidade das oscilações. Usando a verificação auxiliada por Kate, a combinação de dois indicadores com diferentes parâmetros, mas de natureza semelhante, pode aumentar a precisão do sinal. A introdução de volumes de transação também pode reduzir efetivamente os sinais inválidos.

Análise de vantagens

  1. A combinação dos dois indicadores, o Brin Belt e o Kate Line, aumentou a precisão dos sinais de negociação.
  2. A combinação de indicadores de volume de transação pode efetivamente reduzir os sinais de invalidez de frequentes colisões no mercado.
  3. Estabelecer um mecanismo de stop loss e rastreamento de stop loss para controlar o risco de forma eficaz.
  4. A paragem forçada após o sinal de invalidez é definida para parar a paragem rapidamente.

Análise de Riscos

  1. As faixas de Bryn e as linhas de Kate são indicadores baseados em médias móveis e combinados com cálculos de volatilidade, que são suscetíveis a erros de sinalização em situações de turbulência.
  2. O mecanismo de não-retorno de lucro, em que o bloqueio repetido pode levar a perdas excessivas.
  3. Os sinais de reversão são mais comuns, e é fácil perder oportunidades de tendência após ajustar os parâmetros. A amplitude de stop loss pode ser relaxada de forma apropriada ou os sinais de filtragem de indicadores auxiliares, como MACD, podem ser adicionados para reduzir o risco de sinais errados.

Direção de otimização

  1. Pode-se testar o impacto de diferentes parâmetros na taxa de retorno da estratégia, como o comprimento da linha média ajustada, o múltiplo da diferença padrão e outros parâmetros.
  2. Pode-se adicionar outros indicadores de julgamento para determinar o sinal, como o KDJ indicador ou MACD indicador auxiliar.
  3. Os parâmetros podem ser otimizados automaticamente por meio de métodos de aprendizado de máquina.

Resumir

Esta estratégia utiliza um conjunto de indicadores de Brin e Kate para identificar tendências de mercado e é complementada por indicadores de volume de transação para verificar sinais. A estratégia pode ser ainda mais fortalecida por meio de otimização de parâmetros, adição de outros indicadores técnicos, etc. A estratégia pode ser adaptada a uma situação de mercado mais ampla.

Código-fonte da estratégia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jensenvilhelm

//@version=5
strategy("BB and KC Strategy", overlay=true)

// Define the input parameters for the strategy, these can be changed by the user to adjust the strategy
kcLength = input.int(20, "KC Length", minval=1) // Length for Keltner Channel calculation
kcStdDev = input.float(2.2, "KC StdDev") // Standard Deviation for Keltner Channel calculation
bbLength = input.int(20, "BB Length", minval=1) // Length for Bollinger Bands calculation
bbStdDev = input.float(2, "BB StdDev") // Standard Deviation for Bollinger Bands calculation
volumeLength = input.int(10, "Volume MA Length", minval=1) // Length for moving average of volume calculation
stopLossPercent = input.float(1.5, "Stop Loss (%)") // Percent of price for Stop loss 
trailStopPercent = input.float(2, "Trail Stop (%)") // Percent of price for Trailing Stop
barsInTrade = input.int(20, "Bars in trade before exit", minval = 1) // Minimum number of bars in trade before considering exit

// Calculate Bollinger Bands and Keltner Channel
[bb_middle, bb_upper, bb_lower] = ta.bb(close, bbLength, bbStdDev) // Bollinger Bands calculation
[kc_middle, kc_upper, kc_lower] = ta.kc(close, kcLength, kcStdDev) // Keltner Channel calculation

// Calculate moving average of volume
vol_ma = ta.sma(volume, volumeLength) // Moving average of volume calculation

// Plotting Bollinger Bands and Keltner Channels on the chart
plot(bb_upper, color=color.red) // Bollinger Bands upper line
plot(bb_middle, color=color.blue) // Bollinger Bands middle line
plot(bb_lower, color=color.red) // Bollinger Bands lower line
plot(kc_upper, color=color.rgb(105, 255, 82)) // Keltner Channel upper line
plot(kc_middle, color=color.blue) // Keltner Channel middle line
plot(kc_lower, color=color.rgb(105, 255, 82)) // Keltner Channel lower line

// Define entry conditions: long position if upper KC line crosses above upper BB line and volume is above MA of volume
// and short position if lower KC line crosses below lower BB line and volume is above MA of volume
longCond = ta.crossover(kc_upper, bb_upper) and volume > vol_ma // Entry condition for long position
shortCond = ta.crossunder(kc_lower, bb_lower) and volume > vol_ma // Entry condition for short position

// Define variables to store entry price and bar counter at entry point
var float entry_price = na // variable to store entry price
var int bar_counter = na // variable to store bar counter at entry point

// Check entry conditions and if met, open long or short position
if (longCond)
    strategy.entry("Buy", strategy.long) // Open long position
    entry_price := close // Store entry price
    bar_counter := 1 // Start bar counter
if (shortCond)
    strategy.entry("Sell", strategy.short) // Open short position
    entry_price := close // Store entry price
    bar_counter := 1 // Start bar counter

// If in a position and bar counter is not na, increment bar counter
if (strategy.position_size != 0 and na(bar_counter) == false)
    bar_counter := bar_counter + 1 // Increment bar counter

// Define exit conditions: close position if been in trade for more than specified bars
// or if price drops by more than specified percent for long or rises by more than specified percent for short
if (bar_counter > barsInTrade) // Only consider exit after minimum bars in trade
    if (bar_counter >= barsInTrade)
        strategy.close_all() // Close all positions
    // Stop loss and trailing stop
    if (strategy.position_size > 0)
        strategy.exit("Sell", "Buy", stop=entry_price * (1 - stopLossPercent/100), trail_points=entry_price * trailStopPercent/100) // Set stop loss and trailing stop for long position
    else if (strategy.position_size < 0)
        strategy.exit("Buy", "Sell", stop=entry_price * (1 + stopLossPercent/100), trail_points=entry_price * trailStopPercent/100) // Set stop loss and trailing stop for short position