Pelacakan tren multi-periode waktu adaptif dinamis dan strategi komposit pembalikan guncangan

ICHIMOKU MACD RSI ATR STOCHASTIC RSI
Tanggal Pembuatan: 2025-02-20 14:25:14 Akhirnya memodifikasi: 2025-02-20 14:48:41
menyalin: 0 Jumlah klik: 339
2
fokus pada
319
Pengikut

Pelacakan tren multi-periode waktu adaptif dinamis dan strategi komposit pembalikan guncangan Pelacakan tren multi-periode waktu adaptif dinamis dan strategi komposit pembalikan guncangan

Ringkasan

Strategi ini adalah sistem perdagangan kompleks yang menggabungkan pelacakan tren dan perdagangan interval, identifikasi status pasar melalui diagram awan ichimoku, pengesahan dinamika MACD dan indikator overbought oversold RSI, serta pengelolaan stop loss dinamis menggunakan ATR. Strategi ini mampu menangkap peluang tren di pasar tren, mencari peluang reversal di pasar goyah, dan memiliki kemampuan adaptasi dan fleksibilitas yang kuat.

Prinsip Strategi

Strategi ini menggunakan mekanisme pengesahan sinyal bertingkat:

  1. Menggunakan grafik awan ichimoku sebagai dasar penilaian utama dari kondisi pasar, dengan hubungan posisi harga dengan awan untuk menentukan apakah pasar berada dalam keadaan tren atau bergolak
  2. Dalam pasar tren, ketika harga berada di atas awan dan RSI > 55 dan MACD pilar adalah positif, masuk lebih banyak; ketika harga berada di bawah awan dan RSI < 45 dan MACD pilar adalah negatif, masuk kosong
  3. Di pasar yang bergoyang, cari peluang melakukan plus ketika RSI <30 dan RSI acak <20; cari peluang melakukan short ketika RSI >70 dan RSI acak >80
  4. Menggunakan stop loss dinamis berbasis ATR untuk mengelola risiko dengan stop loss 2 kali dari nilai ATR

Keunggulan Strategis

  1. Adaptasi pasar yang kuat: kemampuan untuk menyesuaikan strategi perdagangan secara otomatis sesuai dengan kondisi pasar yang berbeda, meningkatkan stabilitas strategi
  2. Keandalan sinyal tinggi: Menggunakan mekanisme verifikasi multi-indikator untuk mengurangi dampak sinyal palsu
  3. Pengendalian risiko yang sempurna: Dengan ATR, stop loss dinamis memungkinkan pertumbuhan keuntungan yang penuh dan pengendalian risiko yang efektif
  4. Efek visualisasi yang baik: dengan warna latar belakang yang menandai keadaan pasar, memudahkan pedagang untuk memahami lingkungan pasar secara intuitif
  5. Kinerja siklus waktu tinggi yang sangat baik: memiliki faktor keuntungan 2.159 pada siklus garis matahari, keuntungan bersih mencapai 10.71%

Risiko Strategis

  1. Tingkat Kemenangan Rendah: Tingkat Kemenangan Rendah dari 40% untuk setiap periode waktu, membutuhkan ketahanan psikologis yang kuat
  2. Terlalu banyak transaksi dalam siklus waktu rendah: 430 transaksi dilakukan dalam siklus 4 jam, efisiensi rendah
  3. Keterlambatan sinyal: Kemungkinan kehilangan peluang pasar karena menggunakan verifikasi multi-indikator
  4. Sulit untuk mengoptimalkan parameter: kombinasi dari beberapa indikator meningkatkan kompleksitas untuk mengoptimalkan strategi

Arah optimasi strategi

  1. Optimasi penyaringan sinyal: Anda dapat meningkatkan tingkat kemenangan dengan menyesuaikan nilai ambang dari setiap indikator
  2. Adaptasi siklus waktu: disarankan untuk digunakan terutama pada siklus sunshine dan di atas, parameter dapat disesuaikan sesuai dengan karakteristik pasar yang berbeda
  3. Optimalisasi Stop Loss: Perkalian ATR dapat dipertimbangkan untuk menyesuaikan dengan dinamika pasar yang berbeda
  4. Optimasi waktu masuk: Anda dapat menambahkan konfirmasi volume atau konfirmasi bentuk harga untuk meningkatkan akurasi masuk
  5. Optimasi manajemen posisi: sistem manajemen posisi dinamis dapat dirancang berdasarkan intensitas sinyal

Meringkaskan

Strategi ini adalah sistem perdagangan komprehensif yang dirancang secara rasional dan logis yang jelas, yang memungkinkan identifikasi cerdas dari kondisi pasar dan menangkap peluang perdagangan dengan akurat melalui penggunaan kombinasi dari beberapa indikator. Meskipun ada beberapa masalah pada periode waktu rendah, namun kinerja yang sangat baik pada periode waktu yang lebih tinggi seperti garis matahari.

