Esta estrategia utiliza dos líneas EMA de períodos diferentes para identificar las reversiones de tendencia a través de sus cruces como señales de entrada y salida.
La estrategia calcula dos líneas de EMA usando ta.ema, una con longitud 10 para el corto plazo y otra con longitud 20 para la tendencia a largo plazo. Identifica los cruces y cruces de EMA utilizando ta.crossover y ta.crossunder para determinar los puntos de entrada y salida. Cuando la EMA corta cruza la EMA larga, se hace larga. Cuando la EMA corta cruza debajo de la EMA larga, se hace corta. De esta manera, los cruces de EMA se utilizan para capturar los puntos de inflexión de la tendencia.
La estrategia también utiliza una variable lastCrossTime para registrar el tiempo del último cruce para evitar señales repetidas. En cada cruce válido, cierra todas las posiciones actuales primero, luego abre una nueva posición en la dirección del cruce.
La lógica de la estrategia es simple y clara, fácil de entender e implementar.
El uso de los cruces de la EMA para identificar los puntos de inversión de tendencia es una estrategia de indicadores técnicos eficaz de uso común.
La adopción de EMA de diferentes períodos ayuda a mejorar la sensibilidad a los movimientos a corto plazo mientras se siguen captando las grandes tendencias.
Tomar ganancias y detener pérdidas ayuda a controlar el riesgo y la recompensa de cada comercio.
La variable lastCrossTime filtra las señales duplicadas y evita operaciones innecesarias.
Los cruces de la EMA pueden generar señales falsas, con cierto riesgo.
Las TP y SL fijas pueden no adaptarse a las condiciones cambiantes del mercado, por lo que deben utilizarse niveles dinámicos.
Los sistemas que dependen únicamente del cruce de la EMA pueden sufrir pérdidas en mercados variados.
Los costes de negociación como el spread no se consideran, lo que afecta al rendimiento real.
La estrategia funciona mejor en tendencias en lugar de mercados variados.
Las mejoras pueden realizarse mediante la optimización de TP/SL, la adición de filtros, la combinación de otros indicadores, etc. El control estricto del riesgo y la evitación de grandes pérdidas individuales son esenciales para el comercio en vivo.
Prueba y optimiza los períodos de EMA para encontrar mejores combinaciones.
Añadir otros indicadores como KDJ, MACD, etc. para mejorar la calidad de la señal y evitar problemas.
Utilizar dinámico tomar ganancias y detener pérdidas, tales como detener la tendencia.
Considere el volumen de operaciones para confirmar las señales.
Incorpore patrones de acción de precios como las rupturas para fortalecer las señales.
Tenga en cuenta los costos de negociación como el diferencial y optimice los niveles de TP/SL en consecuencia.
La estrategia identifica inversiones de tendencia utilizando cruces de EMA de una manera simple y directa. TP/SL se utilizan para controlar riesgos y recompensas. Es fácil de implementar, pero los cruces de EMA tienen riesgos. Se pueden hacer optimizaciones adicionales ajustando parámetros, agregando filtros y combinando otros indicadores para mejorar la robustez.
/*backtest start: 2023-10-30 00:00:00 end: 2023-11-06 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('XXXquang', overlay=true) // Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị length1 = input.int(10, title="Length EMA Short", minval=1) length2 = input.int(20, title="Length EMA Long", minval=1) lotSize = input.int(1, title="Lot Size", minval=1) takeProfitLevel = input.int(600, title="Take Profit Level", minval=1) stopLossLevel = input.int(200, title="Stop Loss Level", minval=1) ema1 = ta.ema(close, length1) ema2 = ta.ema(close, length2) var float lastCrossTime = na if ta.crossover(ema1, ema2) if na(lastCrossTime) strategy.close_all() strategy.entry('Buy Order', strategy.long, qty=lotSize) strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue) lastCrossTime := timenow if ta.crossunder(ema1, ema2) if na(lastCrossTime) strategy.close_all() strategy.entry('Sell Order', strategy.short, qty=lotSize) strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue) lastCrossTime := timenow plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2) plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)