Basado en la estrategia de seguimiento de ráfagas de impulso


Fecha de creación: 2024-03-01 11:08:43 Última modificación: 2024-03-01 11:08:43
Copiar: 0 Número de Visitas: 826
1
Seguir
1617
Seguidores

Basado en la estrategia de seguimiento de ráfagas de impulso

Descripción general

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.

Principio de estrategia

La estrategia se basa principalmente en los siguientes indicadores para determinar el momento de comprar:

  1. 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;

  2. 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;

  3. Volumen - requiere un volumen de transacciones mayor al del día anterior para asegurar una ruptura efectiva.

  4. 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.

Ventajas estratégicas

Es una estrategia de ruptura típica que tiene las siguientes ventajas:

  1. Filtrado de múltiples condiciones para asegurar la efectividad de las brechas y evitar falsas brechas.
  2. La adopción de un stop loss de seguimiento de precios permite detener los pérdidas y bloquear las ganancias de forma activa, evitando al máximo las retiradas.
  3. La lógica de la estrategia es simple y clara, fácil de entender y optimizar.

Riesgo estratégico

La estrategia también tiene sus riesgos:

  1. La probabilidad de fracaso en la brecha sigue siendo alta y las pérdidas no pueden evitarse por completo.
  2. La radicalización de la interrupción de seguimiento puede ocasionar interrupciones frecuentes;
  3. La configuración incorrecta de los parámetros puede causar una frecuencia de transacción excesiva o una señal perdida.

Las soluciones a los riesgos son:

  1. Optimización de parámetros, reducción de la amplitud de los estancamientos, y asegurarse de que haya suficiente espacio;
  2. La flexibilización adecuada de las condiciones de ruptura para asegurar que no se pierdan las tendencias claras;
  3. Prueba de variedades para evaluar la estabilidad de la estrategia.

Dirección de optimización

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

  1. Intentar otros métodos de seguimiento de pérdidas, como el seguimiento de la media, el ATR y el seguimiento de la volatilidad.
  2. La introducción de algoritmos de aprendizaje automático para evaluar mejor la combinación de parámetros de ruptura basados en el entrenamiento de datos históricos.
  3. Incrementar los criterios auxiliares para el logro de las rupturas basados en el volumen de transacciones para asegurar su efectividad;
  4. Evaluar las diferencias en la configuración de los parámetros de las diferentes variedades para encontrar la variedad más adecuada.

Resumir

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.

Código Fuente de la Estrategia
/*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)