Sumber daya yang dimuat... Pemuatan...

SMA-RSI-MACD Multi-Indicator Dynamic Limit Order Trading Strategy

Penulis:ChaoZhang, Tanggal: 2024-12-11 15:15:49
Tag:SMARSIMACDEMA

img

Gambaran umum

Strategi ini adalah sistem perdagangan indikator multi-teknis yang terutama menggunakan EMA crossover, kondisi oversold RSI, dan MACD golden cross untuk konfirmasi perdagangan. Strategi ini menggunakan order limit dinamis untuk masuk dan beberapa mekanisme keluar untuk manajemen risiko. Strategi ini menggunakan 9-periode dan 21-periode Exponential Moving Averages (EMA) sebagai indikator tren utama, dikombinasikan dengan Relative Strength Index (RSI) dan Moving Average Convergence Divergence (MACD) untuk menyaring sinyal perdagangan.

Prinsip Strategi

Logika perdagangan inti mencakup komponen utama berikut:

  1. Sinyal masuk dipicu ketika EMA 9 periode melintasi EMA 21 periode
  2. Harga masuk ditetapkan sebagai pesanan batas di bawah EMA 9 periode pada offset tertentu
  3. Konfirmasi perdagangan membutuhkan RSI di bawah ambang batas dan MACD golden cross
  4. Sinyal keluar termasuk MACD death cross, titik profit/loss tetap dan penutupan paksa di akhir pasar
  5. Waktu perdagangan dibatasi antara jam 9:30 pagi dan 3:10 malam

Strategi ini menggunakan pesanan batas untuk masuk untuk mencapai harga masuk yang lebih baik dan menggabungkan beberapa indikator teknis untuk meningkatkan akurasi perdagangan.

Keuntungan Strategi

  1. Mekanisme konfirmasi beberapa sinyal meningkatkan keandalan perdagangan
  2. Entri pesanan batas memberikan harga eksekusi yang lebih baik
  3. Nilai profit/loss tetap memudahkan pengendalian risiko
  4. Penutupan paksa di akhir pasar menghilangkan risiko overnight
  5. Pembatasan waktu perdagangan menghindari volatilitas pembukaan
  6. Indikator EMA memberikan respons tren yang lebih cepat
  7. Kombinasi RSI dan MACD membantu menyaring sinyal palsu

Risiko Strategi

  1. Beberapa konfirmasi sinyal dapat menyebabkan kesempatan yang hilang
  2. Perintah batas mungkin tidak dieksekusi dalam pergerakan harga yang cepat
  3. Stop titik tetap dapat mengakibatkan kerugian yang lebih besar selama volatilitas tinggi
  4. Sinyal MACD mungkin tertinggal dari pergerakan harga
  5. Strategi tidak memperhitungkan perubahan volatilitas pasar
  6. Optimasi parameter dapat menyebabkan overfitting

Arah Optimasi Strategi

  1. Memperkenalkan titik stop-loss dan take-profit adaptif berdasarkan volatilitas pasar
  2. Tambahkan indikator volume sebagai sinyal konfirmasi tambahan
  3. Pertimbangkan untuk menambahkan filter kekuatan tren
  4. Mengoptimalkan perhitungan perpindahan urutan batas menggunakan ATR
  5. Sertakan indikator sentimen pasar untuk menyaring kondisi yang tidak menguntungkan
  6. Tambahkan mekanisme ukuran posisi berdasarkan kekuatan sinyal

Ringkasan

Ini adalah strategi perdagangan multi-indikator yang terstruktur dengan baik yang mengidentifikasi tren menggunakan rata-rata bergerak, menyaring sinyal dengan RSI dan MACD, dan mengendalikan risiko melalui pesanan batas dan mekanisme stop ganda. Kekuatan strategi ini terletak pada keandalan sinyal dan kontrol risiko yang komprehensif, meskipun menghadapi tantangan dengan lag sinyal dan optimasi parameter. Ada ruang yang signifikan untuk perbaikan melalui penyesuaian parameter dinamis dan indikator tambahan.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true)

// Inputs for Simple Moving Averages
sma_short = ta.ema(close, 9)
sma_long = ta.ema(close, 21)

// Plotting SMA
plot(sma_short, color=color.green, title="SMA 9")
plot(sma_long, color=color.red, title="SMA 21")

// RSI Calculation
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(70, title="RSI Threshold")
rsi = ta.rsi(close, rsi_length)

// MACD Calculation
macd_fast = input.int(8, title="MACD Fast Length")
macd_slow = input.int(18, title="MACD Slow Length")
macd_signal = input.int(6, title="MACD Signal Length")
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)

// Inputs for Limit Order Offset
limit_offset = input.int(50, title="Limit Order Offset", minval=1)  // 50 points below 9 EMA

// User input for specific date
simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates")
simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates")

// Declare limit_price as float
var float limit_price = na

// Calculate Limit Order Price
if (sma_short[1] < sma_long[1] and sma_short > sma_long)  // 9 EMA crosses above 21 EMA
    limit_price := sma_short - limit_offset

// Buy Signal Condition (only on the specified date)
buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line) 

// Sell Signal Condition (MACD crossover down)
sell_condition = ta.crossunder(macd_line, signal_line)

// Track Entry Price for Point-Based Exit
var float entry_price = na

if (buy_condition )
    strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price)
    label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white)
    entry_price := limit_price  // Set entry price

// Exit Conditions
exit_by_macd = sell_condition
exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12))  // Adjust as per exit points

// Exit all positions at the end of the day
if hour == 15 and minute > 10 and strategy.position_size > 0
    strategy.close_all()  // Close all positions at the end of the day
    strategy.cancel_all()  

// Exit based on sell signal or point movement
if (exit_by_macd or exit_by_points  and strategy.position_size > 0 )
    strategy.close("Buy")
    label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)

 

Berkaitan

Lebih banyak