3つのSMAクロスオーバーモメントストラテジーは,市場の動向を追跡する典型的な技術指標戦略である.16期,36期,72期間の単純な移動平均を組み合わせ,トレンド方向性が比較的明確であるときにロングまたはショートポジションを取るためにフィルターとしてカウフマン適応移動平均 (KAMA) とともに,市場の動向を決定するためにそれらの上昇と下落のクロスオーバーを使用する.
この戦略の主な指標は16期,36期,72期の単純な移動平均線である.短期間SMAが長期間SMAを上向きに横切ると,市場は上向きに進んでいることを示唆する.短期間SMAが長期間SMAを下向きに進んでいることを示唆する.例えば16期SMAが36期SMAと72期SMAを横切ると,それは上昇信号である.16期SMAが36期SMAと72期SMAを下向きに進んでいることを示唆する.
カウフマン適応移動平均 (KAMA) は,トレンドが不明であるときに間違った信号を避けるフィルターとして機能する.SMAクロスオーバー信号は,KAMAが加速しないまたは減速しないモード (線形相) にいるときにのみ起動する.
この戦略は,トレンドが比較的明確であるときに,長または短ポジションを取るためにSMAクロスオーバー状況を追跡する.長条件は36-SMAと線形KAMAの72-SMAを横切る16-SMAである.短条件は36-SMAと線形KAMAの72-SMAを横切る16-SMAである.
この戦略の利点は次のとおりです.
この戦略にはいくつかのリスクもあります:
リスクは,SMAパラメータを調整し,ストップロスの制約を設定するか,非常に不安定な市場だけに適用することによって軽減できる.
戦略は以下の方法で最適化できます.
3つのSMAクロスオーバーモメントストラテジー (Three SMA Crossover Momentum Strategy) は,全体としてかなり古典的で実用的なトレンドフォロー戦略である.多期SMAクロスオーバーを通じて中長期市場トレンドを効果的に判断し,ノイズをフィルタリングする.ポジショナル取引のタイミング参照指標の一つとして機能することができる.しかし,この戦略にはいくつかの弱点もあるため,より多様な市場で立つためにさらなる強化と最適化が必要である.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h basePeriod: 15m 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/ // © Wielkieef //@version=5 strategy(title='Three SMA-crossover strategy [30min] ', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=10000, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) src = close Length1 = input.int(16, title=' 1-SMA Lenght', minval=1, group='SMA') Length2 = input.int(36, title=' 2-SMA Lenght', minval=1, group='SMA') Length3 = input.int(72, title=' 3-SMA Lenght', minval=1, group='SMA') SMA1 = ta.sma(close, Length1) SMA2 = ta.sma(close, Length2) SMA3 = ta.sma(close, Length3) Long_ma = SMA1 > SMA2 and SMA2 > SMA3 Short_ma = SMA1 < SMA2 and SMA2 < SMA3 LengthMainSMA = input.int(100, title=' Trend SMA ', minval=1) SMAas = ta.sma(src, LengthMainSMA) // Powered Kaufman Adaptive Moving Average by alexgrover (modificated by Wielkieef) lengthas = input.int(50, title=' KAMA Lenght') sp = input.bool(true, title=' Self Powered') er = math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas) pow = sp ? 1 / er : 2 per = math.pow(math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas), pow) a = 0. a := per * src + (1 - per) * nz(a[1], src) mad4h = 0. a_f = a / a[1] > .999 and a / a[1] < 1.001 ///. Bar_color = close > SMAas ? color.green : Long_ma ? color.blue : Short_ma ? color.maroon : color.gray barcolor(color=Bar_color) long_cond = Long_ma and SMAas < close and not a_f and close > a short_cond = Short_ma and SMAas > close and not a_f and close < a long_stop = Short_ma and SMAas < close short_stop = Long_ma and SMAas > close SMA1plot = plot(SMA1, color=Bar_color, linewidth=2) SMA2plot = plot(SMA2, color=Bar_color, linewidth=4) SMA3plot = plot(SMA3, color=Bar_color, linewidth=2) fill(SMA1plot,SMA3plot,title="RANGE " ,color = color.new(Bar_color, 50)) if long_cond strategy.entry('Long', strategy.long) if short_cond strategy.entry('Short', strategy.short) strategy.close_all(when=long_stop or short_stop) //by wielkieef