
Ini adalah strategi perdagangan berdasarkan EMA berganda, yang menggabungkan trend tracking, pengesahan momentum, dan sistem amaran pergerakan. Strategi ini menggunakan isyarat EMA silang 5, 10, 15, 20, 50 dan 200 hari untuk menentukan arah pasaran, sambil merancang tempoh penyejukan pintar dan mekanisme amaran risiko untuk membantu peniaga membuka kedudukan dengan aman pada masa yang sesuai.
Logik teras strategi ini adalah berdasarkan pada beberapa EMA dan pengesahan trend:
Mekanisme penilaian trendTrend pasaran dinilai melalui kedudukan relatif 10 hari EMA dengan 20 hari EMA dan hubungan harga penutupan dengan 50 hari EMA. Apabila 10 hari EMA berada di atas 20 hari EMA dan harga penutupan lebih tinggi daripada 50 hari EMA, ia dinilai sebagai tren naik; sebaliknya, ia adalah tren menurun.
Pengesahan kuasaStrategi memperkenalkan EMA 5 hari sebagai penunjuk momentum jangka pendek. Dalam isyarat bullish, EMA 5 hari diperlukan lebih tinggi daripada EMA 10 hari dalam kitaran sebelumnya; dalam isyarat bearish, EMA 5 hari diperlukan lebih rendah daripada EMA 10 hari dalam kitaran sebelumnya untuk memastikan arah perdagangan selaras dengan momentum jangka pendek.
Peraturan masuk dan keluar yang bijak:
Mekanisme tempoh sejuk: Strategi ini direka untuk menetapkan tempoh penyejukan yang fleksibel, secara default 2 kitaran, untuk mengelakkan perdagangan yang kerap yang disebabkan oleh pembukaan kedudukan segera selepas kedudukan kosong. Pengguna boleh menyesuaikan parameter ini mengikut ciri-ciri pasaran.
Sistem amaran awalA: Dengan mengira kadar perubahan peratusan perbezaan antara 5 hari EMA dan 10 hari EMA, apabila kadar perubahan terkini melebihi 2.5 kali ganda daripada kadar perubahan purata 5 kitaran sebelumnya dan perbezaan semasa lebih kecil daripada kitaran sebelumnya, mencetuskan isyarat amaran awal, memberi isyarat kepada potensi pasaran yang tidak normal, boleh memilih kedudukan kosong automatik untuk mengelakkan risiko.
Pengesahan trend pelbagai peringkat: Mengurangkan isyarat penembusan palsu dengan pengesahan silang EMA pelbagai kitaran, meningkatkan kebolehpercayaan perdagangan. Strategi ini menggabungkan purata bergerak jangka pendek ((5, 10 hari), jangka menengah ((15, 20 hari) dan jangka panjang ((50, 200 hari) untuk menilai keadaan trend pasaran secara menyeluruh.
Kebolehan beradaptasiStrategi ini dapat menukar arah perdagangan secara automatik mengikut perubahan trend pasaran, mencari peluang bullish di pasaran naik, mencari peluang bearish di pasaran turun, dan mempunyai daya serap pasaran yang baik.
Pengurusan risiko yang baikSistem amaran awal dapat mengesan turun naik pasaran yang tidak normal, memberi amaran tepat pada masanya dan boleh memilih kedudukan kosong secara automatik, dengan berkesan mengawal risiko penarikan balik. Sistem tempoh sejuk mengelakkan perdagangan berlebihan, mengurangkan kos perdagangan dan risiko perdagangan emosi.
Kemudahan penyesuaian parameterStrategi menyediakan pilihan tetapan parameter yang kaya, pengguna boleh menyesuaikan parameter penting seperti kitaran EMA, panjang tempoh penyejukan dan kepekaan amaran awal mengikut keadaan pasaran yang berbeza dan keutamaan risiko peribadi.
Isyarat perdagangan visual: Strategi menunjukkan isyarat perdagangan dengan jelas melalui bentuk dan warna, anak panah hijau menunjukkan isyarat bullish, anak panah merah menunjukkan isyarat bearish, segitiga bawah menunjukkan arah trend semasa, menjadikan keputusan perdagangan jelas.
Ketinggalan garis purata: Rata-rata bergerak pada dasarnya adalah penunjuk yang ketinggalan, yang boleh menyebabkan kelewatan masuk dan keluar dalam pasaran yang bergolak atau pasaran yang berbalik dengan cepat, menyebabkan kerugian yang berpotensi. Untuk mengurangkan risiko ini, penunjuk utama boleh dipertimbangkan sebagai pengesahan tambahan.
Risiko penembusan palsuWalaupun strategi menggunakan banyak persilangan garis rata-rata dan pengesahan momentum untuk mengurangkan isyarat palsu, isyarat salah yang disebabkan oleh persilangan garis rata-rata yang kerap boleh berlaku pada peringkat penyusunan horizontal pasaran. Ia disyorkan untuk menggunakan atau menyesuaikan parameter dengan berhati-hati dalam keadaan pasaran dengan kadar turun naik yang rendah.
Risiko Ketegangan BesarSistem amaran mungkin tidak dapat bertindak balas dengan cepat terhadap perubahan harga yang mendadak semasa turun naik yang besar di pasaran. Penambah indikator kadar turun naik seperti ATR boleh dipertimbangkan, dengan set stop loss dinamik untuk memberikan perlindungan tambahan.
Perangkap pengoptimuman parameterParameter yang terlalu optimum boleh menyebabkan strategi berfungsi dengan baik pada data sejarah tetapi gagal di pasaran masa depan. Adalah disyorkan untuk mengesahkan kestabilan parameter melalui pengoptimuman langkah demi langkah dan ujian luar sampel.
Risiko perubahan trend jangka panjangStrategi mungkin menghasilkan isyarat kerugian berturut-turut pada awal peralihan trend jangka panjang. Anda boleh mempertimbangkan untuk menambah berat indikator trend jangka panjang seperti EMA 200 hari, atau mengurangkan saiz kedudukan apabila trend tidak jelas.
Penyesuaian parameterStrategi semasa menggunakan kitaran EMA tetap, mekanisme penyesuaian boleh diperkenalkan untuk menyesuaikan panjang kitaran EMA mengikut dinamik turun naik pasaran. Sebagai contoh, penggunaan kitaran EMA yang lebih lama untuk mengurangkan bunyi di pasaran yang bergelombang tinggi, penggunaan kitaran EMA yang lebih pendek di pasaran yang bergelombang rendah untuk meningkatkan kepekaan.
Analisis pelbagai kerangka masa: Tambah pengesahan trend pada jangka masa yang lebih tinggi, hanya berdagang di arah trend utama, dapat meningkatkan peluang kemenangan secara ketara. Sebagai contoh, hanya membuka kedudukan melihat apabila garis hari dan carta 4 jam menunjukkan trend naik pada masa yang sama.
Pengoptimuman Stop Loss: Syarat-syarat kedudukan kosong strategi semasa adalah lebih mudah ((EMA 15 hari)), dan mekanisme hentian kerugian dinamik boleh diperkenalkan, seperti hentian kadar turun naik berdasarkan ATR atau hentian hentian untuk mengehadkan kerugian maksimum dalam satu perdagangan sambil mengekalkan keuntungan.
Pengurusan kewangan bersepadu: Tambahkan penyesuaian skala kedudukan berdasarkan risiko, menentukan perkadaran dana untuk setiap dagangan berdasarkan turun naik pasaran dan dinamik kekuatan isyarat perdagangan, dengan itu mengoptimumkan nisbah pulangan risiko keseluruhan.
Penambahan Indeks EmosiGabungan dengan jumlah dagangan, harga purata bertimbangan jumlah dagangan (VWAP) atau penunjuk lebar pasaran, boleh meningkatkan kebolehpercayaan pengesahan trend. Indeks sentimen pasaran boleh memberikan pengesahan tambahan, terutamanya berhampiran tahap sokongan dan rintangan penting.
Pengoptimuman Pembelajaran MesinMenggunakan teknologi pembelajaran mesin untuk mengklasifikasikan dan menyaring isyarat, mengenal pasti ciri-ciri persekitaran perdagangan yang tinggi, mengelakkan perdagangan dalam keadaan pasaran yang tidak menguntungkan, dapat meningkatkan prestasi keseluruhan strategi secara signifikan.
Strategi dagangan amaran pergerakan lintas lintas lintas indeks adalah sistem dagangan kuantitatif yang terstruktur dengan baik, yang mewujudkan kerangka keputusan perdagangan yang komprehensif melalui pelbagai lapisan isyarat silang EMA, pengesahan pergerakan, mekanisme tempoh sejuk, dan sistem amaran risiko. Strategi ini berprestasi baik dalam pasaran yang sedang tren, dan mempunyai mekanisme pertahanan untuk menghadapi turun naik pasaran yang tidak normal.
Kelebihan utama strategi ini adalah mekanisme penilaian trend yang komprehensif dan sistem kawalan risiko yang baik, yang membolehkan ia mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran. Walau bagaimanapun, sebagai sistem perdagangan yang berasaskan garis lurus, strategi ini masih menghadapi risiko yang wujud seperti ketinggalan dan penembusan palsu.
Pengoptimuman masa depan dapat tertumpu pada penyesuaian parameter, analisis jangka masa berbilang, stop loss dinamik dan pengurusan risiko, dan seterusnya meningkatkan ketahanan dan adaptasi strategi. Dengan memperkenalkan teknologi pembelajaran mesin dan indikator sentimen pasaran, lompatan dalam kualiti prestasi strategi dapat dicapai, yang membolehkan ia kekal kompetitif dalam pelbagai keadaan pasaran.
/*backtest
start: 2024-03-24 00:00:00
end: 2024-11-14 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy(title='GRIM309 CallPut Strategy', shorttitle='CallsPuts Strategy', overlay=true, initial_capital=500, commission_value=0.1)
// Input parameters for EMAs
len5 = input.int(5, minval=1, title='5 EMA Length')
len10 = input.int(10, minval=1, title='10 EMA Length')
len15 = input.int(15, minval=1, title='15 EMA Length')
len20 = input.int(20, minval=1, title='20 EMA Length')
len50 = input.int(50, minval=1, title='50 EMA Length')
len200 = input.int(200, minval=1, title='200 EMA Length')
// EMA calculations
ema5 = ta.ema(close, len5)
ema10 = ta.ema(close, len10)
ema15 = ta.ema(close, len15)
ema20 = ta.ema(close, len20)
ema50 = ta.ema(close, len50)
ema200 = ta.ema(close, len200)
// Plot EMAs with specified colors
plot(ema5, title='EMA 5', color=color.lime)
plot(ema10, title='EMA 10', color=color.rgb(64, 131, 170))
plot(ema20, title='EMA 20', color=color.purple)
plot(ema50, title='EMA 50', color=color.red)
plot(ema200, title='EMA 200', color=color.white)
// Determine trend conditions
uptrend = ema10 > ema20 and close > ema50
downtrend = ema10 < ema20 and close < ema50
// Plot trend indicators at the bottom of the chart
plotshape(series=uptrend, location=location.bottom, color=color.orange, style=shape.triangleup, text='+', title='Uptrend Indicator')
plotshape(series=downtrend, location=location.bottom, color=color.orange, style=shape.triangledown, text='-', title='Downtrend Indicator')
// Position state variable
var int positionState = 0 // 0 = no position, 1 = long, -1 = short
// Cooldown period settings (dont open right after a close)
cooldownBars = input.int(2, minval=1, title='Cooldown Period (bars)')
var int barsSinceClose = na
// Additional check for EMA5 trend confirmation (optional check to see that it is already in momentum short term)
emaCheckCall = ema5 > ema5[1] and ema5 > ema10
emaCheckPut = ema5 < ema5[1] and ema5 < ema10
// Open and close conditions for calls
openCalls = uptrend and emaCheckCall and positionState == 0 and (na(barsSinceClose) or barsSinceClose >= cooldownBars)
closeCalls = positionState == 1 and (close <= ema15)
// Open and close conditions for puts
openPuts = downtrend and emaCheckPut and positionState == 0 and (na(barsSinceClose) or barsSinceClose >= cooldownBars)
closePuts = positionState == -1 and (close >= ema15)
// --- WARNING SYSTEM ---
// Calculate recent percentage differences between ema5 and ema10
diffNow = (ema5 - ema10) / ema10 * 100
diff1 = (ema5[1] - ema10[1]) / ema10[1] * 100
diff2 = (ema5[2] - ema10[2]) / ema10[2] * 100
diff3 = (ema5[3] - ema10[3]) / ema10[3] * 100
diff4 = (ema5[4] - ema10[4]) / ema10[4] * 100
diff5 = (ema5[5] - ema10[5]) / ema10[5] * 100
if diffNow < 0
diffNow:=diffNow*-1
if diff1 < 0
diff1:=diff1*-1
if diff2 < 0
diff2:=diff2*-1
if diff3 < 0
diff3:=diff3*-1
if diff4 < 0
diff4:=diff4*-1
if diff5 < 0
diff5:=diff5*-1
// Compute average of last 5 changes
avgChange = (math.abs(diff1 - diff2) + math.abs(diff2 - diff3) + math.abs(diff3 - diff4) + math.abs(diff4 - diff5)) / 4
// Check if latest change is more than double the average
isWarning = positionState != 0 and math.abs(diffNow - diff1) > 2.5 * avgChange and diffNow < diff1
// Draw warning symbol
plotshape(series=isWarning, location=location.belowbar, color=color.red, style=shape.cross, text='⚠', textcolor=color.white, title='Warning Signal')
if isWarning //optional, close position if a warning emits
if positionState == 1 // Only close calls if the last position was a long
closeCalls := true
if positionState == -1 // Only close puts if the last position was a short
closePuts := true
// Update position state and cooldown counter based on signals
if (openCalls)
strategy.entry('Long', strategy.long)
positionState := 1
barsSinceClose := na // Reset cooldown counter when opening a position
if (closeCalls)
strategy.close('Long')
positionState := 0
barsSinceClose := 0 // Start cooldown counter when closing a position
if (openPuts)
strategy.entry('Short', strategy.short)
positionState := -1
barsSinceClose := na // Reset cooldown counter when opening a position
if (closePuts)
strategy.close('Short')
positionState := 0
barsSinceClose := 0 // Start cooldown counter when closing a position
// Increment cooldown counter if it's active
if (not na(barsSinceClose))
barsSinceClose += 1
// Plot open and close signals for Calls
plotshape(series=openCalls, location=location.belowbar, color=color.green, style=shape.arrowup, text='Open', textcolor=color.white, title='Open call position')
plotshape(series=closeCalls, location=location.abovebar, color=color.green, style=shape.arrowdown, text='Close', textcolor=color.white, title='Close call position')
// Plot open and close signals for Puts
plotshape(series=openPuts, location=location.abovebar, color=color.red, style=shape.arrowdown, text='Open', textcolor=color.white, title='Open put position')
plotshape(series=closePuts, location=location.belowbar, color=color.red, style=shape.arrowup, text='Close', textcolor=color.white, title='Close put position')