正確なトレンド逆転移動平均クロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2024-01-22 12:14:29
タグ:

img

概要

この戦略は"ゴールデンクロスデスクロス戦略"と呼ばれています.その核心の考え方は,異なるタイムフレームの2つの移動平均値のゴールデンクロスとデスクロスによって生成される強力な信号を活用して,市場のトレンド逆転を捉え,低価格/高価格で利益を得ることです.

戦略の論理

この戦略では,50期および200期単動平均線 (SMA) を計算します.伝統的に,50日SMAが200日SMAを下回ると,それは下落見通しを示す"死クロス"と呼ばれ,50日SMAが200日SMAを下回ると,それは上昇傾向を示す"黄金クロス"です.

取引の論理は,単にこれらの信号に基づいてポジションを取ること - 死のクロスでショート,黄金のクロスでロング.これは,市場のトレンドが逆転するときに,転換点の周りに利益を得ることを可能にします.

さらに,この戦略はバックテストのためのカスタマイズ可能な日付範囲を提供します. そのため,私たちは異なる期間におけるこれらのクロスオーバー信号の実際の有効性を調べることができます.

利点

  1. 重要な領域の近くで開いたポジションにトレンド逆転点を効果的に捕捉します
  2. 異なる期間の2つのSMAを組み合わせると,誤った信号をフィルターします.
  3. バックテスト機能は,市場体制の実際のパフォーマンスを調べます.
  4. クリーングラフは,クロスオーバー信号と位置変化を視覚的に表示します

リスク

  1. SMAは極端な逆転を遅らせ,予測できない.
  2. バックテストデータは,コストや滑りから生動性能と異なる場合があります.
  3. SMA期間のようなパラメータ選択は結果に影響を及ぼします
  4. メカニカルな取引ではなく,基本と技術的なものを組み込む必要があります

リスクに対処するために パラメータを最適化し フィルターを追加し リスクを管理し 戦略を紙に書き替えて リスクを最小限に抑えます

増進 の 機会

この戦略を最適化する主な方法は以下の通りです.

  1. 異なる期間の組み合わせのSMAをテストする
  2. 音量や波動性などのフィルターを追加し,
  3. 経済データやニュースをフィルターに組み込む
  4. 移動/タイムストップなどのストップ損失メカニズムを実装する
  5. 異なる保持期間における業績の評価

パラメーターの影響を調べることで よりよい移動平均のクロスオーバーシステムを 発見できます

結論

この戦略は,市場における重要な転換点を把握するために,移動平均のクラシックな技術指標を活用する. シンプルな論理と便利なバックテスト機能により,より広範なシステムの一部としてトレンドを追跡するのに役立ちます. しかし,現実世界の取引は,盲目的に信号に依存するのではなく,さまざまな外部要因を考慮する必要があります.


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[S_R__9] - Death and Golden Cross", overlay=true)

// Specific Time Date Range For Backtest
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31, group='DATE CONFIG')
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12, group='DATE CONFIG')
startYear = input.int(title='Start Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

endDate = input.int(title='End Date', defval=31, minval=1, maxval=31, group='DATE CONFIG')
endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12, group='DATE CONFIG')
endYear = input.int(title='End Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

SPECIFIC_DATE = input.bool(title='USE SPECIFIC DATE ?', defval=false, group='DATE CONFIG')

inDateRange = SPECIFIC_DATE ? time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0) and time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0) : true

// Calculate 50 SMA and 200 SMA
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)

// Detect a Death Cross (50 SMA crossing below 200 SMA)
deathCross = ta.crossunder(sma50, sma200)
// Detect a Golden Cross (50 SMA crossing above 200 SMA)
goldenCross = ta.crossover(sma50, sma200)

// Strategy Execution
if (inDateRange)
    if (deathCross)
        strategy.entry("Death Cross long", strategy.short)

    if (goldenCross)
        strategy.entry("Golden Cross short", strategy.long)

// Plot SMAs
plot(sma50, color=color.red, title="50 SMA")
plot(sma200, color=color.blue, title="200 SMA")

// Plotting Death Cross signal
plotshape(series=deathCross and inDateRange, title="Death Cross Signal", location=location.belowbar, color=color.red, style=shape.labeldown, text="DEATH CROSS")

// Plotting Golden Cross signal
plotshape(series=goldenCross and inDateRange, title="Golden Cross Signal", location=location.abovebar, color=color.green, style=shape.labelup, text="GOLDEN CROSS")


もっと