Strategi Dagangan Pelarian Momentum Purata Pergerakan Pelbagai Adaptif

SMMA ZLEMA EMA MA SMA
Tarikh penciptaan: 2025-01-10 15:27:53 Akhirnya diubah suai: 2025-01-10 15:27:53
Salin: 0 Bilangan klik: 433
1
fokus pada
1617
Pengikut

Strategi Dagangan Pelarian Momentum Purata Pergerakan Pelbagai Adaptif

Gambaran keseluruhan

Ini adalah strategi dagangan berdasarkan purata pergerakan berganda dan pecahan momentum. Strategi ini menggabungkan berbilang penunjuk teknikal seperti SMMA (purata pergerakan lancar) dan ZLEMA (purata pergerakan eksponen ketinggalan sifar) untuk mengenal pasti peluang dagangan dengan menangkap isyarat silang antara harga dan purata bergerak. Strategi ini menggunakan mekanisme penyesuaian yang boleh melaraskan sensitiviti isyarat mengikut turun naik pasaran dan meningkatkan ketepatan urus niaga.

Prinsip Strategi

Strategi ini menggunakan empat purata bergerak utama: src (SMMA berdasarkan HLC3), hi (SMMA berdasarkan tinggi), lo (SMMA berdasarkan rendah) dan mi (ZLEMA berdasarkan src). Isyarat dagangan terutamanya berdasarkan pada perhubungan silang dan kedudukan antara purata bergerak ini. Gabungan pelbagai keadaan isyarat memastikan kebolehpercayaan isyarat dagangan. Isyarat beli termasuk empat kombinasi syarat yang berbeza, dan isyarat jual juga termasuk empat kombinasi syarat yang berbeza. Isyarat penutupan adalah berdasarkan persilangan harga dan purata bergerak mi dan hubungan kedudukan antara purata bergerak.

Kelebihan Strategik

  1. Mekanisme pengesahan isyarat berbilang meningkatkan ketepatan transaksi
  2. Ciri penyesuaian membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza
  3. Menggunakan SMMA dan ZLEMA untuk mengurangkan kesan isyarat palsu
  4. Sistem isyarat berlapis menyediakan lebih banyak peluang perdagangan
  5. Keadaan penutupan yang jelas membantu mengawal risiko

Risiko Strategik

  1. Perpindahan purata bergerak boleh menyebabkan ketinggalan, menjejaskan masa masuk
  2. Pelbagai syarat mungkin terlepas beberapa peluang perdagangan penting
  3. Boleh menjana terlalu banyak isyarat palsu dalam pasaran yang tidak menentu
  4. Tetapan parameter yang tidak betul boleh menjejaskan prestasi strategi
  5. Kesan kos urus niaga ke atas pulangan strategi perlu dipertimbangkan

Arah pengoptimuman strategi

  1. Memperkenalkan penapis turun naik untuk melaraskan parameter strategi semasa tempoh turun naik yang tinggi
  2. Tambah analisis volum dagangan untuk meningkatkan kebolehpercayaan isyarat
  3. Mekanisme penyesuaian untuk mengoptimumkan parameter purata bergerak
  4. Tambah penunjuk kekuatan arah aliran untuk meningkatkan ketepatan pertimbangan arah aliran
  5. Membangunkan mekanisme henti rugi dinamik untuk meningkatkan keupayaan kawalan risiko

ringkaskan

Strategi ini membina sistem perdagangan yang agak lengkap melalui gabungan beberapa purata pergerakan dan penunjuk momentum. Sifat penyesuaian strategi dan mekanisme pengesahan berganda meningkatkan kebolehpercayaan transaksi. Melalui pengoptimuman dan penambahbaikan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam persekitaran pasaran yang berbeza. Adalah disyorkan bahawa pedagang menjalankan ujian belakang dan pengoptimuman parameter yang mencukupi sebelum penggunaan masa nyata.

