Moving Average Golden Crossover RSI Strategi MACD


Tarikh penciptaan: 2024-01-05 16:11:23 Akhirnya diubah suai: 2024-01-05 16:11:23
Salin: 0 Bilangan klik: 649
1
fokus pada
1617
Pengikut

Moving Average Golden Crossover RSI Strategi MACD

Gambaran keseluruhan

Strategi ini adalah strategi gabungan yang menggunakan RSI, MACD dan purata bergerak. Ia menggabungkan isyarat overbought dan oversold RSI, sensitiviti MACD dan kesan indikator purata bergerak dalam menentukan masa masuk ke pasaran.

Prinsip Strategi

Strategi ini memberi tumpuan kepada empat faktor utama dalam membuat keputusan:

  1. tiang MACD lebih besar daripada parameter masuk ke arah yang ditetapkan;
  2. RSI lebih besar daripada 50, menunjukkan keadaan overbought;
  3. EMA jangka pendek di atas EMA jangka panjang, membentuk silang emas;
  4. Harga penutupan memakai EMA jangka panjang, dan lebih tinggi daripada EMA jangka panjang ditambah dengan stop loss ATR.

Strategi ini menamatkan kerugian apabila dua syarat berikut dipenuhi:

  1. tiang MACD lebih kecil daripada parameter stop loss yang ditetapkan;
  2. EMA jangka pendek mengatasi EMA jangka panjang.

Dengan cara ini, strategi ini dapat menghentikan kerugian semasa keuntungan ditarik balik dan mengelakkan kerugian yang lebih besar.

Analisis kelebihan

Kelebihan utama strategi ini ialah ia menggunakan kombinasi indikator yang menggunakan kelebihan masing-masing, iaitu:

  1. Penggunaan RSI mengelakkan kerugian kos dagangan yang disebabkan oleh pembukaan kedudukan berulang dalam keadaan yang tidak menentu.
  2. Sensitiviti indikator MACD memastikan ia menangkap titik perubahan dalam masa yang tepat.
  3. Rata-rata bergerak menyaring bunyi pasaran garis pendek untuk memberi kesan indikator.

Risiko dan Penyelesaian

Strategi ini mempunyai dua risiko utama:

  1. Risiko penarikan balik yang lebih besar. Risiko terbesar untuk strategi trend seperti purata bergerak adalah penarikan balik yang lebih besar yang disebabkan oleh perubahan pasaran. Penarikan balik boleh dikawal secara aktif dengan mengurangkan saiz kedudukan dan tetapan hentikan kerugian.

  2. Pengoptimuman parameter adalah lebih sukar. Pengaturan parameter dan pengoptimuman strategi gabungan pelbagai indikator adalah lebih sukar. Kaedah pengoptimuman parameter seperti kaedah langkah, algoritma genetik dan lain-lain boleh digunakan untuk menentukan parameter yang optimum.

Optimum idea

Strategi ini boleh terus dioptimumkan dalam beberapa aspek:

  1. Menambah syarat tambahan untuk menyaring lebih jauh daripada isyarat palsu. Contohnya, menggabungkan indikator jumlah dagangan, indikator kadar turun naik dan sebagainya.

  2. Uji perbezaan tetapan parameter untuk pelbagai jenis. Sesuaikan parameter untuk lebih banyak jenis.

  3. Mengoptimumkan parameter purata bergerak. Uji perbezaan parameter panjang yang berbeza.

  4. Kajian ini menggunakan purata bergerak yang beradaptasi. Ia menggunakan kombinasi parameter yang berlainan untuk beralih mengikut keadaan pasaran.

ringkaskan

Secara keseluruhan, strategi ini adalah strategi pengesanan rata-rata bergerak dan trend trend yang tipikal. Ia menyerap kelebihan beberapa petunjuk utama seperti MACD, RSI, dan lain-lain. Ia unik dalam menentukan masa masuk ke pasaran dan menghentikan kerugian.

Kod 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")