Penunjuk EMA berganda sistem perdagangan silang pintar dan strategi henti untung dan henti rugi dinamik

EMA MACD SMA RSI CCI ATR
Tarikh penciptaan: 2024-11-29 16:33:21 Akhirnya diubah suai: 2024-11-29 16:33:21
Salin: 0 Bilangan klik: 441
1
fokus pada
1617
Pengikut

Penunjuk EMA berganda sistem perdagangan silang pintar dan strategi henti untung dan henti rugi dinamik

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan pintar yang berasaskan crossover dua garis rata, menggunakan purata bergerak indeks 9 dan 21 kitaran ((EMA) sebagai petunjuk utama. Strategi ini mengintegrasikan mekanisme hentian kerugian dinamik, yang secara automatik melaksanakan arahan perdagangan melalui pemantauan masa nyata terhadap isyarat silang indikator EMA. Sistem ini menggunakan peratusan untuk mengesan hentian dan hentian peratusan tetap, yang memastikan keselamatan perdagangan dan memastikan kemungkinan keuntungan.

Prinsip Strategi

Logik teras yang digunakan untuk menjalankan strategi ini adalah berdasarkan hubungan silang antara EMA cepat (siklus 9) dan EMA perlahan (siklus 21). Apabila garis cepat melintasi garis perlahan ke atas, sistem mengenal pasti sebagai isyarat bullish, secara automatik melonggarkan kedudukan kosong dan membuka dagangan; apabila garis cepat melintasi garis perlahan ke bawah, sistem mengenal pasti sebagai isyarat bullish ke bawah, secara automatik melonggarkan kedudukan kosong dan membuka dagangan. Pada masa yang sama, sistem juga menyediakan mekanisme penangguhan kerugian yang dinamik: semasa memegang posisi berbilang, harga stop loss ditetapkan di bawah harga bukaan kedudukan 5% dan harga stop loss ditetapkan di atas harga bukaan kedudukan 10%; semasa memegang kedudukan kosong, harga stop loss ditetapkan di atas harga bukaan kedudukan 5% dan harga stop loss ditetapkan di bawah harga bukaan kedudukan 10%.

Kelebihan Strategik

  1. Sains dalam memilih penunjuk: EMA lebih sensitif terhadap perubahan pasaran dan dapat menangkap trend pasaran tepat pada masanya
  2. Peningkatan mekanisme penghentian kerugian: menggunakan cara persentasenya yang boleh disesuaikan dengan keadaan pasaran yang berbeza
  3. Tingkat automasi yang tinggi: Pengesanan automatik dari pengiktirafan isyarat hingga pelaksanaan perdagangan, mengurangkan campur tangan manusia
  4. Kawalan risiko di tempat: setiap perdagangan mempunyai titik berhenti dan titik berhenti yang jelas
  5. Struktur kod jelas: spesifikasi penamaan pembolehubah, pembahagian peringkat logik, memudahkan penyelenggaraan dan pengoptimuman kemudian

Risiko Strategik

  1. Risiko pasaran bergolak: kemungkinan munculnya isyarat silang yang kerap dalam pasaran bergolak, yang menyebabkan perdagangan yang kerap
  2. Risiko slippage: kemungkinan terdapat perbezaan antara harga sebenar dan harga teori semasa turun naik pasaran yang kuat
  3. Risiko pengurusan wang: Pengurusan kedudukan dengan kadar tetap mungkin tidak fleksibel dalam keadaan pasaran tertentu
  4. Risiko sistemik: arahan berhenti atau hentian mungkin tidak dapat dilaksanakan dalam masa yang tepat jika berlaku keadaan yang melampau di pasaran

Arah pengoptimuman strategi

  1. Memperkenalkan penapis trend: penunjuk ADX atau ATR boleh ditambah untuk menilai kekuatan trend, mengelakkan perdagangan yang kerap di pasaran yang bergolak
  2. Mengoptimumkan mekanisme stop loss: anda boleh mempertimbangkan untuk menggunakan ATR untuk menyesuaikan jarak stop loss secara dinamik, agar lebih sesuai dengan turun naik pasaran
  3. Menambah penapis masa dagangan: anda boleh menambah sekatan masa dagangan khusus untuk mengelakkan pergerakan yang lebih besar
  4. Pengurusan kedudukan yang lebih baik: boleh menyesuaikan jumlah kedudukan yang dibuka mengikut kadar turun naik pasaran
  5. Tambah indikator sentimen pasaran: boleh digabungkan dengan indikator seperti RSI atau MACD untuk pengesahan perdagangan

ringkaskan

Strategi ini adalah sistem perdagangan automatik yang lengkap dan logik yang jelas. Keputusan perdagangan dibuat melalui isyarat silang EMA, dilengkapi dengan mekanisme hentian hentian yang dinamik, yang dapat memperoleh prestasi yang baik di pasaran yang sedang tren. Tetapi dalam proses penggunaan perlu memperhatikan perubahan persekitaran pasaran, menyesuaikan parameter yang sesuai, dan melakukan kawalan risiko yang baik.

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