3つの移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月6日 09:48:33
タグ:

img

概要

三重移動平均クロスオーバー戦略は,トレンドフォローする戦略に属する,異なる期間における移動平均のクロスオーバーを取引信号として使用する.短期,中期,長期移動平均を含む3つの移動平均を使用して,そのクロスオーバーに基づいて取引信号を生成する.

戦略の論理

まず,戦略は短期 (デフォルト7日),中期 (デフォルト25日),長期 (デフォルト99日) の移動平均を計算し,次に以下のルールに従って取引信号を生成します.

  1. 短期MMAが中期MMAを超えると,買い信号が生成される.

  2. 短期MMAが中期MMAを下回ると,売り信号が生成される.

  3. 短期MASが長期MASを超えると,迅速な購入信号が生成されます.

  4. 短期M&Aが長期M&Aを下回ると,迅速なセールシグナルが生成される.

この戦略は,短期MAが中期MAより上を突破すると上昇傾向を示し,買い信号が生成される.そして中期MAより下を突破すると下り傾向を示し,売り信号が生成される.同様に,短期MAと長期MAのクロスオーバーは,長期的なトレンド変化を把握するために迅速な取引信号も生成する.

利点分析

  • 戦略の論理は シンプルで 分かりやすく 実行できます

  • 多期分析を用いて,市場の動向の変化を効果的に把握できます.

  • マサチューセッツ州は,マサチューセッツ州で

  • 視覚的なクロスオーバー信号は 傾向の変化を直感的に反映しています

リスク分析

  • MAsは遅れている問題があり,トレンド逆転点を見逃す可能性があります.

  • 短期のMAが長期のMAを上回る時 誤った信号が多すぎる

  • 短期のMAが熊市で長期のMAを下回る時 誤った信号が多すぎる

  • 迅速な取引信号は過度に敏感で,取引頻度や手数料を増やす可能性があります.

MA期間を適切に調整したり,フィルター条件を追加したりすることで,誤った信号を最適化し,減少させることができます.高速な取引期間を短縮することで,取引頻度も低下します.

オプティマイゼーションの方向性

  • 特定の取引量や価格変動パーセントを満たす場合にのみ信号を生成するようなフィルター条件を追加します.

  • MACD,KDJなどの他の指標と組み合わせて 明確なトレンドがない場合 誤った取引を回避します

  • 誤った信号を減らすために MA 期間の組み合わせを最適化する.

  • 牛と熊の市場を区別し 購入と販売のパラメータを別々に最適化します

  • 取引コストを考慮し 取引頻度を制御するために 迅速な取引パラメータを調整します

概要

トリプルMAクロスオーバー戦略は,異なるタイムフレームMAのクロスオーバーを通じてトレンド方向を判断し,トレンドシグナルを生成する比較的シンプルです.トレンド変化を把握するために柔軟なパラメータ調整で実装することは簡単です.しかし,MA遅れや過剰な誤った信号の問題もあります.フィルターを追加し,パラメータ組み合わせを最適化するなどの方法は戦略を改善することができます.最適化と適用のためにトレンドクロスオーバーに興味のあるトレーダーに適しています.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 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/
// © dadashkadir

//@version=4
strategy("Üç Hareketli Ortalama Str.", overlay=true, initial_capital=10000, commission_value=0.047, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, calc_on_order_fills=true)

kisa = input(title = "Kısa Vade - Gün", defval = 7,  minval = 1)
orta = input(title = "Orta Vade - Gün", defval = 25, minval = 1)
uzun = input(title = "Uzun Vade - Gün", defval = 99, minval = 1)

sma7  = sma(close, kisa)
sma25 = sma(close, orta)
sma99  = sma(close, uzun)

alTrend  = plot (sma7, color=#2323F1, linewidth=2, title="Har.Ort. Kısa Vade", transp=0)
satTrend = plot (sma25, color=#FF0C00, linewidth=3, title="Har.Ort. Orta Vade", transp=0)
ort99    = plot (sma99, color=#DFB001, linewidth=3, title="Har.Ort. Uzun Vade", transp=0)

zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")

al  = crossover (sma7, sma25) and zamanaralik <= year
sat = crossover (sma25, sma7) and zamanaralik <= year

hizlial = crossover (sma7, sma99) and zamanaralik <= year
hizlisat = crossover (sma99, sma7) and zamanaralik <= year

alkosul  = sma7 >= sma25
satkosul = sma25 >= sma7

hizlialkosul  = sma7 >= sma99
hizlisatkosul = sma99 >= sma7

plotshape(al,  title = "Buy",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Sell", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

plotshape(hizlial,  title = "Hızlı Al",  text = 'Hızlı Al',  style = shape.labelup,   location = location.belowbar, color= color.blue, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(hizlisat, title = "Hızlı Sat", text = 'Hızlı Sat', style = shape.labeldown, location = location.abovebar, color= #6106D6 , textcolor = color.white, transp = 0, size = size.tiny)

fill (alTrend, satTrend, color = sma7 >= sma25? #4DFF00 : #FF0C00, transp=80, title="Al-Sat Aralığı")
//fill (ort99, satTrend, color = sma7 >= sma25? #6106D6 : color.blue, transp=80, title="Hızlı Al-Sat Aralığı")

if (al)
    strategy.entry("LONG", strategy.long)
if (sat)
    strategy.entry("SHORT", strategy.short)
//if (hizlial)
//    strategy.entry("My Short Entry Id", strategy.long)
//if (hizlisat)
//    strategy.entry("My Short Entry Id", strategy.short)    

もっと