Strategi perdagangan stop-profit dan stop-loss dinamis EMA RSI MACD

EMA RSI MACD
Tanggal Pembuatan: 2024-06-14 15:38:17 Akhirnya memodifikasi: 2024-06-14 15:38:17
menyalin: 4 Jumlah klik: 767
1
fokus pada
1617
Pengikut

Strategi perdagangan stop-profit dan stop-loss dinamis EMA RSI MACD

Ringkasan

Strategi perdagangan ini menggabungkan tiga indikator teknis, yaitu indeks moving average (EMA), relative strength index (RSI), dan moving average convergence spread (MACD), untuk menghasilkan sinyal jual beli dengan menganalisis hubungan silang dan numerik mereka ketika harga memenuhi kondisi tertentu. Strategi ini juga mengatur stop and loss dinamis untuk mengelola risiko perdagangan.

Prinsip Strategi

  1. Menghitung nilai rata-rata harga close-out yang tinggi atau rendah (HLCC4) sebagai data dasar strategi.
  2. Indikator EMA dan RSI berdasarkan HLCC4 dihitung dalam tiga periode berbeda.
  3. Hitung nilai dari MACD column diagram.
  4. Untuk menilai persilangan antara EMA1 dan EMA2:
    • Ketika EMA1 memakai EMA2, maka akan menghasilkan sinyal sentuh.
    • Ketika EMA1 turun melewati EMA2, maka akan ada sinyal turun.
  5. Pertimbangan EMA, RSI, dan MACD secara komprehensif untuk menentukan apakah kondisi pembelian atau penjualan terpenuhi:
    • Kondisi pembelian: EMA1 dengan EMA2, HLCC4 lebih tinggi dari EMA3, RSI lebih tinggi dari penurunan, harga close out lebih tinggi dari harga open out, MACD pilar positif.
    • Kondisi jual: EMA1 di bawah EMA2, HLCC4 di bawah EMA3, RSI di bawah defisit, harga close out di bawah harga open out, MACD pilar negatif.
  6. Jika ada sinyal sebaliknya saat memegang posisi, tutup posisi sebelumnya dan buka posisi baru.
  7. Saat membeli atau menjual, atur harga stop stop dan stop loss sesuai dengan jumlah poin yang ditetapkan.

Keunggulan Strategis

  1. Dengan adanya beberapa indikator teknis untuk penilaian terpadu, meningkatkan keandalan sinyal.
  2. Dengan adanya mekanisme stop loss yang dinamis, risiko dapat dikendalikan secara efektif.
  3. Pada saat muncul sinyal sebaliknya, posisi yang ada akan dihapus terlebih dahulu, untuk menghindari masalah pemegang posisi berulang.
  4. Parameter dapat disesuaikan, beradaptasi, dan dapat dioptimalkan sesuai dengan lingkungan pasar yang berbeda.

Risiko Strategis

  1. Dalam situasi yang bergejolak, persimpangan yang sering dapat menyebabkan transaksi yang berlebihan dan meningkatkan biaya biaya.
  2. Stop loss dengan poin tetap mungkin tidak dapat beradaptasi dengan fluktuasi pasar, menyebabkan stop loss terlalu dini atau stop loss terlalu terlambat.
  3. Strategi ini bergantung pada data historis dan mungkin tidak dapat bereaksi dengan cepat terhadap kejadian atau tindakan yang tidak biasa.

Arah optimasi strategi

  1. Anda dapat mempertimbangkan untuk memperkenalkan lebih banyak indikator teknis atau indikator sentimen pasar, seperti Brinks, ATR, dan sebagainya, untuk meningkatkan akurasi sinyal.
  2. Untuk stop loss, Anda dapat menggunakan cara yang lebih dinamis, seperti melacak stop loss atau menyesuaikan jarak stop loss sesuai dengan fluktuasi.
  3. Ini dapat digabungkan dengan analisis fundamental, seperti berita besar, data ekonomi, dan sebagainya, untuk memfilter sinyal perdagangan dan menghindari perdagangan pada periode khusus.
  4. Untuk pengaturan parameter, algoritma pembelajaran mesin atau optimasi dapat digunakan untuk mencari kombinasi parameter yang optimal.

Meringkaskan

Strategi ini menggabungkan beberapa indikator teknis seperti EMA, RSI, dan MACD untuk membentuk satu set sistem perdagangan yang lengkap. Dalam situasi yang sedang tren, strategi ini dapat secara efektif menangkap tren dan mengendalikan risiko dengan stop loss yang dinamis. Tetapi dalam situasi yang goyah, perdagangan yang sering dapat mempengaruhi keuntungan.

Kode 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)