EMA RSI MACD strategi dagangan henti untung dan henti rugi dinamik

EMA RSI MACD
Tarikh penciptaan: 2024-06-14 15:38:17 Akhirnya diubah suai: 2024-06-14 15:38:17
Salin: 4 Bilangan klik: 767
1
fokus pada
1617
Pengikut

EMA RSI MACD strategi dagangan henti untung dan henti rugi dinamik

Gambaran keseluruhan

Strategi perdagangan ini menggabungkan tiga petunjuk teknikal iaitu EMA, RSI, dan MACD dengan menganalisis hubungan silang dan nilai mereka untuk menghasilkan isyarat beli dan jual apabila harga memenuhi syarat tertentu. Strategi ini juga menetapkan hentian dan hentian dinamik untuk menguruskan risiko perdagangan.

Prinsip Strategi

  1. Mengira purata harga penutupan yang tinggi dan rendah ((HLCC4) sebagai data asas strategi.
  2. Indeks EMA dan RSI berdasarkan HLCC4 yang dikira dalam tiga tempoh yang berbeza.
  3. Hitung nilai dari carta MACD.
  4. Untuk menilai persilangan antara EMA1 dan EMA2:
    • Apabila EMA1 memakai EMA2, ia akan menghasilkan isyarat penyokong.
    • Apabila EMA1 menembusi EMA2, ia menghasilkan isyarat penurunan.
  5. Mengambil kira nilai EMA, RSI dan MACD secara menyeluruh untuk menentukan sama ada syarat membeli atau menjual dipenuhi:
    • Syarat pembelian: EMA1 melalui EMA2, HLCC4 lebih tinggi daripada EMA3, RSI lebih tinggi daripada penurunan, harga penutupan lebih tinggi daripada harga bukaan, carta MACD bertiang adalah positif.
    • Syarat jual: EMA1 di bawah EMA2, HLCC4 di bawah EMA3, RSI di bawah nilai terhad, harga penutupan di bawah harga pembukaan, carta MACD negatif.
  6. Jika ada isyarat sebaliknya semasa memegang kedudukan, mulakan dengan melonggarkan kedudukan yang sedia ada, kemudian buka kedudukan baru.
  7. Apabila anda membeli atau menjual, anda boleh menetapkan harga hentian dan hentian kerugian berdasarkan jumlah mata yang ditetapkan.

Kelebihan Strategik

  1. Pengkajian gabungan pelbagai penunjuk teknikal meningkatkan kebolehpercayaan isyarat.
  2. Memperkenalkan mekanisme hentian hentian dinamik, yang dapat mengawal risiko dengan berkesan.
  3. Apabila terdapat isyarat sebaliknya, ia akan menghapuskan kedudukan asal, mengelakkan masalah memegang semula kedudukan.
  4. Parameter boleh laras, mudah disesuaikan, dan boleh dioptimumkan mengikut keadaan pasaran yang berbeza.

Risiko Strategik

  1. Dalam keadaan yang tidak menentu, persilangan yang kerap boleh menyebabkan terlalu banyak urus niaga dan meningkatkan kos bayaran.
  2. Penutupan berhenti dengan titik tetap mungkin tidak dapat menyesuaikan diri dengan turun naik pasaran, menyebabkan penutupan terlalu awal atau penutupan terlalu lewat.
  3. Strategi ini bergantung kepada data sejarah, dan mungkin tidak bertindak balas dengan segera terhadap kejadian yang tidak dijangka atau tindakan yang tidak biasa.

Arah pengoptimuman strategi

  1. Anda boleh mempertimbangkan untuk memperkenalkan lebih banyak petunjuk teknikal atau sentimen pasaran, seperti Brinks, ATR, dan lain-lain, untuk meningkatkan ketepatan isyarat.
  2. Untuk hentikan hentikan, anda boleh menggunakan cara yang lebih dinamik, seperti mengesan hentikan atau menyesuaikan jarak hentikan hentikan mengikut kadar turun naik.
  3. Ia boleh digabungkan dengan analisis asas, seperti peristiwa berita utama, data ekonomi yang dikeluarkan, dan sebagainya, untuk menapis isyarat perdagangan dan mengelakkan perdagangan pada masa-masa istimewa.
  4. Untuk menetapkan parameter, algoritma pembelajaran mesin atau pengoptimuman boleh digunakan untuk mencari kombinasi parameter yang optimum.

ringkaskan

Strategi ini menggabungkan beberapa petunjuk teknikal seperti EMA, RSI, dan MACD untuk membentuk satu sistem perdagangan yang lengkap. Dalam keadaan yang sedang tren, strategi ini dapat menangkap trend dengan berkesan dan mengawal risiko dengan menghentikan kerugian secara dinamik. Tetapi dalam keadaan yang goyah, perdagangan yang kerap mungkin mempengaruhi hasil.

Kod sumber strategi
/*backtest
start: 2023-06-08 00:00:00
end: 2024-06-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[BUY/SELL]EMA RSI MACD with TP and SL", overlay=true)

// Input parameters
ema1Length = input.int(9, title="EMA 1 Length")
ema2Length = input.int(21, title="EMA 2 Length")
ema3Length = input.int(34, title="EMA 3 Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.int(50, title="RSI Threshold")
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing")
tpPips = input.int(10, title="Take Profit (pips)")
slPips = input.int(10, title="Stop Loss (pips)")

// HLCC4 calculation
hlcc4_custom = (high + low + close + close) / 4

// Calculate EMA and RSI based on HLCC4
ema1 = ta.ema(hlcc4_custom, ema1Length)
ema2 = ta.ema(hlcc4_custom, ema2Length)
ema3 = ta.ema(hlcc4_custom, ema3Length)
rsi = ta.rsi(hlcc4_custom, rsiLength)

// Calculate MACD Histogram
[a, b, histogram] = ta.macd(hlcc4_custom, macdFastLength, macdSlowLength, macdSignalSmoothing)

// EMA1 and EMA2 crossover conditions
emaCrossUp = ta.crossover(ema1, ema2)
emaCrossDown = ta.crossunder(ema1, ema2)

// BUY signal conditions
buySignal = emaCrossUp and hlcc4_custom > ema3 and rsi > rsiThreshold and close > open and histogram > 0

// SELL signal conditions
sellSignal = emaCrossDown and hlcc4_custom < ema3 and rsi < rsiThreshold and close < open and histogram < 0

var float entryPrice = na
var float tpPrice = na
var float slPrice = na

// Check if there is an open position and a contrary signal appears, then close all old orders first
if strategy.opentrades > 0
    if sellSignal and strategy.position_size > 0
        strategy.close("Buy", comment="Close Buy Order")
    if buySignal and strategy.position_size < 0
        strategy.close("Sell", comment="Close Sell Order")

// Place a BUY order when there is a BUY signal and set TP and SL based on pips
if buySignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice + tpPips * syminfo.mintick
    slPrice := entryPrice - slPips * syminfo.mintick
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tpPrice, stop=slPrice)

// Place a SELL order when there is a SELL signal and set TP and SL based on pips
if sellSignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice - tpPips * syminfo.mintick
    slPrice := entryPrice + slPips * syminfo.mintick
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tpPrice, stop=slPrice)

// Plot the crossover points of EMA1 and EMA2
plotshape(series=emaCrossUp, location=location.belowbar, color=color.aqua, style=shape.triangleup, title="EMA Cross Up", size=size.small)
plotshape(series=emaCrossDown, location=location.abovebar, color=color.red, style=shape.triangledown, title="EMA Cross Down", size=size.small)

// Plot the EMA lines on the chart
plot(ema1, title="EMA 1", color=color.aqua)
plot(ema2, title="EMA 2", color=color.red)
plot(ema3, title="EMA 3", color=color.yellow, linewidth=2)