トレンド・ブル/ベア・クロスオーバー・トレード戦略

作者: リン・ハーンチャオチャン開催日:2023年10月7日 09時56分30秒
タグ:

概要

この戦略は,移動平均のクロスオーバー原理を使用して,トレンド方向を決定し,買取・売却シグナルを生成する. シンプルで信頼性があり,安定した収益を求める投資家に適しています.

原則

この戦略は,2つの移動平均を採用している. 7日間のMAが高速線と5ヶ月のMAがスローラインである.高速線は価格変化を迅速に捉え,スローラインはノイズをフィルタリングし,トレンド方向を決定する.高速線が下からスローラインを越えると,それはロングに行くための上昇信号とみなされる.高速線が上からスローラインを破ると,それはショートに行くための下落信号とみなされる.

この戦略は,価格チャートに7日間のシンプル・ムービング・アベア (SMA) と5ヶ月のSMAをプロットして計算する. 7日間の線が下から5ヶ月の線を越えると,購入信号が生成される. 7日間の線が上から5ヶ月の線を越えると,販売信号がトリガーされる. 戦略は信号期間も視覚化する.

利点

この戦略には以下の利点があります.

  1. シンプルで信頼性の高い理論的基礎は,広く知られている移動平均のクロスオーバー原理に基づいています.

  2. 2つの移動平均値のみが使用され,パラメータの選択が簡単で実行が容易である.

  3. スピードとスピードが遅い線は 動向を特定し 市場の騒音をフィルタリングするために 効果的に連携しています

  4. 異なる時間枠を異なる期間のMAsで記録し,複数のスケールでトレンド変化を検出します.

  5. シンプルな実装で わかりやすい論理です

  6. ビジュアル化された信号は 取引を決定するのに 明確で直感的です

リスク

リスクもあります:

  1. 誤った信号に易く,MAの交差値のみを頼りに

  2. トレンド強さを効果的に判断できず,市場変動で頻繁にストップ・ロスを引き起こします.

  3. 固定MAP期間が市場の変化に適応できないため,パラメータの最適化が必要です.

  4. 入口と出口レベルが不明で 鞭の危険も

  5. 理論的な基礎が単純化されれば 業績や利益の可能性が損なわれる可能性があります

強化

戦略は以下の点で改善できる:

  1. 入口・出口レベルを決定する他の指標を追加します.例えば,買い過ぎ/売り過ぎのKDJなど.

  2. ストップ・ロスのメカニズムを実装して 損失を制限します

  3. 市場サイクルに適応するために,MAP期間を最適化する.

  4. 音量フィルターを追加して 偽のブレイクを避ける

  5. トレンド強度,例えばMA傾斜を評価し,ポジションサイズをスケールする.

  6. より良いトレンド継続性のために複数のタイムフレームを組み込む.

結論

この戦略は,MAクロスオーバー理論に基づいて,ブル/ベアトレンドを単純かつ信頼性のある方法で識別する.利点はシンプルさと使いやすさであり,デメリットはトレンドフォローするリスクである.微調整パラメータ,補助指標の追加等により戦略のパフォーマンスを向上させることができる.投資家はリスクへの意欲に基づいてそれを使用することを選択することができます.


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

//@version=4
strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true)
src = input(title= "Kaynak", type=input.source, defval=close)
mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"])
Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999)
Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999)
//displacement = input(20, minval=1, title="Displacement")
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma
    ma
long = "M" //Aylık
ln = security(syminfo.ticker, long, src)
lnma = getMA(ln, Abar)
gnma = getMA(src, Gbar)
col1= gnma>gnma[1]
col3= gnma<gnma[1]
colorM = col1 ? color.green : col3 ? color.navy : color.yellow
l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3)
l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3)
fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90)
zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")
al  = crossover (gnma, lnma) and zamanaralik <= year
sat = crossover (lnma, gnma) and zamanaralik <= year
plotshape(al,  title = "Giriş",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

FromDay    = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12)
FromYear   = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005)
ToDay      = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if al
    strategy.entry("Al", strategy.long, when=Timerange())
if sat
    strategy.entry("Sat", strategy.short, when=Timerange())


もっと