Cette stratégie adopte le croisement de la moyenne mobile de 20 jours et de la moyenne mobile de 60 jours pour générer des signaux de trading. Elle va long lorsque le prix dépasse la moyenne mobile de 20 jours et ferme la position lorsque le prix dépasse la moyenne mobile de 20 jours. De même, elle forme des signaux de trading lorsque le prix dépasse la moyenne mobile de 60 jours. Cette stratégie appartient à un système typique de suivi de tendance.
Les règles ci-dessus définissent les signaux de trading et la logique de cette stratégie. Lorsque le prix traverse la ligne MA, cela montre qu'une nouvelle tendance émerge et que nous pouvons suivre la tendance pour aller long. Lorsque le prix tombe en dessous de la ligne MA, cela montre que la tendance se termine, nous fermons donc la position.
Solution au risque:
Il s'agit d'une stratégie de croisement de moyenne mobile double typique. L'idée principale est de suivre les tendances en établissant une position lorsque le prix franchit la ligne MA. La stratégie est simple et pratique à mettre en œuvre.
/*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)