Estrategia comercial basada en el seguimiento de tendencias impulsada por un indicador de momentum


Fecha de creación: 2023-12-12 14:52:11 Última modificación: 2023-12-12 14:52:11
Copiar: 0 Número de Visitas: 559
1
Seguir
1621
Seguidores

Estrategia comercial basada en el seguimiento de tendencias impulsada por un indicador de momentum

Descripción general

Esta estrategia se basa en el indicador de la dinámica RSI y el precio Exponential Moving Average (EMA) y Simple Moving Average (SMA) para construir la señal de negociación. Es un tipo de estrategia de seguimiento de tendencias.

Principio de estrategia

La estrategia utiliza tres condiciones para generar una señal de negociación:

  1. RSI > 45: RSI mayor a 45 es una buena señal de compra
  2. EMA ((RSI) > SMA ((RSI): Una línea EMA mayor que la línea SMA indica que el RSI se está acelerando hacia arriba y es una buena señal de dinámica
  3. EMA ((precio de cierre) > SMA ((precio de cierre): la línea EMA es mayor que la línea SMA para indicar que la tendencia de precios se está acelerando hacia arriba

Si se cumplen 2 de las 3 condiciones anteriores, se genera una señal de compra; si no se cumplen todas, se genera una señal de venta.

La estrategia también ofrece un modo de compra de plata siempre en plata para probar el rendimiento del sistema en sí mismo con respecto a la bolsa mayor.

Análisis de las ventajas estratégicas

  1. El uso del indicador RSI para determinar la tendencia del mercado puede reducir las posiciones en los períodos de volatilidad de los mercados
  2. La combinación de EMA y SMA para determinar la dirección de la tendencia permite capturar la tendencia de cambio de precio en tiempo real
  3. Las reglas de condiciones son simples, claras, fáciles de entender y optimizar
  4. Las ventajas de un sistema de inspección de patrones de compra y ventaja de suministro de aluminio

Análisis de riesgos estratégicos

  1. Dependiendo de la configuración de los parámetros, los parámetros incorrectos pueden ocasionar transacciones frecuentes o perder buenas oportunidades de negociación
  2. En el caso de grandes noticias, los precios pueden fluctuar mucho en el corto plazo, lo que podría provocar un stop loss.
  3. Las estrategias por sí solas no pueden determinar cuándo la tendencia está a punto de revertirse, y necesitan ser evaluadas con otros indicadores.

Dirección de optimización

  1. Optimice los parámetros del RSI, EMA y SMA para encontrar la mejor combinación de parámetros
  2. Aumentar las reglas de juicio de otros indicadores técnicos, como el volumen, el MACD
  3. Aumentar los indicadores de cambio de tendencia y reducir la probabilidad de pérdidas

Resumir

Esta estrategia, en su conjunto, es una estrategia de negociación de frecuencia media, cuyo objetivo es capturar tendencias de precios a medio plazo y evitar movimientos de mercado a corto plazo. Sus ventajas y puntos de riesgo son evidentes.

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

//@version=5
strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.")
compoundingMode = input.bool(false)
leverage = input.float(1.0,step=0.1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100
TPFactor = input.float(2, step=0.1)




var disableAdditionalBuysThisDay = false
var lastTrade = time
if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy")
    disableAdditionalBuysThisDay := false

if(strategy.position_size != strategy.position_size[1])
    lastTrade := time
    disableAdditionalBuysThisDay := true

//Trade Logic
SCORE = 0

//rsi momentum
RSIFast = ta.ema(ta.rsi(close,50),24)
RSISlow = ta.sma(ta.rsi(close,50),24)
RSIMomentum = RSIFast / RSISlow
goodRSIMomentum = RSIMomentum > 1
SCORE := goodRSIMomentum ? SCORE + 1 : SCORE

//rsi trend
RSITrend = RSISlow / 45
goodRSI = RSITrend > 1
SCORE := goodRSI ? SCORE + 1 : SCORE

//price trend
normalTrend = ta.ema(close,50) / ta.sma(close,50)
goodTrend = normalTrend > 1
SCORE := goodTrend ? SCORE + 1 : SCORE



isBuy =  SCORE > 1 or tradingMode == "Always Buy"
isSell = false //SCORE == 0

//plot(SCORE, color=isBuy ? color.green : #ffffff88)
//reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow
plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10)
plot(1 - (1 - RSIMomentum) * 6,color=#00F569)
plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B)
plot(1 - (1 - normalTrend) * 20,color=#00F5EE)


strategy.initial_capital = 50000
if(isBuy and not(disableAdditionalBuysThisDay))
    if(compoundingMode)
        strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage)
    else
        strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)


if(strategy.position_size != 0)
    strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))