Kode Sumber Strategi
/*backtest
start: 2024-08-01 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FIWB

//@version=6
strategy("Refined Ichimoku with MACD and RSI Strategy", overlay=true)

// Inputs for Ichimoku Cloud
conversionLength = input.int(9, title="Conversion Line Length", group="Ichimoku Settings")
baseLength = input.int(26, title="Base Line Length", group="Ichimoku Settings")
laggingSpanLength = input.int(52, title="Lagging Span Length", group="Ichimoku Settings")
displacement = input.int(26, title="Displacement", group="Ichimoku Settings")

// Inputs for MACD
macdFastLength = input.int(12, title="MACD Fast Length", group="MACD Settings")
macdSlowLength = input.int(26, title="MACD Slow Length", group="MACD Settings")
macdSignalLength = input.int(9, title="MACD Signal Length", group="MACD Settings")

// Inputs for RSI/Stochastic RSI
rsiLength = input.int(14, title="RSI Length", group="Momentum Indicators")
stochRsiLength = input.int(14, title="Stochastic RSI Length", group="Momentum Indicators")
stochRsiK = input.int(3, title="%K Smoothing", group="Momentum Indicators")
stochRsiD = input.int(3, title="%D Smoothing", group="Momentum Indicators")

// Inputs for ATR
atrLength = input.int(14, title="ATR Length", group="Risk Management")
atrMultiplier = input.float(2.0, title="ATR Multiplier", group="Risk Management")

// Ichimoku Cloud Calculation
conversionLine = (ta.highest(high, conversionLength) + ta.lowest(low, conversionLength)) / 2
baseLine = (ta.highest(high, baseLength) + ta.lowest(low, baseLength)) / 2
leadingSpanA = (conversionLine + baseLine) / 2
leadingSpanB = (ta.highest(high, laggingSpanLength) + ta.lowest(low, laggingSpanLength)) / 2

// Market Regime Detection Using Ichimoku Cloud
priceAboveCloud = close >= leadingSpanA and close >= leadingSpanB
priceBelowCloud = close <= leadingSpanA and close <= leadingSpanB
priceNearCloud = close > leadingSpanB and close < leadingSpanA

trendingMarket = priceAboveCloud or priceBelowCloud
rangeBoundMarket = priceNearCloud

// MACD Calculation
macdLine = ta.ema(close, macdFastLength) - ta.ema(close, macdSlowLength)
macdSignalLine = ta.sma(macdLine, macdSignalLength)
macdHistogram = macdLine - macdSignalLine

// RSI Calculation
rsiValue = ta.rsi(close, rsiLength)

// Stochastic RSI Calculation
stochRsiKValue = ta.sma(ta.stoch(close, high, low, stochRsiLength), stochRsiK)
stochRsiDValue = ta.sma(stochRsiKValue, stochRsiD)

// Entry Conditions with Tightened Filters
trendLongCondition = trendingMarket and priceAboveCloud and rsiValue > 55 and macdHistogram > 0 and stochRsiKValue > stochRsiDValue
trendShortCondition = trendingMarket and priceBelowCloud and rsiValue < 45 and macdHistogram < 0 and stochRsiKValue < stochRsiDValue

rangeLongCondition = rangeBoundMarket and rsiValue < 30 and stochRsiKValue < 20
rangeShortCondition = rangeBoundMarket and rsiValue > 70 and stochRsiKValue > 80

// Risk Management: Stop-Loss Based on ATR
atrValue = ta.atr(atrLength)
longStopLoss = low - atrMultiplier * atrValue
shortStopLoss = high + atrMultiplier * atrValue

// Strategy Execution: Entries and Exits
if trendLongCondition
    strategy.entry("Trend Long", strategy.long)
    strategy.exit("Exit Trend Long", from_entry="Trend Long", stop=longStopLoss)

if trendShortCondition
    strategy.entry("Trend Short", strategy.short)
    strategy.exit("Exit Trend Short", from_entry="Trend Short", stop=shortStopLoss)

if rangeLongCondition
    strategy.entry("Range Long", strategy.long)
    strategy.exit("Exit Range Long", from_entry="Range Long", stop=longStopLoss)

if rangeShortCondition
    strategy.entry("Range Short", strategy.short)
    strategy.exit("Exit Range Short", from_entry="Range Short", stop=shortStopLoss)

// Visualization: Highlight Market Regimes on Chart Background
bgcolor(trendingMarket ? color.new(color.green, 90) : na)
bgcolor(rangeBoundMarket ? color.new(color.red, 90) : na)

// Plot Ichimoku Cloud for Visualization
plot(leadingSpanA, color=color.new(color.green, 80), title="Leading Span A")
plot(leadingSpanB, color=color.new(color.red, 80), title="Leading Span B")