Sumber dimuat naik... memuat...

EMA RSI MACD Dinamis mengambil keuntungan dan hentikan strategi perdagangan kerugian

Penulis:ChaoZhang, Tarikh: 2024-06-14 15:38:17
Tag:EMARSIMACD

img

Ringkasan

Strategi perdagangan ini menggabungkan tiga penunjuk teknikal: Purata Bergerak Eksponensial (EMA), Indeks Kekuatan Relatif (RSI), dan Divergensi Convergensi Purata Bergerak (MACD). Dengan menganalisis persimpangan dan hubungan nilai mereka, ia menghasilkan isyarat beli dan jual apabila harga memenuhi syarat tertentu. Di samping itu, strategi ini menggabungkan mengambil keuntungan dinamik dan menghentikan kerugian untuk menguruskan risiko perdagangan.

Prinsip Strategi

  1. Mengira purata harga tinggi, rendah dan dekat (HLCC4) sebagai data asas untuk strategi.
  2. Mengira tiga EMA dengan tempoh yang berbeza dan RSI berdasarkan HLCC4.
  3. Mengira nilai histogram MACD.
  4. Tentukan keadaan persilangan EMA1 dan EMA2:
    • Apabila EMA1 melintasi di atas EMA2, ia menghasilkan isyarat menaik.
    • Apabila EMA1 melintasi di bawah EMA2, ia menghasilkan isyarat penurunan.
  5. Pertimbangkan secara komprehensif nilai penunjuk EMA, RSI, dan MACD untuk menentukan sama ada syarat untuk membeli atau menjual dipenuhi:
    • Keadaan beli: EMA1 melintasi di atas EMA2, HLCC4 lebih tinggi daripada EMA3, RSI di atas ambang, harga penutupan lebih tinggi daripada harga pembukaan, dan histogram MACD positif.
    • Keadaan jual: EMA1 melintasi di bawah EMA2, HLCC4 lebih rendah daripada EMA3, RSI di bawah ambang, harga penutupan lebih rendah daripada harga pembukaan, dan histogram MACD negatif.
  6. Jika isyarat bertentangan muncul semasa memegang kedudukan, tutup kedudukan semasa sebelum membuka yang baru.
  7. Apabila membeli atau menjual, tetapkan harga mengambil keuntungan dan menghentikan kerugian berdasarkan bilangan pip yang ditentukan.

Kelebihan Strategi

  1. Menggabungkan beberapa penunjuk teknikal untuk penilaian komprehensif, meningkatkan kebolehpercayaan isyarat.
  2. Memperkenalkan mekanisme mengambil keuntungan dan menghentikan kerugian yang dinamik untuk mengawal risiko dengan berkesan.
  3. Menutup kedudukan semasa sebelum membuka yang baru apabila isyarat bertentangan muncul, mengelakkan isu kedudukan berganda.
  4. Parameter yang boleh diselaraskan, kebolehsesuaian yang kuat, dan boleh dioptimumkan mengikut persekitaran pasaran yang berbeza.

Risiko Strategi

  1. Dalam pasaran sampingan, persilangan yang kerap boleh membawa kepada perdagangan berlebihan, meningkatkan kos transaksi.
  2. Pendapatan dan stop loss yang tetap mungkin tidak disesuaikan dengan turun naik pasaran, mengakibatkan stop loss yang lebih awal atau mengambil keuntungan yang ditangguhkan.
  3. Strategi ini bergantung kepada data sejarah dan mungkin tidak bertindak balas dengan tepat pada masa terhadap peristiwa tiba-tiba atau keadaan pasaran yang tidak normal.

Arahan Pengoptimuman Strategi

  1. Pertimbangkan untuk memperkenalkan lebih banyak penunjuk teknikal atau penunjuk sentimen pasaran, seperti Bollinger Bands dan ATR, untuk meningkatkan ketepatan isyarat.
  2. Untuk mengambil keuntungan dan menghentikan kerugian, gunakan pendekatan yang lebih dinamik, seperti menghentikan kerugian atau menyesuaikan jarak mengambil keuntungan dan menghentikan kerugian berdasarkan turun naik.
  3. Menggabungkan analisis asas, seperti peristiwa berita utama dan siaran data ekonomi, untuk menapis isyarat perdagangan dan mengelakkan perdagangan semasa tempoh khas.
  4. Untuk tetapan parameter, gunakan pembelajaran mesin atau algoritma pengoptimuman untuk mencari kombinasi parameter yang optimum.

Ringkasan

Strategi ini membentuk sistem dagangan yang lengkap dengan menggabungkan beberapa penunjuk teknikal seperti EMA, RSI, dan MACD. Di pasaran yang sedang berkembang, strategi ini dapat menangkap trend dan mengawal risiko dengan berkesan melalui mengambil keuntungan dinamik dan menghentikan kerugian. Walau bagaimanapun, di pasaran sampingan, perdagangan yang kerap boleh mempengaruhi keuntungan. Pada masa akan datang, strategi ini boleh disempurnakan dari segi pengoptimuman isyarat, pengoptimuman kawalan risiko, dan pengoptimuman parameter untuk meningkatkan kestabilan dan keuntungan.


/*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)

Berkaitan

Lebih lanjut