Estrategia de trading cuantitativo basada en el promedio móvil y el trailing stop loss de rango real promedio


Fecha de creación: 2023-12-08 15:53:22 Última modificación: 2023-12-08 15:53:22
Copiar: 1 Número de Visitas: 696
1
Seguir
1621
Seguidores

Estrategia de trading cuantitativo basada en el promedio móvil y el trailing stop loss de rango real promedio

Descripción general

El nombre de la estrategia es MADEFlex, una estrategia de negociación de cuantificación flexible basada en un cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre. Esta estrategia combina el indicador de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre de cierre.

Principio de estrategia

El núcleo de esta estrategia es el indicador MADE. El indicador MADE se forma por el movimiento de la media móvil (EMA) por la multiplicación de un factor de porcentaje de la aplicación de desplazamiento. Cuando el precio se rompe en la vía, produce una señal de venta; cuando el precio cae en la vía, produce una señal de compra.

En concreto, el indicador MADE contiene 3 parámetros: Periodo de ciclo, porcentaje de subida por Ab y porcentaje de bajada por Bl. El período de ciclo determina la longitud del ciclo de la EMA. La amplitud de la distancia de subida y bajada de la EMA se controla mediante el factor de porcentaje. La parte de la parada de ATR se establece principalmente a través del ciclo de ATR nATRPeriod y el múltiplo de ATR nATRMultip.

Finalmente, mediante la combinación de la señal de indicador MADE y el filtro de las condiciones de parada de seguimiento ATR, se generan señales de compra y venta. Se puede realizar la operación inversa mediante el interruptor de entrada de transacción inversa.

Análisis de las ventajas

La estrategia MADEFlex tiene las siguientes ventajas:

  1. La combinación de la señal de indicador y el mecanismo de deterioro es más confiable. Los indicadores MADE son propensos a generar señales erróneas. La combinación de la deterioro de seguimiento ATR puede filtrar eficazmente parte del ruido.

  2. Los parámetros son muy ajustables y el control es flexible. Se pueden ajustar los parámetros de los indicadores MADE y los parámetros ATR para controlar la cantidad y la calidad de la señal.

  3. Soporte para operaciones en reversa. Se puede realizar operaciones en reversa mediante el interruptor de reversa, lo que enriquece las situaciones de uso de la estrategia.

  4. Visualización de la parada Intuitiva. Al trazar la línea de parada, intuitivamente juzgue el efecto de parada.

Análisis de riesgos

La estrategia MADEFlex también tiene los siguientes riesgos:

  1. Los parámetros incorrectos del indicador MADE pueden generar una gran cantidad de señales erróneas. Se requiere una prueba cuidadosa para determinar los parámetros adecuados.

  2. El ATR se detiene demasiado suave y se puede perder la oportunidad de detenerse. Se recomienda la prueba para determinar el múltiplo ATR adecuado.

  3. El riesgo de inversión es alto. Especialmente en situaciones de alta volatilidad, la inversión puede aumentar el riesgo de pérdidas. Se debe usar con precaución.

  4. La ausencia de protección contra pérdidas puede causar mayores pérdidas. En casos extremos, la ausencia de protección contra pérdidas puede causar mayores pérdidas.

Dirección de optimización

La estrategia MADEFlex puede ser optimizada en las siguientes direcciones:

  1. Optimización de los parámetros MADE para mejorar la calidad de la señal. Se pueden probar diferentes ciclos, parámetros porcentuales y encontrar combinaciones de parámetros más fiables.

  2. Optimización de los parámetros ATR para un mejor efecto de detención de pérdidas. Se pueden probar los ciclos ATR y los multiplicadores ATR para determinar la combinación más adecuada.

  3. Añadir otras condiciones de filtración para reducir aún más las señales erróneas. Por ejemplo, la combinación de indicadores de fluctuación para filtrar aún más las señales.

  4. Aumentar la estrategia de stop-loss, donde el stop-loss se retira cuando los beneficios alcanzan un cierto nivel. Puede bloquear los beneficios y controlar el riesgo.

  5. Parámetros de optimización dinámica en combinación con métodos de aprendizaje automático. Parámetros de optimización en tiempo real con métodos como el aprendizaje por refuerzo, que hacen que las estrategias sean más flexibles.

Resumir

La estrategia MADEFlex combina con éxito las señales de transacción del indicador de la media móvil de los sobres y el método de seguimiento de la pérdida media real. A través de parámetros ajustables, se logra una solución de transacción cuantitativa flexible y controlada. La estrategia es de alta fiabilidad, de gran capacidad de control, adecuada para su uso y optimización por parte de usuarios con una cierta base cuantitativa.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/09/2022
// Moving Average Displaced Envelope. These envelopes are calculated 
// by multiplying percentage factors with their displaced expotential 
// moving average (EMA) core.
// How To Trade Using:
// Adjust the envelopes percentage factors to control the quantity and 
// quality of the signals. If a previous high goes above the envelope 
// a sell signal is generated. Conversely, if the previous low goes below 
// the envelope a buy signal is given.
//
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
//
// ATR TS used by filter for MADE signals.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title='Moving Average Displaced Envelope & ATRTS', shorttitle='MADE+ATR', overlay=true)
tradeDirection = input.string('Both', title='Trade Direction', options=['Both', 'Long', 'Short'])
Price = input(title='Source', defval=close)
Period = input.int(defval=9, minval=1)
perAb = input.float(title='Percent above', defval=.5, minval=0.01, step=0.1)
perBl = input.float(title='Percent below', defval=.5, minval=0.01, step=0.1)
disp = input.int(title='Displacement', defval=13, minval=1)

nATRPeriod = input(15)
nATRMultip = input(2)
useATR = input(false, title='ATR Filter')
reverse = input(false, title='Trade reverse')

longAllowed = tradeDirection == 'Long' or tradeDirection == 'Both'
shortAllowed = tradeDirection == 'Short' or tradeDirection == 'Both'
pos = 0
sEMA = ta.ema(Price, Period)
top = sEMA[disp] * ((100 + perAb) / 100)
bott = sEMA[disp] * ((100 - perBl) / 100)

xATR = ta.atr(nATRPeriod)
xHHs =ta.sma(ta.highest(nATRPeriod), nATRPeriod)
xLLs =ta.sma(ta.lowest(nATRPeriod),nATRPeriod)
nSpread = (xHHs - xLLs) / 2
nLoss = nATRMultip * xATR
var xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) :
     close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : 
     close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss

ATRLong = close > xATRTrailingStop ? true : false
ATRShort = close < xATRTrailingStop ? true : false

iff_1 = close > top ? 1 : pos[1]
pos := close < bott ? -1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
clr = strategy.position_size
if possig == 1 
    if longAllowed and ATRLong
        strategy.entry('Long', strategy.long)
    else
        if ATRLong or strategy.position_size > 0
            strategy.close_all()
if possig == -1 
    if shortAllowed and ATRShort
        strategy.entry('Short', strategy.short)
    else    
        if ATRShort or strategy.position_size < 0
            strategy.close_all()
if possig == 0
    strategy.close_all()
    
plot(xATRTrailingStop[1], color=color.blue, title='ATR Trailing Stop')
barcolor(clr < 0 ? #b50404 : clr > 0 ? #079605 : #0536b3)