Esta estrategia de negociación se basa en un simple sistema de cruce de promedio móvil y promedio móvil para el seguimiento de tendencias. Utiliza el cruce de promedios móviles rápidos y lentos con diferentes períodos como señales para ir largo o corto. Cuando el MA rápido cruza por encima del MA lento desde abajo, vaya largo; cuando el MA rápido cruza por debajo del MA lento desde arriba, vaya corto. Esta estrategia funciona bien para productos con tendencias obvias.
La estrategia utiliza un promedio móvil simple rápido como de 60 días y uno lento como de 200 días.
Cuando el MA corto cruza por encima del MA largo desde abajo, indica que los precios a corto plazo comienzan a subir y entrar en un mercado alcista, así que vaya largo.
La estrategia utiliza el cruce de MA para determinar la dirección de la tendencia. Cuando los precios a corto plazo aumentan más rápido, el MA corto empujará el MA largo hacia arriba y lo cruzará desde abajo. Esto significa que una tendencia alcista está emergiendo y se debe tomar una posición larga. Por el contrario, cuando los precios a corto plazo caen más rápido, el MA corto tirará del MA largo hacia abajo y lo cruzará desde arriba, lo que implica una tendencia bajista y se debe tomar una posición corta.
Al capturar los puntos de inflexión de las tendencias de los precios utilizando cruces MA rápidos y lentos, la estrategia puede ajustar las posiciones largas/cortas en consecuencia.
Métodos como el ajuste de los períodos de MA en función de la frecuencia de volatilidad de los productos, la mejora de la parada de pérdida / obtención de ganancias utilizando indicadores más complejos, la adición de filtros de volumen, etc. pueden optimizar esta estrategia y mejorar la estabilidad.
La estrategia se puede optimizar aún más en los siguientes aspectos:
Optimizar los períodos de MA rápidos y lentos para adaptarse a productos con diferentes frecuencias de volatilidad.
Mejorar las condiciones de entrada añadiendo más filtros como picos de volumen para reducir las señales falsas.
Mejorar el stop loss/take profit como el trailing stop o el take profit dinámico para mejorar la rentabilidad.
Considere los costos de negociación como las comisiones y agregue módulos de evaluación de costos para backtests más realistas.
Diseñar un universo de parámetros para encontrar combinaciones óptimas de parámetros adaptadas a diferentes productos.
Añadir la identificación de patrones locales para ayudar a determinar los puntos de inflexión de la tendencia y mejorar el momento de las entradas y salidas.
A través de la optimización sistemática de la estrategia, la rentabilidad, la estabilidad pueden mejorarse en gran medida y las reducciones pueden reducirse.
La estrategia de negociación determina los cambios de tendencia utilizando los cruces de MA, una estrategia típica de seguimiento de tendencias. Utiliza el cruce entre los MA rápidos y lentos para generar señales largas / cortas, identificando la dirección de la tendencia a través de la combinación de los dos. Esta estrategia captura las tendencias de manera constante y confiable y es fácil de entender e implementar. Cuando se optimiza, puede adaptarse a la mayoría de los productos y forma una estrategia comercial cuantitativa fundamental.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 10m basePeriod: 1m 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/ // © thebearfib // //@version=5 // strategy("x-over 150d_200d_sma - Free", overlay = true) repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system srcmc = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off) fast_length = input(title="Fast Length", defval=60) slow_length = input(title="Slow Length", defval=275) _fast = ta.sma(srcmc, fast_length) _slow = ta.sma(srcmc, slow_length) plot(_fast, title="Fast SMA", color=color.red, linewidth = 1) plot(_slow, title="Slow SMA", color=color.white, linewidth = 3) // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Calculating ————————————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01 longStopPerc = input.float(title="Long Stop (%)", minval=0.01, step=1.0, defval=13) * .01 // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Stop Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longExitPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc * (1 + longProfitPerc) longStopPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 - longStopPerc) : srcmc * (1 - longStopPerc) // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Long Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longCondition = srcmc > _slow and ta.crossover(_fast, _slow) closeCondition = ta.crossover(srcmc, _slow) if (longCondition) strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆") if (closeCondition) strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←") if (strategy.position_size > 0) strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss") // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Never the End Just the beginning ————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— //