Kod sumber strategi
/*backtest
start: 2024-01-10 00:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6

//study("Limit order strategy", overlay=true)
strategy('Limit order strategy', overlay = true)

lengthMA = input(1)
lengthmi = input(14)
lengthhigh = input(14)
lengthlow = input(14)

calc_smma(src, len) =>
    smma = 0.0
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    d = ema1 - ema2
    ema1 + d


src = calc_smma(hlc3, lengthMA)
hi = calc_smma(high, lengthhigh)
lo = calc_smma(low, lengthlow)
mi = calc_zlema(src, lengthmi)

plot(src, color = color.new(#FF1493, 0), linewidth = 2, title = 'src')
plot(hi, color = color.new(#7CFC00, 0), linewidth = 2, title = 'hi')
plot(lo, color = color.new(#FF0000, 0), linewidth = 2, title = 'lo')
plot(mi, color = color.new(#00FFFF, 0), linewidth = 2, title = 'mi')


//strategy.order("buy", true, 1, stop = na, when = openbuy) // buy by market if current open great then previous high
//strategy.order("sell", false, 1, stop = na, when = opensell) // sell by market if current open less then previous low
//if src >= mi and src[1] <= mi[1] and src[1] <= lo[1]
//	strategy.entry("buy 1", strategy.long, qty = 15)
sigorderbuy1 = src > mi and src[1] < mi[1] and src < lo and mi < lo
sigorderbuy2 = src > lo and src[1] < lo[1] and mi < lo
sigorderbuy3 = src > hi and src[1] < hi[1] and mi < hi
sigorderbuy4 = src > mi and src[1] < mi[1] and src > hi and mi > hi
//sigorderbuy5 = mi > hi and  src > hi  and src > mi and src[1] < mi[1] 
//sigorderbuy6 = mi < hi and src > hi and src[1] < hi[1]
sigclosebuy = src < mi and src[1] > mi[1] or mi < lo and src < lo and src[1] > lo[1]

sigordersell1 = src < mi and src[1] > mi[1] and src > hi and mi > hi
sigordersell2 = src < hi and src[1] > hi[1] and mi > hi
sigordersell3 = src < lo and src[1] > lo[1] and mi > lo
sigordersell4 = src < mi and src[1] > mi[1] and src < lo and mi < lo
//sigordersell5 = mi < lo and  src < lo  and src < mi and src[1] > mi[1] 
//sigordersell6 = mi > lo and src < lo and src[1] > lo[1]
sigclosesell = src > mi and src[1] < mi[1] or mi > hi and src > hi and src[1] < hi[1]

plot(sigorderbuy1 ? 1 : 0, 'sigorderbuy1')
plot(sigorderbuy2 ? 1 : 0, 'sigorderbuy2')
plot(sigorderbuy3 ? 1 : 0, 'sigorderbuy3')
plot(sigorderbuy4 ? 1 : 0, 'sigorderbuy4')
//plot(sigorderbuy5 ? 1 : 0,"sigorderbuy5") 
//plot(sigorderbuy6 ? 1 : 0,"sigorderbuy6") 

plot(sigordersell1 ? 1 : 0, 'sigordersell1')
plot(sigordersell2 ? 1 : 0, 'sigordersell2')
plot(sigordersell3 ? 1 : 0, 'sigordersell3')
plot(sigordersell4 ? 1 : 0, 'sigordersell4')
//plot(sigordersell5 ? 1 : 0,"sigordersell5") 
//plot(sigordersell6 ? 1 : 0,"sigordersell6")

plot(sigclosebuy ? 1 : 0, 'sigclosebuy')
plot(sigclosesell ? 1 : 0, 'sigclosesell')


openbuy = sigorderbuy1 or sigorderbuy2 or sigorderbuy3 or sigorderbuy4 // or sigorderbuy5 or sigorderbuy6
opensell = sigordersell1 or sigordersell2 or sigordersell3 or sigordersell4 //or sigordersell5 or sigordersell6
openclosebuy = sigclosebuy
openclosesell = sigclosesell

alertcondition(condition = openbuy, title = 'sigorderbuy all', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Buy {{ticker}} sig_b1={{plot("sigorderbuy1")}} sig_b2={{plot("sigorderbuy2")}} sig_b3={{plot("sigorderbuy3")}} sig_b4={{plot("sigorderbuy4")}}"}')
alertcondition(condition = opensell, title = 'sigordersell all', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Sell {{ticker}} sig_s1={{plot("sigordersell1")}} sig_ss={{plot("sigordersell2")}} sig_s3={{plot("sigordersell3")}} sig_s4={{plot("sigordersell4")}} sig_s5={{plot("sigordersell5")}} sig_61={{plot("sigordersell6")}}"}')

alertcondition(condition = sigclosebuy, title = 'Close buy', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Close {{ticker}} T=short"}')
alertcondition(condition = sigclosesell, title = 'Close sell', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Close {{ticker}} T=long"}')

if sigorderbuy1
    strategy.order('Buy 1', strategy.long, 1)
if sigorderbuy2
    strategy.order('Buy 2', strategy.long, 1)
if sigorderbuy3
    strategy.order('Buy 3', strategy.long, 1)
if sigorderbuy4
    strategy.order('Buy 4', strategy.long, 1)


if sigordersell1
    strategy.order('sell 1', strategy.short, 1)
if sigordersell2
    strategy.order('sell 2', strategy.short, 1)
if sigordersell3
    strategy.order('sell 3', strategy.short, 1)
if sigordersell4
    strategy.order('sell 4', strategy.short, 1)
//strategy.order("sell 5", false, 1, when = sigordersell5)
//strategy.order("sell 6", false, 1, when = sigordersell6)