Estrategia piramidal basada en el indicador OBV


Fecha de creación: 2023-12-08 15:58:29 Última modificación: 2023-12-08 15:58:29
Copiar: 0 Número de Visitas: 705
1
Seguir
1621
Seguidores

Estrategia piramidal basada en el indicador OBV

Descripción general

La estrategia se llama la pirámide de la pirámide OBV, que diseña una estrategia de apertura de posición basada en el indicador OBV, y utiliza una estrategia de alza de posición piramidal, que aumenta la posición varias veces en lotes después de que aparece una tendencia y sigue la tendencia para obtener ganancias.

Principio de estrategia

La estrategia utiliza el indicador OBV para determinar la dirección de la tendencia. El indicador OBV se basa en el cambio en el volumen de transacciones para determinar la tendencia de los precios, y el cambio en el volumen de transacciones refleja la actitud de los participantes en el mercado. Cuando el eje 0 en el OBV indica un aumento en el camino de compra, se forma una tendencia de múltiples cabezas; cuando el eje 0 en el OBV indica un aumento en el camino de venta, se forma una tendencia de cabeza en blanco.

La estrategia confirma la formación de una tendencia múltiple mediante la determinación de si el OBV cruza el eje 0 o no. Cuando se forma una tendencia múltiple, se establece una regla de alza piramidal, con un máximo de 7 alzas. Para obtener ganancias mediante el seguimiento de la tendencia, se establece un mecanismo de salida de stop-loss.

Análisis de las ventajas

La mayor ventaja de esta estrategia es que puede capturar tendencias, seguir el funcionamiento de las tendencias a través de la pirámide de aumento de la posición, y tener un gran potencial de ganancias. Además, la estrategia tiene un control de riesgo y una configuración de stop loss.

En concreto, las ventajas se reflejan en:

  1. El uso de OBV para determinar la dirección de la tendencia es preciso.
  2. La pirámide de la adición permite seguir la tendencia y obtener ganancias.
  3. Configuración de un riesgo de control de pérdida de potencia de frenado.
  4. La lógica de la estrategia es simple, clara y fácil de entender.

Análisis de riesgos

El principal riesgo de esta estrategia proviene de dos aspectos:

  1. El error de juicio de la OBV, causando la pérdida de oportunidades o la construcción de posiciones erróneas;
  2. El riesgo es mayor si se arriesga demasiado.

Resolución de las mismas:

  1. Optimización de los parámetros de OBV para asegurar la exactitud de los juicios.
  2. Controlar adecuadamente el número de adiciones para asegurar que el riesgo esté bajo control.

Dirección de optimización

La estrategia se puede optimizar en las siguientes direcciones:

  1. Optimización de los parámetros de OBV para mejorar la precisión de los juicios;
  2. Optimizar el número y el monto de las adquisiciones;
  3. Optimización del punto de parada y pérdida.
  4. En combinación con otros indicadores, se evita el riesgo de un solo OBV.

La optimización de estos contenidos puede hacer que las estrategias sean más estables, controlables y escalables.

Resumir

La estrategia es muy práctica en general. Utiliza indicadores OBV para determinar la dirección de la tendencia y luego sigue la tendencia a través de la pirámide de alza. La lógica de la estrategia es simple y clara, fácil de entender y medir.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
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/
// © RafaelZioni

//@version=4

strategy(title = " OBV Pyr", overlay = true, pyramiding=5,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 20, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
 
//
 
filter=true 
src = close


LengthOBV = input(20)

nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume 
c = cum(nv) 
c_tb = c - sma(c,LengthOBV) 

// Conditions

longCond = crossover(c_tb,0)
//shortCond =crossunder(cnv_tb,0)

//

longsignal  = (v1 > v2 or filter == false ) and longCond
//shortsignal = (v1 < v2 or filter == false ) and shortCond 
 
//set take profit
 
ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick
 
//set take profit
 
LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick
 
 
////Order Placing
//
strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)
//
strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)
//
strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)
//
strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)
//
strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)
//
strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)
//
strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)
//
//
//
if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)