Tendencia impulsada por el indicador de impulso siguiendo la estrategia de negociación

El autor:¿ Qué pasa?, Fecha: 2023-12-12 14:52:11
Las etiquetas:

img

Resumen general

Esta estrategia construye señales comerciales basadas en el indicador de impulso RSI y el precio s promedio móvil exponencial (EMA) y promedio móvil simple (SMA). Pertenece a la tendencia siguiente tipo de estrategias.

Principio de la estrategia

La estrategia utiliza 3 condiciones para generar señales comerciales:

  1. RSI > 45: el valor del RSI superior a 45 se considera una buena señal de compra
  2. EMA ((RSI) > SMA ((RSI): la línea EMA mayor que la línea SMA indica que el RSI se está acelerando hacia arriba, lo que es una buena señal de impulso
  3. EMA (close) > SMA (close): la línea EMA más alta que la línea SMA indica que la tendencia de los precios se está acelerando hacia arriba

El cumplimiento de cualquiera de las 2 de las 3 condiciones anteriores genera una señal de compra; si no se cumple ninguna, se genera una señal de venta.

La estrategia también prevé un modo de "compra siempre" para probar el rendimiento del sistema en relación con el mercado en general.

Análisis de ventajas

  1. El uso del indicador de impulso RSI para juzgar las condiciones del mercado puede reducir las posiciones durante las fluctuaciones del mercado
  2. La combinación de EMA y SMA para determinar la dirección de la tendencia puede capturar las tendencias de cambio de precios a tiempo
  3. Reglas condicionales simples y claras, fáciles de entender y optimizar
  4. Proporciona el modo siempre compra para probar las ventajas del sistema

Análisis de riesgos

  1. Se basa en la configuración de parámetros, los parámetros inadecuados conducirán a operaciones frecuentes o perderán buenas oportunidades comerciales
  2. Las principales noticias en el mercado en general pueden causar una gran volatilidad en el corto plazo, lo que llevará a un stop loss
  3. La estrategia en sí misma no puede juzgar cuándo una tendencia está a punto de revertirse, se necesitan otros indicadores para determinar

Direcciones de optimización

  1. Optimizar los parámetros de RSI, EMA y SMA para encontrar la mejor combinación de parámetros
  2. Aumentar otros indicadores técnicos como volumen, MACD, etc. para enriquecer las condiciones de la regla
  3. Aumentar los indicadores de inversión de tendencia para reducir la probabilidad de pérdidas

Conclusión

En resumen, esta estrategia pertenece a una estrategia de negociación de frecuencia media que tiene como objetivo capturar las tendencias de precios a medio plazo evitando las fluctuaciones del mercado a corto plazo. Sus ventajas y puntos de riesgo son bastante obvios.


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




Más.