
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.
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.
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:
El principal riesgo de esta estrategia proviene de dos aspectos:
Resolución de las mismas:
La estrategia se puede optimizar en las siguientes direcciones:
La optimización de estos contenidos puede hacer que las estrategias sean más estables, controlables y escalables.
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.
/*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)