Estrategia basada en el volumen y la energía

El autor:¿ Qué pasa?, fecha: 2024-01-04 15:38:54
Las etiquetas:

img

Resumen general

La estrategia impulsada por la energía de volumen juzga los cambios de sentimiento de los participantes del mercado mediante el análisis de los cambios en el volumen de negociación. Divide el volumen de negociación en volumen alcista y volumen bajista, calcula su promedio móvil ponderado, genera señales alcistas cuando el volumen alcista domina y genera señales bajistas cuando el volumen bajista domina.

Estrategia lógica

La estrategia primero divide el volumen de negociación de cada candelabro en volumen alcista y volumen bajista en función de la relación entre el precio de cierre y el precio de apertura. Si el precio de cierre es mayor que el precio de apertura, todo el volumen de negociación del candelabro es un volumen alcista. Si el precio de cierre es menor que el precio de apertura, el volumen alcista se calcula de acuerdo con la relación de (precio más alto - precio de apertura) / (precio más alto - precio más bajo), y el resto es un volumen bajista.

Luego calcula el promedio móvil ponderado del volumen alcista y bajista de los últimos n candelabros, respectivamente. Si el promedio móvil del volumen alcista es mayor que el volumen bajista, y su diferencia dividida por el volumen alcista es mayor que un umbral preestablecido, se genera una señal alcista.

Si no hay una diferencia significativa entre el volumen alcista y bajista, indica que el mercado se encuentra actualmente en consolidación.

Análisis de ventajas

  • Utilizar la información sobre el volumen para juzgar el sentimiento de los participantes en el mercado con base teórica
  • Identificar automáticamente las zonas de consolidación para evitar que se pierdan señales importantes
  • Los parámetros personalizables se adaptan a diferentes productos comerciales y plazos
  • Puede identificar señales alcistas y bajistas por separado o seguir solo un lado

Análisis de riesgos

  • Los datos sobre el volumen de operaciones pueden manipularse
  • Los parámetros predeterminados pueden no ser adecuados para todos los productos, se necesita optimización
  • Los parámetros de identificación de la consolidación incorrectos pueden fallar señales
  • Las señales falsas pueden aparecer en períodos cortos.

Métodos como la optimización de parámetros y la combinación con otros indicadores pueden ayudar a reducir los riesgos.

Direcciones de optimización

  • Prueba de diferentes métodos de cálculo del volumen de operaciones
  • Pruebe diferentes tipos de promedios móviles, como EMA, SMMA, etc.
  • Optimizar el período de cálculo del volumen medio
  • Optimizar los parámetros para identificar la consolidación
  • Combinar con otros indicadores técnicos para filtrar las señales

Resumen de las actividades

La estrategia impulsada por la energía de volumen juzga inteligentemente la distribución del volumen de operaciones alcista y bajista para determinar el sentimiento del mercado y los cambios de tendencia. Se puede usar sola o combinada con otras estrategias. Se pueden lograr mejoras adicionales en la estabilidad y la rentabilidad a través de la optimización de parámetros y la combinación de indicadores.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 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/
// © Shuttle_Club
//@version=5

strategy('Volume fight strategy', default_qty_type=strategy.cash, default_qty_value=10000, currency='USD', commission_value=0.04, calc_on_order_fills=false, calc_on_every_tick=false, initial_capital=10000)

direction = input.string('ANY', 'Direction', options=['LONG', 'SHORT', 'ANY'], tooltip='Select the direction of trade.\n\nВыберите направление торговли.')
ma = input.int(11, 'Search_range', minval=1, tooltip='The range of estimation of the predominance of bullish or bearish volume (quantity bars). The smaller the TF, the higher the range value should be used to filter out false signals.\n\nДиапазон оценки преобладания бычьего или медвежьего объема (количество баров). Чем меньше ТФ, тем выше следует использовать значение диапазона, чтобы отфильтровать ложные сигналы.')
delta = input.float(15, 'Smoothing_for_flat,%', step=0.5, minval=0, tooltip='Smoothing to reduce false signals and highlight the flat zone. If you set the percentage to zero, the flat zones will not be highlighted, but there will be much more false signals, since the indicator becomes very sensitive when the smoothing percentage decreases.\n\nСглаживание для уменьшения ложных сигналов и выделения зоны флета. Если выставить процент равным нулю, то зоны флета выделяться не будут, но будет гораздо больше ложных сигналов, так как индикатор становится очень чувствительным при снижении процента сглаживания')
bgshow = input.bool(true, 'Show background zones', tooltip='Show the color background of the current trading zone.\n\nПоказывать цветовой фон текущей торговой зоны.')
all_signal_show = input.bool(false, 'Show each setup in zone', tooltip='Show every signals into trading zone.\n\nПоказывать каждый сигнал внутри торговой зоны.')

/////   CALCULATION
bull_vol = open < close ? volume : volume * (high - open) / (high - low)  //determine the share of bullish volume
bear_vol = open > close ? volume : volume * (open - low) / (high - low)  //determine the share of bearish volume
avg_bull_vol = ta.vwma(bull_vol, ma)  //determine vwma
avg_bear_vol = ta.vwma(bear_vol, ma)
diff_vol = ta.sma(avg_bull_vol / volume - 1 - (avg_bear_vol / volume - 1), ma)  //normalize and smooth the values
vol_flat = math.abs(avg_bull_vol + avg_bear_vol) / 2  //determine average value for calculation flat-filter

/////   SIGNALS
up = int(na), up := nz(up[1])
dn = int(na), dn := nz(dn[1])
bull = avg_bull_vol > avg_bear_vol and vol_flat / avg_bull_vol < 1 - delta / 100  //determine up zones
bear = avg_bull_vol < avg_bear_vol and vol_flat / avg_bear_vol < 1 - delta / 100  //determine dn zones

if bull
    up += 1, dn := 0
    dn
if bear
    dn += 1, up := 0
    up
if not bull and not bear and all_signal_show
    up := 0, dn := 0
    dn

/////   PLOTTING
plotshape(bull and up == 1, 'UP', location=location.bottom, style=shape.triangleup, color=color.new(color.green, 0), size=size.tiny)
plotshape(bear and dn == 1, 'DN', location=location.top, style=shape.triangledown, color=color.new(color.red, 0), size=size.tiny)
bgcolor(title='Trading zones', color=bgshow and avg_bull_vol > avg_bear_vol and vol_flat / avg_bull_vol < 1 - delta / 100 ? color.new(color.green, 85) : bgshow and avg_bull_vol < avg_bear_vol and vol_flat / avg_bear_vol < 1 - delta / 100 ? color.new(color.red, 85) : na)
plot(diff_vol, 'Volume difference', style=plot.style_area, color=avg_bull_vol > avg_bear_vol and vol_flat / avg_bull_vol < 1 - delta / 100 ? color.new(color.green, 0) : avg_bull_vol < avg_bear_vol and vol_flat / avg_bear_vol < 1 - delta / 100 ? color.new(color.red, 0) : color.new(color.gray, 50))

strategy.close('Short', comment='close', when=bull and up == 1)
strategy.close('Long', comment='close', when=bear and dn == 1)
strategy.entry('Long', strategy.long, when=direction != 'SHORT' and bull and up == 1)
strategy.entry('Short', strategy.short, when=direction != 'LONG' and bear and dn == 1)

if bull and up==1
    alert('Bullish movement! LONG trading zone', alert.freq_once_per_bar_close)
if bear and dn==1
    alert('Bearish movement! SHORT trading zone', alert.freq_once_per_bar_close)
    

Más.