マルチインジケータートレンドダイバージェンス定量取引戦略

BB RSI STOCH MFI EMA SMA
作成日: 2025-02-08 16:08:01 最終変更日: 2025-02-08 16:08:01
コピー: 0 クリック数: 420
1
フォロー
1617
フォロワー

マルチインジケータートレンドダイバージェンス定量取引戦略

概要

これは,複数の技術指標に基づいたトレンド追跡と偏差取引戦略である. この戦略は,市場における超買超売の機会を捉えるために,ブルリン帯 (Bollinger Bands),相対的に強い指標 (RSI),ランダムな指標 (Stochastic) および資金流動指標 (MFI) を統合的に使用し,複数の指標のクロス確認によって取引信号の信頼性を強化する.

戦略原則

この戦略は,取引信号を確認するために,複数のフィルタリングメカニズムを使用しています.

  1. ブリン帯 ((20,2) を価格波動区間の参照として使用し,価格がブリン帯を下回ったときに買取信号の予選を誘発する.
  2. RSI ((3) は,超買い超売り区間 ((85,15)) に設定され,RSIが15を上方突破すると超売りが確認される.
  3. ランダムな指標 ((10,3) の設定は ((85,15)) で,K線が上向きに15を突破すると,さらにオーバーセールが確認される。
  4. MFIの10周期EMAは,資金の流れを確認するために使用され,上昇傾向は買い方を支持する. 買入条件は,価格がブリン線下を突破し,RSIが超売れ,ランダムな指標が超売れ,MFIのトレンドが上昇すると同時に満たされる必要があります. 売る条件は逆で,価格がブリンを突破し,RSIが超買いを突破し,ランダムな指標が超買いを突破する.

戦略的優位性

  1. 複数の技術指標のクロス検証により,偽信号が著しく減少している.
  2. 傾向と動力の指標を組み合わせて,トレンドを捉え,逆転を予告する.
  3. 急速なRSI ((3サイクル) を採用して入場タイム効率を向上させる。
  4. MFIによる資金流動確認,取引の信頼性を高める.
  5. ブリン帯を変動基準として使用し,異なる市場環境に適応する.

戦略リスク

  1. 複数のインジケーターを使用すると、信号の遅延が発生し、最適なエントリー機会を逃す可能性があります。
  2. 横軸の振動市場では頻繁に取引が起こる可能性があります.
  3. 音に敏感である可能性が高い.
  4. 戦略の安定性を検証するには,より大きなサンプルが必要である. 次のリスク管理策が推奨されています.
  • ストップダストを設定する
  • 単一取引の規模を制御する
  • 異なる市場環境でパラメータを調整する
  • 市場特性を考慮して取引をフィルターします.

戦略最適化の方向性

  1. ダイナミック調整指数パラメータ:
  • 市場変動に適応するブリン帯のパラメータ
  • RSIとランダムな指標の周期設定
  1. 市場環境フィルターを追加します:
  • トレンドの強さの指標を追加
  • 交通量の変化を考慮する
  1. リスク管理の改善:
  • ダイナミック・ストローを実現する
  • ポジションの時間制限を増加させる
  1. 信号の最適化:
  • トレンド確認条件を追加
  • 値の最適化

要約する

この戦略は,複数の指標を協調して,比較的完全な取引システムを構築している.戦略の核心的な優点は,傾向,動態,資金流動などの複数の市場特性を考慮しながら,異なるタイプの指標の交叉検証によって信号信頼性を向上させることにある.一定の遅れのリスクがあるものの,合理的なパラメータ最適化とリスク管理措置によって,戦略は,優れた応用可能性を持っています.将来,戦略の安定性と収益性をさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2022-02-09 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
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/
// © ahmetkaratas4238

//@version=5
strategy("İzmir Stratejisi", overlay=true)

// **Bollinger Bantları Hesaplamaları**
bbLength = 20
bbMult = 2.0
basis = ta.sma(close, bbLength)
dev = bbMult * ta.stdev(close, bbLength)
upperBand = basis + dev
lowerBand = basis - dev

// **RSI (3,85,15) Hesaplaması**
rsiLength = 3
rsiUpper = 85
rsiLower = 15
rsi = ta.rsi(close, rsiLength)

// **Stochastic (10,3,85,15) Hesaplaması**
stochLength = 10
smoothK = 3
smoothD = 3
stochUpper = 85
stochLower = 15
k = ta.sma(ta.stoch(close, high, low, stochLength), smoothK)
d = ta.sma(k, smoothD)

// **Money Flow Index (MFI) Hesaplaması**
mfiLength = 14
mfi = ta.mfi(close, mfiLength)  // Hata düzeltildi: Artık yalnızca periyot alıyor
mfiTrendUp = ta.ema(mfi, 10) > ta.ema(mfi[1], 10)  // MFI yükseliş trendi
mfiTrendDown = ta.ema(mfi, 10) < ta.ema(mfi[1], 10) // MFI düşüş trendi

// **ALIM ŞARTLARI**
var bbBreakdown=false
var rsiBreakout=false
var stochBreakout=false
bbBreakdown := ta.crossunder(close,lowerBand)?true:bbBreakdown  // Fiyat BB altına sarktı mı?
rsiBreakout := ta.crossover(rsi, rsiLower)?true:rsiBreakout  // RSI 15 seviyesini yukarı kırdı mı?
stochBreakout := ta.crossover(k, stochLower)?true:stochBreakout  // Stochastic alt bandı yukarı kırdı mı?
buyCondition = bbBreakdown and rsiBreakout and stochBreakout and mfiTrendUp

// **SATIM ŞARTLARI**
var bbBreakup=false
var rsiBreakdown=false
var stochBreakdown=false
bbBreakup := ta.crossunder(close, upperBand)?true:bbBreakup  // Fiyat BB üst bandından aşağı kırdı mı?
rsiBreakdown := ta.crossunder(rsi, rsiUpper)?true:rsiBreakdown  // RSI 85 seviyesini aşağı kırdı mı?
stochBreakdown := ta.crossunder(k, stochUpper)?true:stochBreakdown  // Stochastic üst bandı aşağı kırdı mı?
sellCondition = bbBreakup and rsiBreakdown// and stochBreakdown and mfiTrendDown

if ta.crossunder(close,lowerBand)
    bbBreakup:=false
if ta.crossover(rsi, rsiLower)
    rsiBreakdown:=false
if ta.crossover(k, stochLower)
    stochBreakdown:=false

if ta.crossunder(close, upperBand)
    bbBreakdown:=false
if ta.crossunder(rsi, rsiUpper)
    rsiBreakout:=false
if ta.crossunder(k, stochUpper)
    stochBreakout:=false

// **Alım İşlemi Aç**
if buyCondition
    strategy.entry("Long", strategy.long)

// **Satım İşlemi Yap (Pozisyon Kapat)**
if sellCondition
    strategy.close("Long")

// **Bollinger Bantlarını Göster**
plot(upperBand, title="Üst BB", color=color.red)
plot(lowerBand, title="Alt BB", color=color.green)
plot(basis, title="Orta BB", color=color.blue)

// **Alım ve Satım Sinyallerini İşaretle**
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="AL")
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="SAT")