この戦略は,多レベル移動平均線交差の原則を利用して,中長期のトレンドを把握し,安定した利益を達成する.異なるパラメータを持つ高速,中,遅い3つのセットの移動平均を使用し,その交差に基づいて取引決定を下す. 移動平均線交差の2つのセットのみを持つ伝統的な戦略と比較して,この多レベル移動平均線交差戦略は,より多くの偽信号をフィルタリングし,戦略の勝利率を改善することができます.
この戦略は,移動平均の3つのセットを使用します:高速移動平均MAshort,中速移動平均MAmid,そして遅い移動平均MAlong. MAshortは9のパラメータを持ち,最も速く反応し,短期信号を捕捉するために使用されます. MAmidは50のパラメータを持ち,中間速度を持ち,トレンドを確認するために使用されます. MAlongは100のパラメータを持ち,最もゆっくり反応し,長期トレンドの方向性を決定するために使用されます.
戦略の特異的な取引論理は,中速移動平均線MAmidがスロー移動平均線MAlongの上を横切ると,株価の上昇勢力が形成されていることを示します.この時点で,戦略は長引きます.高速移動平均線MAshortが中速移動平均線MAmidを下に横切ると,短期的なトレンド逆転が発生し,この時点で戦略がポジションを退行することを示します.
この戦略の最大の利点は,複数の移動平均値を組み合わせることで,誤った信号を効果的にフィルタリングし,中長期上向きのトレンド中に比較的強いブレイクアウトを選択してロングポジションを開くことができるということです.
この戦略の利点は次のとおりです.
この戦略には次のリスクもあります
これらのリスクに対処するために,ストップ・ロスの技術で最大引き下げを制御しながら,戦略の適用性をさらに拡大します. 中長期の傾向の逆転に反応してポジションを削減します.
この戦略は,次の方法で最適化することもできます.
この戦略は典型的な中長期的定量戦略に属し,取引リスクを制御するという前提で,多レベルの移動平均値と中長期的トレンドをマッチすることで継続的に利益を得ます.単一の指標と比較して,この戦略は複数のパラメータを組み込み,中長期の強いトレンドシグナルを効果的に識別することができます.さらなる最適化により,この戦略はより多くの種類に適用され,定量取引で重要な役割を果たします.
/*backtest start: 2023-12-12 00:00:00 end: 2024-01-11 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/ // © Coinrule //@version=4 strategy(shorttitle='Multi Moving Average Crossing',title='Multi Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" //MA inputs and calculations inlong=input(100, title='MAlong') inmid=input(50, title='MAmid') inshort=input(9, title='MAfast') MAlong = sma(close, inlong) MAshort= sma(close, inshort) MAmid= sma(close, inmid) //Entry bullish = crossover(MAmid, MAlong) strategy.entry(id="long", long = true, when = bullish and window()) //Exit bearish = crossunder(MAshort, MAmid) strategy.close("long", when = bearish and window()) plot(MAshort, color=color.orange, linewidth=2) plot(MAmid, color=color.red, linewidth=2) plot(MAlong, color=color.blue, linewidth=2)