Sumber dimuat naik... memuat...

Sistem Dagangan Penembusan Rata-rata Bergerak Ganda Dinamik

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

img

Ringkasan

Ini adalah sistem strategi perdagangan automatik berdasarkan crossover purata bergerak berganda. Sistem ini menggunakan purata bergerak eksponen (EMA) 9 tempoh dan 21 tempoh sebagai penunjuk teras, menghasilkan isyarat perdagangan melalui crossover mereka. Ia menggabungkan pengurusan stop-loss dan mengambil keuntungan, bersama dengan antara muka visual yang memaparkan isyarat perdagangan dan tahap harga utama.

Prinsip Strategi

Strategi ini menggunakan EMA pantas (9-periode) dan EMA perlahan (21-periode) untuk membina sistem dagangan. Isyarat panjang dihasilkan apabila EMA pantas melintasi di atas EMA perlahan, sementara isyarat pendek berlaku apabila EMA pantas melintasi di bawah EMA perlahan. Sistem secara automatik menetapkan tahap stop-loss dan mengambil keuntungan berdasarkan peratusan yang telah ditetapkan untuk setiap perdagangan. Ukuran kedudukan menggunakan pendekatan berasaskan peratusan, lalai kepada 100% ekuiti akaun.

Kelebihan Strategi

  1. Isyarat yang jelas: Menggunakan crossover purata bergerak sebagai isyarat perdagangan yang jelas dan mudah difahami
  2. Kawalan Risiko: Sistem pengurusan stop-loss dan mengambil keuntungan bersepadu untuk setiap perdagangan
  3. Sokongan visual: Menyediakan paparan label perdagangan yang memaparkan masa kemasukan, harga, tahap stop-loss, dan mengambil keuntungan
  4. Parameter Fleksibel: Membolehkan penyesuaian tempoh EMA dan parameter pengurusan risiko untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  5. Mekanisme Keluar Lengkap: Tutup kedudukan secara automatik pada isyarat yang bertentangan untuk mengelakkan penyesuaian kedudukan

Risiko Strategi

  1. Risiko pasaran berbelit-belit: Boleh menghasilkan isyarat pecah palsu yang kerap di pasaran sampingan, yang membawa kepada kerugian berturut-turut
  2. Risiko tergelincir: Harga pelaksanaan sebenar mungkin menyimpang dari tahap yang dirancang semasa tempoh turun naik yang tinggi
  3. Risiko Ukuran Posisi: Peruntukan ekuiti 100% lalai boleh mendedahkan akaun kepada risiko yang berlebihan
  4. Lag isyarat: EMA secara semula jadi menunda tindakan harga, berpotensi kehilangan titik masuk yang optimum atau menyebabkan keluar yang tertunda
  5. Kebergantungan satu penunjuk: Bergantung hanya pada persimpangan purata bergerak boleh mengabaikan maklumat pasaran penting yang lain

Arahan pengoptimuman

  1. Tambah Pengesahan Trend: Pertimbangkan untuk menggabungkan ADX atau penunjuk kekuatan trend untuk menapis isyarat palsu
  2. Meningkatkan Pengurusan Wang: Tambah saiz kedudukan dinamik berdasarkan turun naik pasaran
  3. Mekanisme Stop-Loss yang dipertingkatkan: Pertimbangkan untuk melaksanakan hentian trailing untuk melindungi keuntungan dengan lebih baik
  4. Penapisan persekitaran pasaran: Tambah penunjuk turun naik untuk menangguhkan dagangan dalam keadaan yang tidak baik
  5. Mengoptimumkan Pengesahan Isyarat: Pertimbangkan untuk menambah pengesahan jumlah atau penunjuk teknikal tambahan

Ringkasan

Ini adalah sistem strategi crossover purata bergerak yang direka dengan baik dan logik. Dengan menggabungkan isyarat crossover EMA dengan mekanisme pengurusan risiko, strategi dapat menangkap keuntungan di pasaran trend. Walaupun terdapat risiko yang melekat, pengoptimuman yang dicadangkan dapat meningkatkan kestabilan dan kebolehpercayaan strategi. Strategi ini sangat sesuai untuk mengesan trend jangka menengah hingga panjang dan merupakan pilihan yang kukuh untuk peniaga 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 lanjut