Estrategia de seguimiento de tendencias basada en señales de cruce de OBV y MA

OBV MA SMA
Fecha de creación: 2024-04-29 13:48:58 Última modificación: 2024-04-29 13:48:58
Copiar: 0 Número de Visitas: 802
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en señales de cruce de OBV y MA

Descripción general

La estrategia se llama “OBVious MA Strategy Basada en la señal cruzada de OBV y MA”. El núcleo de la estrategia es el uso de OBV (On Balance Volume) indicador cruzado con el promedio móvil para generar una señal de comercio. OBV puede proporcionar una señal de tendencia líder, la estrategia utiliza OBV romper el promedio móvil como entradas y salidas condiciones para capturar la tendencia.

Principio de estrategia

  1. Calcular el valor del indicador OBV: si el precio de cierre actual es mayor que la línea K anterior, el OBV se suma al volumen de transacciones actual, o se resta el volumen de transacciones.
  2. Calcule los cuatro promedios móviles de OBV: MA de entrada y salida en períodos largos, MA de entrada y salida en períodos largos, MA de entrada y salida en períodos cortos y MA de salida en períodos cortos.
  3. Se generan señales de transacción:
    • Cuando el OBV lleva un largo ciclo de MA de entrada y el filtro de dirección no está vacío, abre más posiciones
    • Cuando el OBV hace más salidas en el MA durante el ciclo largo, se equilibra la posición
    • Cuando el OBV se vacía por un corto período en el MA de entrada y el filtro de dirección no hace mucho, se vacía el depósito
    • Cuando el OBV se vacía en el MA de salida a través de un ciclo corto, la posición vacía
  4. Gestión de operaciones: si se produce una señal de reversión, se elimina la posición original y se abre una nueva posición.

Ventajas estratégicas

  1. Aprovechar al máximo las señales de tendencia de OBV para construir una posición a tiempo al comienzo de la tendencia.
  2. Separar el MA de entrada y salida para optimizar el tiempo de entrada y salida de forma independiente.
  3. La lógica del código es simple y clara, fácil de entender y mejorar.
  4. La introducción de filtros de dirección evita el uso frecuente de transacciones y reduce los costos.

Riesgo estratégico

  1. La ausencia de otros indicadores de confirmación puede generar falsas señales. Se recomienda su uso en combinación con otros indicadores.
  2. La falta de gestión de los puestos y de los límites de pérdidas, con el riesgo de aumentar las pérdidas individuales. Se pueden agregar medidas razonables de control de pérdidas y de gestión de fondos.
  3. La elección incorrecta de los parámetros puede afectar el rendimiento de la estrategia. Se debe optimizar los parámetros según las diferentes características y ciclos del mercado.

Dirección de optimización de la estrategia

  1. Se puede intentar introducir filtros de tendencia, como dirección MA, ATR, etc., para mejorar la calidad de la señal.
  2. Se pueden usar diferentes tipos de MA en OBV, como EMA, WMA, etc., para capturar tendencias de diferentes velocidades.
  3. Se puede optimizar la gestión de la posición, como la adopción de estrategias de aumento y disminución de la posición, aumentando la posición cuando la intensidad de la tendencia aumenta y reduciendo la posición cuando disminuye.
  4. Se puede combinar con otros indicadores de valor, como MVA, PVT, etc., para construir una señal conjunta para mejorar la tasa de victoria.

Resumir

Esta estrategia muestra un método simple de seguimiento de tendencias basado en el cruce de OBV y MA. La ventaja es la claridad lógica, la capacidad de capturar la tendencia a tiempo, y el control flexible de la posición por la separación de la entrada y salida de la MA. La desventaja es la falta de medidas de control de riesgo y medios de confirmación de señales.

Código Fuente de la Estrategia
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ThousandX_Trader

//@version=5
strategy(title="OBVious MA Strategy [1000X]", overlay=false, 
         initial_capital=10000, margin_long=0.1, margin_short=0.1,
         default_qty_type=strategy.percent_of_equity, default_qty_value=100,
         slippage=1, commission_type=strategy.commission.percent, commission_value=0.1)

// Direction Input ///
tradeDirection = input.string("long", title="Direction", options=["long", "short"], group = "Direction Filter")

    ///////////////////////////////////////
   //  1000X OBV MA INDICATOR           //
  ///////////////////////////////////////

// OBV Trend Length Inputs //
long_entry_length = input(190, title="Long Entry MA Length", group = "Moving Average Settings")
long_exit_length = input(202, title="Long Exit MA Length", group = "Moving Average Settings")
short_entry_length = input(395, title="Short MA Entry Length", group = "Moving Average Settings")
short_exit_length = input(300, title="Short Exit MA Length", group = "Moving Average Settings")

// OBV Calculation
obv = ta.cum(ta.change(close) >= 0 ? volume : -volume)

// Calculate OBV Moving Averages
obv_ma_long_entry = ta.sma(obv, long_entry_length)
obv_ma_long_exit = ta.sma(obv, long_exit_length)
obv_ma_short_entry = ta.sma(obv, short_entry_length)
obv_ma_short_exit = ta.sma(obv, short_exit_length)

   ///////////////////////////////////////
  //         STRATEGY RULES            //
 ///////////////////////////////////////

longCondition = ta.crossover(obv, obv_ma_long_entry) and tradeDirection != "short" and strategy.position_size <= 0
longExitCondition = ta.crossunder(obv, obv_ma_long_exit)
shortCondition = ta.crossunder(obv, obv_ma_short_entry) and tradeDirection != "long" and strategy.position_size >= 0
shortExitCondition = ta.crossover(obv, obv_ma_short_exit)

  ///////////////////////////////////////
 //         ORDER EXECUTION           //
///////////////////////////////////////

// Close opposite trades before entering new ones
if (longCondition and strategy.position_size < 0)
    strategy.close("Short Entry")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long Entry")

// Enter new trades
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

// Exit conditions
if (longExitCondition)
    strategy.close("Long Entry")

if (shortExitCondition)
    strategy.close("Short Entry")

  ///////////////////////////////////////
 //            PLOTTING               //
///////////////////////////////////////

// Plot OBV line with specified color
plot(obv, title="OBV", color=color.new(#2962FF, 0), linewidth=1)

// Conditionally plot Long MAs with specified colors based on Direction Filter
plot(tradeDirection == "long" ? obv_ma_long_entry : na, title="Long Entry MA", color=color.new(color.rgb(2, 130, 228), 0), linewidth=1)
plot(tradeDirection == "long" ? obv_ma_long_exit : na, title="Long Exit MA", color=color.new(color.rgb(106, 168, 209), 0), linewidth=1)

// Conditionally plot Short MAs with specified colors based on Direction Filter
plot(tradeDirection == "short" ? obv_ma_short_entry : na, title="Short Entry MA", color=color.new(color.rgb(163, 2, 227), 0), linewidth=1)
plot(tradeDirection == "short" ? obv_ma_short_exit : na, title="Short Exit MA", color=color.new(color.rgb(192, 119, 205), 0), linewidth=1)