Estratégia de oscilador de ciclo alternado longo-curto com base na taxa de variação do volume


Data de criação: 2023-10-30 11:45:42 última modificação: 2023-10-30 11:45:42
cópia: 1 Cliques: 686
1
focar em
1617
Seguidores

Estratégia de oscilador de ciclo alternado longo-curto com base na taxa de variação do volume

Visão geral

A estratégia de calcular a variação da taxa de variação do volume de negócios para julgar a conversão do ciclo de polinômios, pertence à estratégia de quantidade de preço de desvio. Combina um indicador de massa dinâmica do volume de negócios e uma faixa de Bryn sobre o preço para julgar o efeito de liderança da variação do volume de negócios sobre o preço, para capturar o ponto de inflexão da tendência.

Princípio da estratégia

  1. Calcule a variação da taxa de variação do volume de negócios (a variação da taxa de variação do indicador de diferença de volume de negócios), obtendo um indicador baseado na dinâmica do volume de negócios nresult.

  2. Para nresult, calcule a faixa de Bryn e obtenha bbr, que representa a diferença entre o padrão de potência do volume de transação.

  3. Calculando a faixa de Bryn para o preço de fechamento, obtemos bbr1 que representa a diferença entre os padrões de preço.

  4. Calcule o diferencial hist, ou seja, o diferencial padrão de volume de transação menos o diferencial padrão de preço, como o indicador final.

  5. O hist superior usa 0 como ponto de entrada de cabeça vazia e o inferior usa 0 como ponto de entrada de cabeça múltipla.

A estratégia aumenta o efeito de liderança da mudança de volume de transação sobre o preço, calculando a variação da taxa de variação do volume de transação. Quando o volume de transação se reverte e o preço ainda não se reverteu, o hist vai subir ou descer, gerando um sinal de negociação.

Vantagens estratégicas

  1. A estratégia é baseada na variação da taxa de volume de transação, o preço de desvio da estratégia, capaz de antecipar a reflexão da tendência de preços.

  2. A variação da taxa de variação do volume de transação é calculada, amplificando o efeito de liderança da variação do volume de transação sobre o preço e melhorando a eficácia da transação.

  3. A banda de Brin, que combina um indicador de volume de transação com um indicador de preço, torna os sinais de negociação mais confiáveis.

  4. O processamento de dados hist é feito com um triplo de suavização do índice, o que torna o sinal mais preciso e suave.

  5. A criação de uma linha de compra e venda excessiva, combinada com uma lista de limites de parada de longo prazo, pode efetivamente controlar o risco.

  6. Os parâmetros mais personalizáveis, como o comprimento da faixa de Bryn, o múltiplo de diferença padrão, os parâmetros de suavização de dados de Hist, etc., podem ser otimizados pela estratégia.

Risco estratégico

  1. Os dados de volume de transações não necessariamente refletem verdadeiramente as transações do mercado, podendo ser manipulados.

  2. O desvio do preço não é necessariamente permanente, mas pode ocorrer uma ruptura sem reversão.

  3. Se os parâmetros não forem ajustados corretamente, pode haver frequência de transações ou sinais de falha.

  4. Os sinais falsos podem ser usados para evitar o aparecimento de anomalias na taxa de transmissão.

  5. Os sinais de inversão produzem transações erradas quando a tendência é forte.

Pode ser filtrado através de parâmetros de otimização, em combinação com outros indicadores, e pode ser configurado um stop loss para garantir que o risco seja controlado.

Direção de otimização da estratégia

  1. Optimizar os parâmetros da faixa de Bryn para tornar o sinal mais estável.

  2. Combinação de indicadores de tendência para filtragem de sinais e evitar negociação contracorrente.

  3. Adicionar a confirmação de outros indicadores, como MACD, para evitar falsos sinais.

  4. Otimizar os parâmetros de adaptação usando tecnologia de IA.

  5. Adição de módulo de ajuste dinâmico do Stop Loss Stop Stop e otimização da gestão de fundos.

  6. A combinação de aprendizagem de máquina com o julgamento do preço de desvio da taxa de sucesso aumenta a qualidade do sinal.

Resumir

A estratégia calcula a taxa de variação da taxa de variação do volume de transação, amplificando o efeito de liderança da variação do volume de transação sobre o preço, para determinar a mudança de tendência do preço com antecedência. Comparado a um único indicador de volume de transação, o ponto possui maior confiabilidade e precisão. Mas também precisa ter cuidado para evitar o risco de manipulação do volume de transação e o preço de ruptura, controlando o risco futuro por meio de otimização de parâmetros, filtragem de indicadores e outros meios.

