Esta estrategia es una simple estrategia de cruce de promedios móviles SMA. Utiliza dos promedios móviles simples (SMA) con diferentes longitudes. Cuando el MA rápido cruza por encima del MA lento, entra en una posición larga. Cuando el MA rápido cruza por debajo del MA lento, cierra la posición larga. Las longitudes de los dos MA se pueden personalizar, así como las fechas de inicio y finalización para backtesting.
La idea principal de esta estrategia es utilizar las características de tendencia de los promedios móviles y las características de señal de los cruces de MA para la negociación. Cuando el MA rápido está por encima del MA lento, indica una tendencia al alza y una posición larga debe mantenerse. Cuando el MA rápido está por debajo del MA lento, indica una tendencia a la baja y no debe mantenerse ninguna posición.
La estrategia de cruce de media móvil SMA es una estrategia simple, fácil de entender, clásica y práctica de seguimiento de tendencias que es adecuada para que los principiantes la aprendan y la usen. Utiliza las características de tendencia de las medias móviles y las características de señal de los cruces de MA para capturar rápidamente los cambios en las tendencias del mercado. Sin embargo, esta estrategia también tiene algunas limitaciones y riesgos, como retraso, comercio frecuente y falta de stop-loss. Por lo tanto, en aplicaciones prácticas, necesita ser adecuadamente optimizada y mejorada de acuerdo con condiciones específicas para mejorar la estabilidad y rentabilidad de la estrategia.
/*backtest start: 2023-03-22 00:00:00 end: 2024-03-27 00:00:00 period: 1d basePeriod: 1h 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/ // © j0secyn //@version=5 strategy("MA Cross", overlay=true, margin_long=100, margin_short=100, default_qty_value=100, default_qty_type=strategy.percent_of_equity, initial_capital=10000) // === INPUT BACKTEST RANGE === fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input.int(defval = 2018,title = "From Year", minval = 1970) thruDay = input.int(defval = 30, title = "Thru Day", minval = 1, maxval = 31) thruMonth = input.int(defval = 9, title = "Thru Month", minval = 1, maxval = 12) thruYear = input.int(defval = 2024, title = "Thru Year", minval = 1970) slow_ma_length = input.int(defval = 100, title = "Slow MA lenght") fast_ma_length = input.int(defval = 30, title = "Fast MA lenght") // === FUNCTION EXAMPLE === start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // === LOGIC === crossOv = ta.crossover(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length)) crossUn = ta.crossunder(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length)) // === EXECUTION === // strategy.entry("L", strategy.long, when = window() and crossOv) // enter long when "within window of time" AND crossover // strategy.close("L", when = window() and crossUn) // exits long when "within window of time" AND crossunder strategy.entry("L", strategy.long, when = window() and crossOv) // enter long when "within window of time" AND crossover strategy.close("L", when = window() and crossUn) // exits long when "within window of time" AND crossunder