Esta estrategia adopta el cruce de la media móvil de 20 días y la media móvil de 60 días para generar señales de negociación. Va largo cuando el precio se rompe por encima del MA de 20 días y cierra la posición cuando el precio se rompe por debajo del MA de 20 días. Del mismo modo, forma señales de negociación cuando el precio cruza el MA de 60 días. Esta estrategia pertenece a un sistema típico de seguimiento de tendencias.
Las reglas anteriores definen las señales comerciales y la lógica para esta estrategia. Cuando el precio cruza la línea MA, muestra que una nueva tendencia está surgiendo y podemos seguir la tendencia para ir largo. Cuando el precio cae por debajo de la línea MA, muestra que la tendencia está terminando, por lo que cerramos la posición.
Soluciones de riesgos:
Esta es una típica estrategia de cruce de media móvil dual. La idea central es seguir las tendencias estableciendo una posición cuando el precio cruza la línea MA. La estrategia es simple y práctica de implementar. Mientras tanto, hay espacio para una mayor optimización, por ajuste de parámetros, stop loss, dimensionamiento de posición, etc. para lograr mejores resultados.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 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/ // © Astorhsu //@version=5 strategy("Astor SMA20/60 TW", overlay=true, margin_long=100, margin_short=100) backtest_year = input(2018, title='backtest_year') //回測開始年分 backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份 backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期 start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數 //Indicators sma20 = ta.sma(close,20) sma60 = ta.sma(close,60) plot(sma20, color=color.green, title="sma(20)") plot(sma60, color=color.red, title="sma(60)") //進場條件 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) and time >= start_time strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) and time >= start_time strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) and time >= start_time strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) and time >= start_time strategy.close("open long60",comment="跌破m60平倉", qty=1)