この戦略は,20日移動平均値と60日移動平均値のクロスオーバーを採用し,取引信号を生成する.価格が20日MAを超えるとロングになり,価格が20日MAを下回るとポジションを閉じる.同様に,価格が60日MAを超えると取引信号を形成する.この戦略は典型的なトレンドフォローシステムに属している.
上記のルールは,この戦略の取引信号とロジックを定義します.価格がMAラインを越えると,新しいトレンドが出現し,我々はロングに行くトレンドに従うことができます.価格がMAラインを下回ると,トレンドが終了していることを示します.私たちはポジションを閉じます.
リスク対策
これは典型的な二重移動平均クロスオーバー戦略である. 基本アイデアは,価格がMA線を越えたときにポジションを確立することによってトレンドに従うことである. 戦略は単純で実践的な実装である. 一方,よりよい結果を達成するために,パラメータチューニング,ストップ損失,ポジションサイズ等によりさらなる最適化のための余地がある.
/*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)