Sumber daya yang dimuat... Pemuatan...

Sistem Perdagangan Penembusan Rata-rata Bergerak Dual Dinamis

Penulis:ChaoZhang, Tanggal: 2024-12-05 16:22:32
Tag:EMASMASilang

img

Gambaran umum

Ini adalah sistem strategi perdagangan otomatis berdasarkan crossover rata-rata bergerak ganda. Sistem ini menggunakan rata-rata bergerak eksponensial (EMA) 9 periode dan 21 periode sebagai indikator inti, menghasilkan sinyal perdagangan melalui crossover mereka.

Prinsip Strategi

Sistem ini menggunakan EMA cepat (9 periode) dan EMA lambat (21-periode) untuk membangun sistem perdagangan. Sinyal panjang dihasilkan ketika EMA cepat melintasi EMA lambat, sementara sinyal pendek terjadi ketika EMA cepat melintasi EMA lambat. Sistem secara otomatis menetapkan stop-loss dan take-profit level berdasarkan persentase yang telah ditetapkan untuk setiap perdagangan.

Keuntungan Strategi

  1. Sinyal yang jelas: Menggunakan crossover rata-rata bergerak sebagai sinyal perdagangan yang jelas dan mudah dipahami
  2. Pengendalian risiko: Sistem manajemen stop-loss dan take-profit terintegrasi untuk setiap perdagangan
  3. Dukungan visual: Menyediakan tampilan label perdagangan yang menampilkan waktu masuk, harga, stop-loss, dan level take profit
  4. Parameter Fleksibel: Memungkinkan penyesuaian periode EMA dan parameter manajemen risiko untuk beradaptasi dengan kondisi pasar yang berbeda
  5. Mekanisme Keluar Lengkap: Otomatis menutup posisi pada sinyal sebaliknya untuk menghindari posisi offsetting

Risiko Strategi

  1. Risiko pasar berbelit-belit: Dapat menghasilkan sinyal pecah palsu yang sering terjadi di pasar sampingan, yang menyebabkan kerugian berturut-turut
  2. Risiko slippage: Harga eksekusi yang sebenarnya dapat menyimpang dari tingkat yang direncanakan selama periode volatilitas tinggi
  3. Risiko Ukuran Posisi: Alokasi ekuitas 100% secara default dapat mengekspos akun terhadap risiko yang berlebihan
  4. Sinyal Lag: EMA secara inheren menunda tindakan harga, berpotensi kehilangan titik masuk optimal atau menyebabkan penundaan keluar
  5. Dependensi Indikator Tunggal: Bergantung hanya pada crossover rata-rata bergerak dapat mengabaikan informasi pasar penting lainnya

Arahan Optimasi

  1. Tambahkan Konfirmasi Tren: Pertimbangkan untuk memasukkan indikator ADX atau kekuatan tren untuk menyaring sinyal palsu
  2. Meningkatkan Manajemen Uang: Tambahkan ukuran posisi dinamis berdasarkan volatilitas pasar
  3. Mekanisme Stop-Loss yang ditingkatkan: Pertimbangkan untuk menerapkan trailing stop untuk lebih melindungi keuntungan
  4. Filter Lingkungan Pasar: Tambahkan indikator volatilitas untuk menangguhkan perdagangan dalam kondisi yang tidak menguntungkan
  5. Mengoptimalkan Konfirmasi Sinyal: Pertimbangkan untuk menambahkan konfirmasi volume atau indikator teknis tambahan

Ringkasan

Ini adalah sistem strategi crossover rata-rata bergerak yang dirancang dengan baik dan logis. Dengan menggabungkan sinyal crossover EMA dengan mekanisme manajemen risiko, strategi dapat menangkap keuntungan di pasar tren. Sementara risiko yang melekat ada, optimasi yang disarankan dapat lebih meningkatkan stabilitas dan keandalan strategi. Strategi ini sangat cocok untuk melacak tren jangka menengah hingga panjang dan merupakan pilihan yang solid bagi pedagang yang sabar.


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

//@version=5
//
//  ██╗         █████╗         ██████╗     ██████╗     ██╗   ██╗    ██╗
//  ██║        ██╔══██╗       ██╔═══██╗    ██╔══██╗    ██║   ██║    ██║
//  ██║        ███████║       ██║   ██║    ██║  ██║    ██║   ██║    ██║
//  ██║        ██╔══██║       ██║   ██║    ██║  ██║    ██║   ██║    ██║
//  ███████╗   ██║  ██║       ╚██████╔╝    ██████╔╝    ╚██████╔╝    ██║
//  ╚══════╝   ╚═╝  ╚═╝        ╚═════╝     ╚═════╝      ╚═════╝     ╚═╝
//
//  BTC-EMA做多策略(5分钟确认版) - 作者:LAODUI
//  版本:2.0
//  最后更新:2024
// ═══════════════════════════════════════════════════════════════════════════

strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// 添加策略参数设置
var showLabels = input.bool(true, "显示标签", group="显示设置")
var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1, group="风险管理")
var takeProfitPercent = input.float(10.0, "止盈百分比", step=0.1, group="风险管理")

// EMA参数设置
var emaFastLength = input.int(9, "快速EMA周期", minval=1, maxval=200, group="EMA设置")
var emaSlowLength = input.int(21, "慢速EMA周期", minval=1, maxval=200, group="EMA设置")

// 计算EMA
ema_fast = ta.ema(close, emaFastLength)
ema_slow = ta.ema(close, emaSlowLength)

// 绘制EMA线
plot(ema_fast, "快速EMA", color=color.blue, linewidth=2)
plot(ema_slow, "慢速EMA", color=color.red, linewidth=2)

// 检测交叉
crossOver = ta.crossover(ema_fast, ema_slow)  
crossUnder = ta.crossunder(ema_fast, ema_slow)

// 格式化时间显示 (UTC+8)
utc8Time = time + 8 * 60 * 60 * 1000
timeStr = str.format("{0,date,MM-dd HH:mm}", utc8Time)

// 计算止损止盈价格
longStopLoss = strategy.position_avg_price * (1 - stopLossPercent / 100)
longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent / 100)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent / 100)
shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent / 100)

// 交易逻辑
if crossOver
    if strategy.position_size < 0  
        strategy.close("做空")     
    strategy.entry("做多", strategy.long)  
    if showLabels
        label.new(bar_index, high, text="做多入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(longStopLoss) + "\n止盈价: " + str.tostring(longTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar)

if crossUnder
    if strategy.position_size > 0  
        strategy.close("做多")     
    strategy.entry("做空", strategy.short)  
    if showLabels
        label.new(bar_index, low, text="做空入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(shortStopLoss) + "\n止盈价: " + str.tostring(shortTakeProfit), color=color.red, textcolor=color.white, style=label.style_label_up, yloc=yloc.belowbar)

// 设置止损止盈
if strategy.position_size > 0  // 多仓止损止盈
    strategy.exit("多仓止损止盈", "做多", stop=longStopLoss, limit=longTakeProfit)
    
if strategy.position_size < 0  // 空仓止损止盈
    strategy.exit("空仓止损止盈", "做空", stop=shortStopLoss, limit=shortTakeProfit) 

Berkaitan

Lebih banyak