Strategi Moving Average Golden Crossover RSI MACD


Tanggal Pembuatan: 2024-01-05 16:11:23 Akhirnya memodifikasi: 2024-01-05 16:11:23
menyalin: 0 Jumlah klik: 649
1
fokus pada
1617
Pengikut

Strategi Moving Average Golden Crossover RSI MACD

Ringkasan

Strategi ini adalah strategi kombinasi yang menggunakan RSI, MACD, dan moving averages. Ini menggabungkan sinyal overbought dan oversold RSI, sensitivitas MACD, dan efek indikator dari moving averages dalam menentukan kapan harus masuk ke pasar.

Prinsip Strategi

Strategi ini didasarkan pada empat kriteria utama untuk membuat keputusan masuk lebih banyak:

  1. Garis pilar MACD lebih besar dari parameter masuk multihead yang ditetapkan;
  2. RSI lebih besar dari 50, menunjukkan kondisi overbought;
  3. EMA jangka pendek di atas EMA jangka panjang, membentuk persilangan emas;
  4. EMA jangka panjang di atas harga penutupan dan lebih tinggi dari EMA jangka panjang ditambah stop loss ATR.

Strategi ini akan melakukan stop loss jika dua kondisi berikut ini terpenuhi:

  1. pilar MACD lebih kecil dari parameter stop loss yang ditetapkan;
  2. EMA jangka pendek di bawah EMA jangka panjang.

Dengan demikian, strategi ini dapat menghentikan kerugian pada saat keuntungan ditarik kembali, dan menghindari kerugian yang lebih besar.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah kombinasi dari indikator yang digunakan, yang memanfaatkan keuntungan dari masing-masing indikator, yaitu:

  1. Penggunaan RSI menghindari kerugian biaya transaksi yang disebabkan oleh pembukaan posisi berulang dalam situasi yang bergolak.
  2. Sensitivitas indikator MACD Pillar memastikan bahwa titik-titik pergeseran terjadi tepat waktu.
  3. Rata-rata bergerak menyaring kebisingan pasar garis pendek dan memberikan efek indikator.

Risiko dan Solusi

Strategi ini memiliki dua risiko utama:

  1. Resikonya lebih besar. Strategi trending seperti moving averages memiliki risiko lebih besar dari resikonya yang lebih besar. Resikonya lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari resikonya yang lebih besar dari

  2. Parameter optimasi sulit. Pengaturan dan pengoptimalan parameter strategi kombinasi multi-indikator lebih sulit. Metode pengoptimalan parameter seperti stepwise, algoritma genetik dan lain-lain dapat digunakan untuk menentukan parameter optimal.

Optimalkan Pikiran

Strategi ini dapat terus dioptimalkan dalam beberapa hal:

  1. Menambahkan kondisi tambahan untuk memfilter lebih jauh sinyal palsu. Misalnya, kombinasi indikator volume transaksi, indikator volatilitas, dll.

  2. Uji perbedaan pengaturan parameter dari berbagai varietas. Sesuaikan parameter untuk lebih banyak varietas.

  3. Optimalkan pengaturan parameter moving average. Uji perbedaan parameter dengan panjang yang berbeda.

  4. Adaptasi rata-rata bergerak digunakan dalam penelitian.

Meringkaskan

Secara keseluruhan, strategi ini adalah versi optimasi dari strategi pergerakan rata-rata dan trend tracking. Strategi ini menyerap keunggulan dari beberapa indikator utama seperti MACD, RSI, dan lain-lain. Strategi ini unik dalam menentukan waktu masuk ke pasar dan penghentian kerugian.

Kode Sumber Strategi
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true)

// Inputs
src = input(close, title="RSI Source")

// RSI Settings
lengthRSI = input.int(14, minval=1)

// Stop Loss Settings
stopLossPct = input.float(0.09, title="Stop Loss Percentage")
takeProfitPct = input.float(0.15, title="Take Profit Percentage")

// MACD Settings
fastlen = input(12)
slowlen = input(26)
siglen = input(9)

// Strategy Settings
longEntry = input(0, title="Long Entry Level")
exitLevel = input(0, title="Exit Level")

// EMA Settings
emaShortLength = input(8, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")

atrMultiplier = input.float(2, title="atrMultiplier")
atrLength = input.int(20, title="atrLength")

// Indicators
rsi1 = ta.rsi(src, lengthRSI)
[macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen)

// Calculate EMAs
emaShort = ta.ema(src, emaShortLength)
emaLong = ta.ema(src, emaLongLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Variables
var bool canEnterLong = na

// Strategy conditions
longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr

// Entries and Exits
if hist < exitLevel and emaShort < emaLong
    canEnterLong := true
    strategy.close("Long")
    
// Store last entry price
var lastEntryPrice = float(na)
var lastEntryPrice2 = float(na)
if longCondition
    strategy.entry("Long", strategy.long)
    canEnterLong := false
    lastEntryPrice := close
if lastEntryPrice < close
    lastEntryPrice := close
// Calculate Stop Loss and Take Profit Levels based on last entry price
stopLossLevel = lastEntryPrice * (1 - stopLossPct)

// Check for stop loss and take profit levels and close position if triggered
if (strategy.position_size > 0)
    last_buy = strategy.opentrades[0]
    if (close < stopLossLevel)
        strategy.close("Long", comment="Stop Loss Triggered")
    if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) )
        strategy.close("Long", comment="Take Profit Triggered")