
La estrategia de seguimiento de la explosión de la dinámica determina la ruptura del precio mediante el cálculo del porcentaje de cambio en el precio, y combina la señal de filtro de la transacción para lograr un punto de ruptura de la tendencia de captura de alta probabilidad. Cuando se activa una señal de compra, la estrategia utiliza el método de seguimiento de la parada del precio para bloquear las ganancias y evitar el retiro excesivo.
La estrategia se basa principalmente en los siguientes indicadores para determinar el momento de comprar:
Porcentaje de cambio en el precio ((isFourPercentBull) - calcula el porcentaje de cambio en el precio de cierre en relación con el precio de cierre del día anterior para determinar si el precio se rompió efectivamente;
Ratio de cierre y precio máximo (HighCloseRatio) - calcula el ratio de cierre y precio máximo para determinar la fuerza de ruptura del precio;
Volumen - requiere un volumen de transacciones mayor al del día anterior para asegurar una ruptura efectiva.
Media móvil simple de 200 días (SMA) - requiere que el precio de cierre y el precio de apertura estén por encima de la línea de 200 días para determinar la dirección de la tendencia.
Cuando se cumplen simultáneamente varias de las condiciones anteriores, se emite una señal de compra. Después, la estrategia adopta el método de seguimiento de precios para detener los pérdidas y bloquear las ganancias. En concreto, la fórmula de cálculo para el seguimiento de la línea de pérdidas es:
trailPrice = close * (100 - trailPercent) / 100
El trailPercent es un porcentaje de seguimiento de los pérdidas que se puede configurar. Esto significa que, siempre que el precio suba, la línea de parada también aumentará, lo que bloqueará las ganancias.
Es una estrategia de ruptura típica que tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
Las soluciones a los riesgos son:
Teniendo en cuenta la alta frecuencia de stop loss de esta estrategia, las siguientes direcciones pueden optimizarse aún más:
La estrategia de seguimiento de la explosión de la dinámica es una estrategia de seguimiento de tendencias muy práctica en general. Resolve el problema de que las estrategias de ruptura no pueden detener y detenerse de manera efectiva, y al mismo tiempo que captura la tendencia, también puede controlar el riesgo. La introducción de medios como la optimización de parámetros y el aprendizaje automático, la eficacia de la estrategia también tiene espacio para mejorar aún más, y vale la pena investigar y aplicar.
/*backtest
start: 2023-03-01 00:00:00
end: 2023-12-10 05:20: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/
// © doks23
//@version=5
strategy(title = "SD:Momentum Burst", overlay=true, initial_capital=1000,commission_value = 0,slippage = 0,process_orders_on_close=true)
//Check Vol
checkVol = input.bool(defval=false,title="IncludeAvgVolume?")
volSMAlength = input(50, title="VolumeLength")
volumeSma = ta.sma(volume, volSMAlength)
highvolume = volume >= volumeSma
volumeCond=checkVol?highvolume:true
// Profit and Loss
trailPercent = input.float(title="Trail%", defval=3, step=0.1)
//longCondition
PercentThreshold=input.float(3.8,'BreakoutPercent', step=0.1)
MaxThreshold=input.float(10,'Max Breakout', step=0.1)
HighCloseRatio=input.float(70,'Close to High Ratio', step=1)
float candleCloseBull = ((close[0] - open[0]) / (high[0] - open[0]) * 100)
float isFourPercentBull = (((close[0] - close[1]) / close[1]) * 100)
LongCond=volume > volume[1] and isFourPercentBull > PercentThreshold and candleCloseBull > HighCloseRatio and isFourPercentBull<MaxThreshold
barcolor(color=(LongCond?color.yellow: na),title='BObar')
longCondition= LongCond and volumeCond and close>ta.sma(close,200) and open>ta.sma(close,200)
//Input Strategy
DateCheck= input.bool(title = 'Custom Date Range?', defval=true,group = 'Strategy')
FromDate= input(defval = timestamp("1 Jan 2019 00:00"),group = 'Strategy')
ToDate =input(defval = timestamp("31 Dec 2023 00:00"),group = 'Strategy')
PostionSize =input.string('Contract','Select Position Size',options = ['Percent of Equity','Contract'],group = 'Strategy')
ContractQty =input.int(1,'No of Contract',group = 'Strategy')
//Backtesting Date Range
TimeWindow=true
// Number of Contract
var int trade_qty=na
if(PostionSize=='Contract')
trade_qty:=ContractQty
else
trade_qty:= (strategy.equity>strategy.initial_capital)?math.floor(strategy.equity/strategy.initial_capital):ContractQty
//Position Buy
BuyTriggerPrice = ta.valuewhen(longCondition,high,0)
//Trailing price
var float trailPrice = na
float percentMulti = (100 - trailPercent) / 100
longCondition2=longCondition and TimeWindow
if longCondition2
strategy.entry("Long", strategy.long,qty=trade_qty,stop = BuyTriggerPrice)
trailPrice := close*percentMulti
if strategy.position_size>0
trailPrice := math.max(close*percentMulti,trailPrice[1])
if low <= trailPrice
strategy.exit('Exit','Long',stop = trailPrice)
if strategy.position_size==0
trailPrice:=na
// Plot Strategy
var float trail_long_SL=na
if strategy.position_size>0
trail_long_SL:=trailPrice
else
trail_long_SL:=na
//Strategy Plot
PlotMA=input.bool(title="Plot MA?", defval=false)
plot(PlotMA?ta.sma(close,10):na,color = color.red,title = '10MA')
plot(PlotMA?ta.sma(close,21):na,color = color.white,title = '21MA')
plot(PlotMA?ta.sma(close,200):na,color = color.orange,title = '200MA')
// plot(trail_long_SL,color = color.gray,style = plot.style_steplinebr,linewidth = 1)