Estratégia de rastreamento de reversão baseada no oscilador de banda de volatilidade


Data de criação: 2023-11-23 13:42:03 última modificação: 2023-11-23 13:42:03
cópia: 0 Cliques: 670
1
focar em
1617
Seguidores

Estratégia de rastreamento de reversão baseada no oscilador de banda de volatilidade

Visão geral

Esta estratégia é baseada no indicador CCT Bollinger Band Oscillator, desenvolvido por Steve Karnish, e permite a negociação de reversão através da identificação de preços que quebram a linha média e combinam o mecanismo de retração.

Princípio da estratégia

A estratégia usa preços altos como dados de origem e calcula os valores do oscilador da banda de ondas CCT. O valor do oscilador oscila entre 200 e 200, 0 representa o preço médio menos 2 vezes o diferencial padrão e 100 representa o preço médio mais 2 vezes o diferencial padrão. A estratégia gera um sinal de negociação quando o oscilador cruza ou atravessa a sua linha média EMA.

Análise de vantagens

  • O uso de um indicador de vibração de banda CCT com um certo impacto no mercado pode reduzir os falsos sinais
  • Combinação de sinais de filtragem de condições médias e marginais da EMA para evitar a produção de transações inválidas em excesso durante a oscilação
  • O uso de um mecanismo de suspensão de perda de retorno, que pode parar o prejuízo em tempo hábil quando os prejuízos são excessivos

Análise de Riscos

  • O próprio oscilante CCT produz um certo atraso, perdendo o melhor momento para a reversão do preço
  • Margens muito altas e períodos EMA muito curtos aumentam a frequência e o risco de negociação
  • Retirando a configuração de suspensão de perdas, que é muito flexível, aumenta o risco de perdas

Métodos de controle de risco:

  • Ajustar o ciclo médio do EMA, usando filtros de ciclo mais longo
  • Ajuste adequado da margem para equilibrar riscos e benefícios
  • Reduzir a percentagem de posições para controlar as perdas individuais
  • Redução apropriada do intervalo de retração e aceleração do tempo de parada

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Substituindo outros indicadores de flutuação, como o indicador de bandas de Brin, o canal de Keltner, etc., para determinar pontos de compra e venda
  2. Adicionar outros indicadores de filtragem, como MACD, RSI, etc., para garantir a confiabilidade dos sinais de negociação
  3. Parâmetros de otimização automática com algoritmos de aprendizagem de máquina, como períodos de EMA, margens, etc.
  4. Aumento de mecanismos de gestão de posições, como posições de proporção fixa, Martingale, etc., para controlar o risco de negociação
  5. Optimizar o mecanismo de suspensão de perdas, usando oscilação ou ATR

Resumir

Esta estratégia é, em geral, uma estratégia de negociação quantitativa baseada em indicadores de banda de oscilação do CCT para determinar a inversão de preços. Tem certas vantagens, mas também há espaço para melhorias. A estabilidade e a lucratividade da estratégia podem ser aumentadas ainda mais por meio de otimização de parâmetros, aumento de indicadores de filtragem, uso de engenharia de recursos e introdução de aprendizado de máquina.

Código-fonte da estratégia
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 11:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// This strategy is based on the CCT Bollinger Band Oscillator (CCTBO) 
// developed by Steve Karnish of Cedar Creek Trading and coded by LazyBear.
// Indicator is available here https://www.tradingview.com/v/iA4XGCJW/

strategy("Strategy CCTBBO v2 | Fadior", shorttitle="Strategy CCTBBO v2", pyramiding=0, precision=2, calc_on_order_fills=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false)

length_stddev=input(title="Stddev loopback period",defval=20)
length_ema=input(title="EMA period", defval=2)
margin=input(title="Margin", defval=0, type=float, step=0.1)
price = input(title="Source", defval=high)
digits= input(title="Number of digits",defval=2,step=1,minval=2,maxval=6)
offset = input(title="Trailing offset (0.01 = 1%) :", defval=0.013, type=float, step=0.01)
pips= input(title="Offset in ticks ?",defval=false,type=bool)

src=request.security(syminfo.tickerid, "1440", price)

cctbbo=100 * ( src + 2*stdev( src, length_stddev) - sma( src, length_stddev ) ) / ( 4 * stdev( src, length_stddev ) )

ul=hline(150, color=gray, editable=true)
ll=hline(-50, color=gray)
hline(50, color=gray)
fill(ul,ll, color=green, transp=90)
plot(style=line, series=cctbbo, color=blue, linewidth=2)
plot(ema(cctbbo, length_ema), color=red)

d = digits == 2 ? 100 : digits == 3 ? 1000 : digits == 4 ? 10000 : digits == 5 ? 100000 : digits == 6 ? 1000000 : na

TS = 1
TO = pips ? offset : close*offset*d
CQ = 100
TSP = TS
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) > margin
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Close Long", "Long", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)


shortCondition = crossunder(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) < -margin
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Close Short", "Short", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)