La estrategia de seguimiento de explosión de impulso

El autor:¿ Qué pasa?, Fecha: 2024-03-01 11:08:43
Las etiquetas:

img

Resumen general

La estrategia de seguimiento de explosión de impulso juzga los avances de precios calculando los cambios porcentuales de precios y filtra las señales con el volumen de operaciones para implementar la captura de puntos de avance de tendencia con alta probabilidad.

Principio de la estrategia

Los principales indicadores que esta estrategia utiliza para determinar las señales de entrada son:

  1. Cambio de precio porcentual (isFourPercentBull) - Calcula el cambio porcentual del precio de cierre en relación con el precio de cierre del día anterior para determinar si el precio ha roto efectivamente.

  2. Relación entre el precio de cierre y el precio más alto (HighCloseRatio) - Calcular la relación entre el precio de cierre y el precio más alto para determinar la fuerza de la ruptura del precio.

  3. Volumen de negociación (volumen) - Requiere que el volumen de negociación sea mayor que el día anterior para garantizar un avance válido.

  4. Mediana móvil simple de 200 días (SMA) - Requiere que el precio de cierre y el precio de apertura sean superiores a la línea de 200 días para determinar la dirección de la tendencia.

Cuando se cumplen las múltiples condiciones anteriores al mismo tiempo, se emite una señal de compra. Después, la estrategia utiliza el seguimiento de precios para detener la pérdida y bloquear las ganancias.

trailPrice = close * (100 - trailPercent) / 100

donde trailPercent es el porcentaje configurable de stop loss. Esto asegura que mientras los precios suban, la línea de stop loss también aumentará para bloquear las ganancias. Cuando los precios vuelvan a caer a la línea de stop loss, cierre las posiciones para detener las pérdidas.

Ventajas de la estrategia

Como una estrategia de escape típica, tiene las siguientes ventajas:

  1. El filtrado multicondicional garantiza la validez de la fuga y evita las falsas fugas.

  2. Adopte el seguimiento de precios para detener las pérdidas, que puede reducir activamente las pérdidas y bloquear las ganancias para maximizar la evitación de las reducciones.

  3. La lógica de la estrategia es simple y clara, fácil de entender y optimizar.

Riesgos de la estrategia

La estrategia también tiene algunos riesgos:

  1. Todavía existe la probabilidad de que las rupturas falles no puedan evitar completamente las pérdidas.

  2. Las paradas de seguimiento demasiado agresivas pueden causar paradas frecuentes.

  3. La configuración incorrecta de los parámetros puede dar lugar a frecuencias comerciales excesivas o señales perdidas.

Las soluciones a los riesgos correspondientes son:

  1. Optimizar los parámetros y reducir la magnitud de la pérdida de parada para garantizar suficiente espacio.

  2. Relajar razonablemente las condiciones de ruptura para garantizar que no se pierdan tendencias claras.

  3. Prueba diferentes variedades para evaluar la estabilidad de la estrategia.

Direcciones de optimización

Teniendo en cuenta la alta frecuencia de paradas en esta estrategia, las siguientes direcciones pueden optimizarse aún más:

  1. En el caso de los instrumentos financieros, el valor de los activos financieros de los que se trate será el valor de los activos financieros de los que se trate.

  2. Aumentar los algoritmos de aprendizaje automático para entrenar juicios de mejores combinaciones de parámetros basadas en datos históricos.

  3. Añadir condiciones de juicio auxiliares basadas en las variaciones de volumen para garantizar la eficacia.

  4. Evaluar las diferencias en la configuración de parámetros entre las diferentes variedades para encontrar el mejor ajuste.

Conclusión

La estrategia de seguimiento de explosión de impulso es una estrategia de seguimiento de tendencias muy práctica en general. resuelve el problema de la incapacidad de detener efectivamente la pérdida y la ganancia en las estrategias de ruptura, mientras que aún controla bien los riesgos al capturar tendencias.


/*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)

Más.