Estrategia de oscilador de ciclo alterno largo-corto basada en la tasa de cambio de volumen


Fecha de creación: 2023-10-30 11:45:42 Última modificación: 2023-10-30 11:45:42
Copiar: 1 Número de Visitas: 686
1
Seguir
1617
Seguidores

Estrategia de oscilador de ciclo alterno largo-corto basada en la tasa de cambio de volumen

Descripción general

Esta estrategia, que determina la conversión del ciclo pluriespacial mediante el cálculo de la variación de la tasa de cambio de la transacción, pertenece a la estrategia de la clase de cambio de precio. Combina un indicador de la dinámica de la transacción y una banda de Brin de precios para determinar el efecto de la variación de la transacción en el precio para capturar el punto de inflexión de la tendencia.

Principio de estrategia

  1. Calcula la tasa de variación de la tasa de cambio de volumen de transacciones (la tasa de variación del indicador de la diferencia de volumen de transacciones), obteniendo un indicador basado en la dinámica de volumen de transacciones.

  2. Para nresult se calcula la banda de Bryn, y se obtiene bbr que representa el diferencial estándar del volumen de transacción.

  3. El cálculo de la banda de Brin para el precio de cierre, obtiene bbr1 que representa la diferencia entre los estándares de precios.

  4. Calcula el historial de diferencia entre ambos, es decir, la diferencia entre el estándar de movimiento de volumen de transacción menos la diferencia entre el estándar de precio, como indicador final.

  5. Cuando el hist en la parte superior lleva 0 es el punto de entrada sin cabeza, y cuando el hist en la parte inferior lleva 0 es el punto de entrada con varias cabezas.

La estrategia aumenta el efecto de liderazgo de los cambios en el volumen de transacciones en los precios al calcular el cambio en la tasa de cambio del volumen de transacciones. Cuando el volumen de transacciones se invierte y el precio no se invierte, el hist se eleva o desciende a 0, generando una señal de transacción. Puede determinar con anticipación el punto de inflexión de la tendencia de los precios.

Ventajas estratégicas

  1. La estrategia se basa en la variación de la tasa de transacción por el precio de desviación de la estrategia, que puede reflejar la tendencia de los precios en el punto de inflexión.

  2. Calcular la variación de la tasa de variación del volumen de transacción, que aumenta el efecto de la variación del volumen de transacción en el precio de liderazgo, la eficacia de la transacción es mejor.

  3. La banda de Brin, que combina el indicador de movimiento de volumen con el indicador de precios, hace que las señales de negociación sean más confiables.

  4. El procesamiento de los datos de Hist se ha hecho con un proceso de tres veces de suavización de los índices, lo que hace que la señal sea más precisa y suave.

  5. El establecimiento de una línea de sobreventa y sobrecompra, junto con una lista de límites de pérdidas y paradas de largo plazo, puede controlar eficazmente el riesgo.

  6. Se pueden personalizar más parámetros, como la longitud de la banda de Bryn, el múltiplo de la diferencia estándar, los parámetros de suavizado de datos de Hist, etc., para optimizar la estrategia.

Riesgo estratégico

  1. Los volúmenes de transacciones no siempre reflejan las transacciones reales del mercado y pueden ser manipulados.

  2. La desviación del precio de la cantidad no tiene por qué ser duradera, y es posible que el precio se rompa sin revertirse.

  3. La configuración incorrecta de los parámetros puede ocasionar transacciones frecuentes o señales incorrectas.

  4. Hay que tener cuidado con las falsas señales de tráfico.

  5. La señal de cambio de tendencia se produce cuando la tendencia es fuerte y se produce una transacción errónea.

Se puede filtrar a través de parámetros de optimización, en combinación con otros indicadores, y se puede configurar un stop loss para asegurar que el riesgo esté controlado.

Dirección de optimización de la estrategia

  1. Optimización de los parámetros de la banda de Bryn para una señal más estable.

  2. La combinación de indicadores de tendencia filtra las señales y evita el comercio en contra.

  3. Se añaden otros indicadores de confirmación, como el MACD, para evitar falsas señales.

  4. Utiliza la tecnología de la IA para optimizar los parámetros de adaptación.

  5. Se ha añadido un módulo de ajuste dinámico del Stop Loss Stop Loss y se ha optimizado la gestión de fondos.

  6. La combinación de aprendizaje automático para determinar la diferencia entre el precio y la tasa de éxito mejora la calidad de la señal.

Resumir

La estrategia calcula la tasa de cambio de la tasa de cambio de la transacción, amplificando el efecto de los cambios de la transacción en el precio, para determinar el cambio de tendencia de los precios con anticipación. El punto tiene una mayor fiabilidad y precisión en comparación con un solo indicador de la transacción. Pero también debe tener en cuenta la prevención del riesgo de manipulación de la transacción y el precio de la brecha, y controlar el riesgo en el futuro a través de la optimización de parámetros, filtrado de indicadores, etc.

Código Fuente de la Estrategia
/*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)