Esta estrategia optimiza los puntos de entrada después de las señales de un sistema básico de media móvil.
La lógica principal es:
Calcular el promedio móvil durante un período (por ejemplo, 20 días)
Los cruces generan señales largas/cortas
Después de las señales, no entre inmediatamente, sino espere a que los niveles mejoren.
Si se producen mejores niveles en los días especificados (por ejemplo, 3 días), introduzca operaciones.
Si no, entra al precio de cierre en el quinto día para evitar perderse
El objetivo es aprovechar la reanudación de las tendencias después de las consolidaciones en lugar de entrar en señales inmediatamente.
Optimización de entrada para mejores niveles de entrada
Los días de espera máximos evitan que las operaciones se pierdan por completo
Reglas simples y claras fáciles de aplicar
El tiempo de espera y los umbrales requieren optimización
Podría perder algunas oportunidades de tendencia a corto plazo
Necesidad de controlar tanto las condiciones de tiempo como de precios
Esta estrategia tiene como objetivo obtener mejores niveles de entrada a través de una simple optimización de la entrada, garantizando al mismo tiempo que no se pierden las tendencias.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 1h basePeriod: 15m 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/ // © dongyun //@version=4 strategy("等待一个更好的入场机会", overlay=true) period = input(20,'') maxwait = input(3,'') threshold = input(0.01,'') signal = 0 trend = 0.0 newtrend = 0.0 wait = 0.0 initialentry = 0.0 trend := sma(close,period) signal := nz(signal[1]) if trend > nz(trend[1]) signal := 1 else if trend < nz(trend[1]) signal := -1 wait := nz(wait[1]) initialentry := nz(initialentry[1]) if signal != signal[1] if strategy.position_size > 0 strategy.close('long',comment='trend sell') signal := -1 else if strategy.position_size < 0 strategy.close('short',comment='trend buy') signal := 1 wait := 0 initialentry := close else if signal != 0 and strategy.position_size == 0 wait := wait + 1 // test for better entry if strategy.position_size == 0 if wait >= maxwait if signal > 0 strategy.entry('long',strategy.long, comment='maxtime Long') else if signal < 0 strategy.entry('short',strategy.short, comment='maxtime Short') else if signal > 0 and close < initialentry - threshold strategy.entry('long',strategy.long, comment='delayed Long') else if signal < 0 and close > initialentry + threshold strategy.entry('short',strategy.short, comment='delayed short')