Una estrategia cuantitativa que combina la reversión a la media y el seguimiento de tendencias


Fecha de creación: 2023-09-14 20:45:20 Última modificación: 2023-09-14 20:45:20
Copiar: 0 Número de Visitas: 1109
1
Seguir
1617
Seguidores

En este artículo se detalla una estrategia de comercio cuantitativa que utiliza a la vez la regresión de la media y la tecnología de seguimiento de tendencias. La estrategia tiene como objetivo el comercio inverso en condiciones de tendencia y el comercio simultáneo de seguimiento de tendencias.

El principio de la estrategia

La estrategia genera señales de negociación principalmente a través de las medias móviles simples y el indicador RSI:

  1. Cuando el precio está por debajo de la media móvil de 200 ciclos, se considera que está en fase bajista;

  2. Cuando el indicador RSI está por debajo de 20, se realiza una operación de retorno al promedio de la contracción;

  3. Cuando el precio está por encima de la media móvil de 200 ciclos, se considera que está en la fase de subida;

  4. Cuando el precio se cruza por encima de la media móvil, se realiza una operación de seguimiento de tendencias en marcha.

  5. La condición de posición plana es que el RSI sea superior a 80 o que el precio caiga por debajo de la media móvil por cierto margen.

  6. Se puede configurar una posición de negociación de regreso a la media y un seguimiento de tendencias, respectivamente.

La estrategia utiliza una combinación de regresión de la media y técnicas de seguimiento de tendencias para realizar las operaciones adecuadas en las diferentes etapas.

Dos, las ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. La combinación de dos técnicas diferentes puede mejorar la adaptabilidad de las estrategias.

  2. Las oportunidades de negociación se encuentran tanto en mercados con tendencias como en mercados con fluctuaciones.

  3. Se puede controlar el riesgo en diferentes modos mediante el ajuste de la posición.

  4. La configuración de los parámetros es simple y fácil de implementar.

Tercero, el riesgo potencial.

Sin embargo, la estrategia también tiene los siguientes riesgos:

  1. Indicadores como las medias móviles y el RSI son susceptibles a falsas rupturas.

  2. El cambio de los dos modos de transacción podría estar retrasado;

  3. Se requiere un retiro para obtener beneficios a largo plazo.

Cuatro contenido, resumen

Este artículo detalla una estrategia de comercio cuantitativa que utiliza la regresión de la media y la tecnología de seguimiento de tendencias. Esta estrategia permite operar en diferentes fases del mercado, lo que mejora la adaptabilidad. Pero también se necesita para evitar el riesgo de fallas en los indicadores y retrasos en la conmutación de modelos. En general, ofrece una idea de estrategia flexible que combina diferentes tecnologías.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-07 00:00:00
end: 2023-04-05 00:00: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/
// © I11L

//@version=5
strategy("Mean Reversion and Trendfollowing", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false)

// Input for the starting date
start_date = input(timestamp("1 Feb 2000 12:00"), title="Starting Date")
enableMeanReversion = input.bool(true)
enableTrendfollowing = input.bool(true)
trendPositionFactor = input.float(1)
meanReversionPositionFactor = input.float(0.5)

// Convert the input string to a timestamp
start_ts = timestamp(year(start_date), month(start_date), dayofmonth(start_date), 0, 0)

// Check if the current bar's time is greater than or equal to the start timestamp
start_condition = time >= start_ts

var tradeOrigin = ""

sma200 = ta.sma(close,200)
rsi2 = ta.rsi(close,2)

isMeanReversionMode = close < sma200 or not(enableTrendfollowing)
isTrendfollowingMode = close > sma200 or not(enableMeanReversion)

isRsiBuy = rsi2 < 20 and enableMeanReversion
isRsiClose = rsi2 > 80 and enableMeanReversion

isSmaBuy = close > sma200 and enableTrendfollowing
isSmaClose = close < sma200 * 0.95 and enableTrendfollowing

isBuy = (isMeanReversionMode and isRsiBuy) or (isTrendfollowingMode and isSmaBuy)

positionSizeFactor = isSmaBuy ? trendPositionFactor : meanReversionPositionFactor

// Only execute the strategy after the starting date
if (start_condition)
    if (isBuy and strategy.opentrades == 0)
        tradeOrigin := isSmaBuy ? "SMA" : "RSI"
        strategy.entry("My Long Entry Id", strategy.long, qty=(strategy.equity / close) * positionSizeFactor, comment=str.tostring(positionSizeFactor))
    isClose = tradeOrigin == "SMA" ? isSmaClose : isRsiClose
    if (isClose)
        strategy.exit("Exit", limit = close)

plot(sma200)
plot(sma200 * 0.95, color=color.orange)