Esta estrategia combina los indicadores MACD y StochRSI en múltiples marcos de tiempo para mejorar la confiabilidad en las señales comerciales.
Estrategia lógica:
Calcular el MACD y el StochRSI en períodos diarios y de 4 horas.
Ingrese largo cuando ambas señales alcistas se alineen en diarias y de 4 horas.
Entrar en corto cuando ambas señales bajistas se alineen en diaria y de 4 horas.
Mantenga la posición hasta que aparezcan señales opuestas en ambos plazos.
La validación cruzada a través de marcos de tiempo múltiples mejora la precisión.
Ventajas:
El análisis multi-tiempo mejora la estabilidad de la señal.
El MACD y el StochRSI se verifican mutuamente.
Las reglas claras de entrada y salida facilitan las pruebas y la ejecución.
Riesgos:
Las combinaciones de marcos de tiempo múltiples retrasan las entradas comerciales.
Optimización de parámetros complejos a través de períodos.
Potencialmente menos operaciones No puede capitalizar plenamente todas las oportunidades del mercado.
En resumen, este enfoque de marcos de tiempo múltiples puede mejorar la calidad de la señal, pero requiere una optimización de equilibrio y retraso con respecto a los rendimientos ajustados al riesgo.
/*backtest start: 2023-08-13 00:00:00 end: 2023-09-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // strategy(title='[RS]Khizon (DGAZ) Strategy V0', shorttitle='K', overlay=false, pyramiding=0, initial_capital=100000, currency=currency.USD) // || Inputs: macd_src = input(title='MACD Source:', defval=close) macd_fast = input(title='MACD Fast Length:', defval=12) macd_slow = input(title='MACD Slow Length:', defval=26) macd_signal_smooth = input(title='MACD Signal Smoothing:', defval=9) srsi_src = input(title='SRSI Source:', defval=close) srsi_rsi_length = input(title='SRSI RSI Length:', defval=14) srsi_stoch_length = input(title='SRSI Stoch Length:', defval=14) srsi_smooth = input(title='SRSI Smoothing:', defval=3) srsi_signal_smooth = input(title='SRSI Signal Smoothing:', defval=3) // || Strategy Inputs: trade_size = input(title='Trade Size in BTC:', defval=1) buy_trade = input(title='Perform buy trading?', defval=true) sel_trade = input(title='Perform sell trading?', defval=true) // || MACD(close, 12, 26, 9): ||---------------------------------------------|| f_macd_trigger(_src, _fast, _slow, _signal_smooth)=> _macd = ema(_src, _fast) - ema(_src, _slow) _signal = sma(_macd, _signal_smooth) _return_trigger = _macd >= _signal ? true : false // || Stoch RSI(close, 14, 14, 3, 3) ||-----------------------------------------|| f_srsi_trigger(_src, _rsi_length, _stoch_length, _smooth, _signal_smooth)=> _rsi = rsi(_src, _rsi_length) _stoch = sma(stoch(_rsi, _rsi, _rsi, _stoch_length), _smooth) _signal = sma(_stoch, _signal_smooth) _return_trigger = _stoch >= _signal ? true : false // ||-----------------------------------------------------------------------------|| // ||-----------------------------------------------------------------------------|| // || Check Directional Bias from daily timeframe: daily_trigger = security('NGAS', 'D', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth)) h4_trigger = security('NGAS', '240', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth)) plot(title='D1T', series=daily_trigger?0:na, style=circles, color=blue, linewidth=4, transp=65) plot(title='H4T', series=h4_trigger?0:na, style=circles, color=navy, linewidth=2, transp=0) sel_open = sel_trade and daily_trigger and h4_trigger buy_open = buy_trade and not daily_trigger and not h4_trigger sel_close = not buy_trade and not daily_trigger and not h4_trigger buy_close = not sel_trade and daily_trigger and h4_trigger strategy.entry('sel', long=false, qty=trade_size, comment='sel', when=sel_open) strategy.close('sel', when=sel_close) strategy.entry('buy', long=true, qty=trade_size, comment='buy', when=buy_open) strategy.close('buy', when=buy_close)