Estrategia de negociación con doble MACD StockRSI

El autor:¿ Qué pasa?, Fecha: 2023-09-22 16:55:55
Las etiquetas:

Resumen general

Esta estrategia combina indicadores MACD duales y el oscilador StochRSI para señales comerciales. El MACD dual utiliza diferentes parámetros para efectos rápidos y lentos, mientras que StochRSI verifica la divergencia de impulso.

Estrategia lógica

Las señales comerciales se basan en:

  • MACD doble: el MACD rápido utiliza un período de retroceso corto, el MACD lento usa un período de retroceso largo para suavizar los efectos.

  • StochRSI: Calcula el rango alto/bajo del RSI para identificar los niveles de RSI sobrecomprado/sobrevendido.

Reglas de entrada:

  • Largo: el MACD rápido cruza por encima de la línea cero y el MACD lento cruza por encima de la línea cero.

  • Corto: el MACD rápido cruza por debajo de la línea cero y el MACD lento cruza por debajo de la línea cero.

Ventajas

  • El MACD doble evita las fallas falsas para una mayor calidad de la señal.

  • StochRSI identifica los niveles de sobrecompra/sobreventa para evitar perseguir.

  • Considera la dirección general de la tendencia para reducir las pérdidas de contratrend.

  • La validación entre marcos de tiempo mejora la eficacia de la señal.

  • Detener las pérdidas controla el riesgo.

Los riesgos

  • MACD propenso a señales falsas, necesita más validación.

  • Los parámetros de StochRSI pueden fallar en las operaciones.

  • Los niveles de stop loss pueden ser demasiado conservadores o agresivos.

  • Falta de gestión de posición para paradas dinámicas.

Mejoras:

  1. Añadir filtros como el volumen o la pendiente MA.

  2. Optimizar o añadir otros osciladores.

  3. Seguimiento dinámico de pérdidas.

  4. Añadir dimensionamiento de posición basado en el rendimiento.

Optimización

Áreas principales de optimización:

  1. Optimice los parámetros del indicador.

  2. Añadir filtros para eliminar las señales falsas.

  3. Optimice las paradas para el seguimiento dinámico.

  4. Incorporar el tamaño de la posición basado en el rendimiento de la estrategia.

  5. Agregue aprendizaje automático para la optimización automática.

Resumen de las actividades

La estrategia combina múltiples indicadores para señales más fuertes, pero necesita optimización en parámetros, filtrado, paradas dinámicas para reducir las operaciones no deseadas y mejorar la rentabilidad.


/*backtest
start: 2023-09-14 00:00:00
end: 2023-09-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2



//This strategy is an ongoing work in progress. Last updated 8/6/16.
//Feel free to modify it as you see fit, if you do borrow code then send me a link so I 
//can see and maybe borrow some of your code to improve this.
//Thanks to ChrisMoody who I stole the code for setting custom resolution from.
//
//more info in comments at end of script





strategy("MACDouble & StochRSI w/ safeties v0.3", overlay=true)

source = close
useCurrentRes = input(true, title="Uncheck to use custom res./intrv. for 2nd MACD indicator")
resCustom = input(title="Resolution/interval to use for 2nd MACD:",  defval="45")
res = useCurrentRes ? timeframe.period : resCustom

useCurrentRes2 = input(true, title="Uncheck to use custom res/intrv for StochRSI")
resCustom2 = input(title="Resolution to use for StochRSI indicator:",  defval="45")
res2 = useCurrentRes2 ? timeframe.period : resCustom2


//MACD1
fastLength = input(10, title="MACD fast length")
slowlength = input(21, title="MACD slow length")
sigLength = input(9, title="MACD signal length")

MACD = ema(source, fastLength) - ema(source, slowlength)
signal = sma(MACD, sigLength)
delta = MACD - signal



//MACD2
fastLength2 = input(31, title= "2nd MACD fast length")
slowlength2 = input(63, title= "2nd MACD slow length")
sigLength2 = input(30, title= "2nd MACD signal length")

MACD2 = ema(source, fastLength2) - ema(source, slowlength2)
signal2 = sma(MACD2, sigLength2)
delta2 = MACD2 - signal2

MACDRes = security(syminfo.tickerid, res, MACD2)
signalRes = security(syminfo.tickerid,res, signal2)
deltaRes = security(syminfo.tickerid, res, delta2)


uptrend = (close + high)/(close[1] + high[2])
downtrend = (close + low)/(close[1] + low[2])

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(11, minval=1)
lengthStoch = input(11, minval=1)
src = close

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
RSI_buyTrig = input(90)
RSI_sellTrig = input(20)

kRes = security(syminfo.tickerid, res2, k)
dRes = security(syminfo.tickerid, res2, d)


if (delta > 0) and (year>2012) and (deltaRes > 0) and (uptrend > 1) and (  kRes and dRes < RSI_buyTrig) and (kRes > dRes)
    strategy.entry("buy", strategy.long, comment="buy")
    

if (delta < 0) and (year>2012) and (deltaRes < 0) and (downtrend < 1) and ( kRes and dRes > RSI_sellTrig) and (kRes < dRes)
    strategy.entry("sell", strategy.short, comment="sell")
	strategy.exit("sell", loss = 9000)



//  RELEASE NOTES, ETC
//
// The core starting idea for this backtesting script came from the desire to have two traditional
//MACD indicators: one 'fast' and one 'slow'. The slow one is to pretty much smooth out noisy signals
//so that short term changes in price are ignored (ideally). 
//	A brief version history
//		v0.1 - Basic two MACD indicators script
//      v0.2 - Added StochRSI indicator
//      v0.21- Added primitive uptrend/downtrend safety condition 
//      v0.22- Added changable time resolution for MACDslow
//      v0.23- Added exit safeties conditional on loss threshold   
//      v0.3 - Added changeable resolution for StochRSI
//	Future changes planned for next release:
//		-Fine tuning exit safeties
//      -Major overhaul of trade logic/triggers (may be forked as a different script)
//
//I am more than happy to discuss any difficulties you are having, questions about the script, or improvement suggestions.
//I am not a coder and my background is actually in economics, so feel free to debug ;)
//Feel free to tip me on the indcluded bitcoin address on TV as well
// tradingview.com/u/RyanMartin 
// rjmarti2@millersville.edu


Más.