Código-fonte da estratégia
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
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/
// © tathal and special thanks to oakwhiz for his porting of my custom volume indicator

//@version=5
strategy('Volume Difference Delta Cycle Oscillator', 'VDDC Osc', default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=5000)

startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31)
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12)
startYear = input.int(title='Start Year', defval=2010, minval=1800, maxval=2100)

endDate = input.int(title='End Date', defval=31, minval=1, maxval=31)
endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12)
endYear = input.int(title='End Year', defval=2021, minval=1800, maxval=2100)

// Normalize Function
normalize(_src, _min, _max) =>
    // Normalizes series with unknown min/max using historical min/max.
    // _src      : series to rescale.
    // _min, _min: min/max values of rescaled series.
    var _historicMin = 10e10
    var _historicMax = -10e10
    _historicMin := math.min(nz(_src, _historicMin), _historicMin)
    _historicMax := math.max(nz(_src, _historicMax), _historicMax)
    _min + (_max - _min) * (_src - _historicMin) / math.max(_historicMax - _historicMin, 10e-10)


// STEP 2:
// Look if the close time of the current bar
// falls inside the date range
inDateRange = true

// Stop loss & Take Profit Section     
l_sl_inp = input(2.0, title='Long Stop Loss %') / 100
l_tp_inp = input(4.0, title='Long Take Profit %') / 100

l_stop_level = strategy.position_avg_price * (1 - l_sl_inp)
l_take_level = strategy.position_avg_price * (1 + l_tp_inp)

s_sl_inp = input(2.0, title='Short Stop Loss %') / 100
s_tp_inp = input(4.0, title='Short Take Profit %') / 100

s_stop_level = strategy.position_avg_price * (1 + s_sl_inp)
s_take_level = strategy.position_avg_price * (1 - s_tp_inp)

src = close

//  Volume Differnce Indicator Delta

float change_src = ta.change(src)
float i_obv = ta.cum(change_src > 0 ? volume : change_src < 0 ? -volume : 0 * volume)
float i_pvt = ta.pvt

float result = ta.change(i_obv - i_pvt)

float nresult = ta.ema(normalize(result, -1, 1), 20)


// Volume Differnce Indicator Delta %B
length = input.int(20, minval=1, title='Volume Bands Length')
mult = input.float(2.0, minval=0.001, maxval=50, title='Volume Bands StdDev')
basis = ta.ema(nresult, length)
dev = mult * ta.stdev(nresult, length)
upper = basis + dev
lower = basis - dev
bbr = (nresult - lower) / (upper - lower)

// Normal %B, Based on close

l1 = input.int(20, minval=1, title='Bollinger Bands Length')
src2 = close
mult1 = input.float(2.0, minval=0.001, maxval=50, title='Bollinger Bands StdDev')
basis1 = ta.sma(src2, l1)
dev1 = mult1 * ta.stdev(src2, l1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
bbr1 = (src - lower1) / (upper1 - lower1)

/// Final Output Line

hist = ta.ema(ta.ema(ta.ema(bbr1 - bbr, input(2, title='Hist Smoothing Factor #1')), input(2, title='Hist Smoothing Factor #2')), input(2, title='Hist Smoothing Factor #3'))

/// Overbought / Oversold Line Creation
oversold = input(-.1)
overbought = input(.4)
hline(oversold, linewidth=2, color=color.new(#81c784, 62))
hline(overbought, linewidth=2, color=color.new(#c2185b, 38))

/// Long & Short Conditions

short = hist > overbought
long = hist < oversold

/// Colors & Plotting
histColor = hist >= 0 ? hist[1] < hist ? #26A69A : #B2DFDB : hist[1] < hist ? #FFCDD2 : #EF5350
plot(hist, title='Histogram', style=plot.style_columns, color=color.new(histColor, 0))

CrossBgColor = long ? color.new(#81c784, 62) : short ? color.new(#c2185b, 38) : na
bgcolor(color.new(CrossBgColor, 90))

/// Strategy Methodology

if inDateRange
    strategy.entry('long', strategy.long, when=long, stop=l_stop_level, limit=l_take_level)

if inDateRange and strategy.position_size > 0
    strategy.close_all(when=short)

if inDateRange
    strategy.entry('short', strategy.short, when=short, stop=s_stop_level, limit=s_take_level)

if inDateRange and strategy.position_size < 0
    strategy.close_all(when=long)