Sistem perdagangan silang cerdas indikator Double EMA dan strategi stop-profit dan stop-loss yang dinamis

EMA MACD SMA RSI CCI ATR
Tanggal Pembuatan: 2024-11-29 16:33:21 Akhirnya memodifikasi: 2024-11-29 16:33:21
menyalin: 0 Jumlah klik: 441
1
fokus pada
1617
Pengikut

Sistem perdagangan silang cerdas indikator Double EMA dan strategi stop-profit dan stop-loss yang dinamis

Ringkasan

Strategi ini adalah sistem perdagangan cerdas yang didasarkan pada crossover dua rata-rata, menggunakan rata-rata bergerak indeks 9 periode dan 21 periode (EMA) sebagai indikator inti. Strategi ini mengintegrasikan mekanisme stop loss yang dinamis, yang secara otomatis melakukan instruksi perdagangan melalui pemantauan sinyal lintas indikator EMA secara real-time. Sistem ini menggunakan stop loss yang melacak persentase dan stop loss proporsi tetap, yang menjamin keamanan perdagangan dan memastikan kemungkinan keuntungan.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada hubungan silang antara EMA cepat (siklus 9) dan EMA lambat (siklus 21). Ketika garis cepat naik melewati garis lambat, sistem mengenali sebagai sinyal bullish, secara otomatis melonggarkan posisi kosong dan membuka lebih banyak posisi; ketika garis cepat turun melewati garis lambat, sistem mengenali sebagai sinyal bullish, secara otomatis melonggarkan posisi kosong dan membuka lebih banyak posisi. Sistem juga menyiapkan mekanisme stop loss yang dinamis: selama memegang lebih banyak posisi, harga stop loss ditetapkan di bawah harga posisi terbuka 5% dan harga stop loss ditetapkan di atas harga posisi terbuka 10%; selama memegang posisi kosong, harga stop loss ditetapkan di atas harga posisi terbuka 5% dan harga stop loss ditetapkan di bawah harga posisi terbuka 10%

Keunggulan Strategis

  1. Indikator yang dipilih secara ilmiah: EMA lebih sensitif terhadap perubahan pasar dan dapat menangkap tren pasar secara tepat waktu
  2. Perbaikan mekanisme stop loss: menggunakan pengaturan persentase, dapat disesuaikan dengan berbagai kondisi pasar
  3. Tingkat otomatisasi yang tinggi: otomatisasi dari pengenalan sinyal hingga eksekusi transaksi, mengurangi intervensi manusia
  4. Pengendalian risiko di tempat: Setiap perdagangan memiliki titik stop loss dan stop loss yang jelas
  5. Struktur kode yang jelas: spesifikasi penamaan variabel, pembagian secara logis, untuk memudahkan pemeliharaan dan pengoptimalan di kemudian hari

Risiko Strategis

  1. Risiko pasar bergoyang: kemungkinan munculnya sinyal silang yang sering terjadi di pasar bergoyang horizontal, yang menyebabkan perdagangan yang sering terjadi
  2. Risiko slippage: kemungkinan adanya perbedaan antara harga transaksi nyata dan harga teoretis dalam kondisi pasar yang bergejolak
  3. Manajemen risiko dana: Manajemen posisi dengan proporsi tetap mungkin tidak cukup fleksibel dalam kondisi pasar tertentu
  4. Risiko sistemik: Instruksi stop loss atau stop loss mungkin tidak dapat dilaksanakan pada waktu yang tepat jika terjadi situasi ekstrem di pasar

Arah optimasi strategi

  1. Memperkenalkan filter tren: indikator ADX atau ATR dapat ditambahkan untuk menilai kekuatan tren, menghindari perdagangan yang sering terjadi di pasar yang bergoyang
  2. Mengoptimalkan mekanisme stop loss: Anda dapat mempertimbangkan untuk menggunakan ATR untuk secara dinamis menyesuaikan jarak stop loss agar lebih sesuai dengan fluktuasi pasar
  3. Tambahkan filter waktu transaksi: Anda dapat menambahkan batasan waktu transaksi khusus untuk menghindari periode yang lebih berfluktuasi
  4. Manajemen posisi yang lebih baik: jumlah posisi yang dibuka dapat disesuaikan dengan dinamika fluktuasi pasar
  5. Tambahkan indikator sentimen pasar: dapat digabungkan dengan indikator seperti RSI atau MACD untuk konfirmasi perdagangan

Meringkaskan

Strategi ini adalah sistem perdagangan otomatis dengan struktur yang utuh dan logika yang jelas. Keputusan perdagangan dilakukan melalui sinyal EMA silang, dengan mekanisme stop loss yang dinamis, dapat memperoleh kinerja yang lebih baik di pasar yang sedang tren. Tetapi dalam proses penggunaan perlu memperhatikan perubahan lingkungan pasar, menyesuaikan pengaturan parameter yang tepat pada waktunya, dan melakukan kontrol risiko yang baik. Dengan terus-menerus mengoptimalkan dan menyempurnakan, strategi ini diharapkan menjadi alat perdagangan yang stabil dan andal.

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

//@version=5
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, "显示标签")
var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1)
var takeProfitPercent = input.float(10.0, "止盈百分比", minval=0.1, maxval=50.0, step=0.1)

// 计算EMA
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)

// 绘制EMA线
plot(ema9, "EMA9", color=color.blue, linewidth=2)
plot(ema21, "EMA21", color=color.red, linewidth=2)

// 检测交叉
crossOver = ta.crossover(ema9, ema21)  
crossUnder = ta.crossunder(ema9, ema21)

// 格式化时间显示 (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, 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, 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)