
Strategi ini menghasilkan isyarat perdagangan silang emas dan silang mati dengan mengira persimpangan EMA garis cepat dan EMA garis perlahan. Apabila EMA garis cepat melintasi EMA garis perlahan, ia menghasilkan isyarat pembelian; apabila EMA garis cepat melintasi EMA garis perlahan, ia menghasilkan isyarat jual. Strategi ini memanfaatkan sepenuhnya kelebihan rata-rata bergerak dan dapat mengesan trend pasaran dengan berkesan, menghasilkan isyarat perdagangan pada tahap permulaan trend.
Strategi ini menggunakan dua parameter EMA yang berbeza, parameter EMA cepat ditetapkan pada 10, parameter EMA perlahan ditetapkan pada 20. Di antaranya, EMA 10 hari bertindak balas lebih cepat terhadap perubahan harga, sementara EMA 20 hari bertindak balas lebih perlahan. Apabila EMA jangka pendek melintasi garis EMA jangka panjang, rata-rata jangka pendek mula memimpin rata-rata jangka panjang ke atas, yang menunjukkan bahawa harga mungkin masuk ke dalam keadaan negatif, yang menghasilkan isyarat pembelian; sebaliknya, apabila rata-rata jangka pendek melintasi garis rata-rata jangka panjang, rata-rata jangka pendek mula kehilangan kelebihan terhadap rata-rata jangka panjang, yang menunjukkan bahawa harga mungkin masuk ke dalam keadaan negatif, yang menghasilkan isyarat jual.
Melalui prinsip persilangan garis EMA yang perlahan, strategi ini dapat menangkap masa peralihan trend pasaran dengan baik, dan dapat menghasilkan isyarat perdagangan tepat pada masanya. Pada masa yang sama, indikator EMA sendiri mempunyai keupayaan untuk memanaskan isyarat palsu, untuk mengelakkan pembukaan kedudukan yang kerap ketika pasaran bergolak. Ini membolehkan strategi ini dapat menangkap titik peralihan pasaran dengan keuntungan yang lebih tinggi sambil mengurangkan perdagangan yang salah.
Untuk risiko yang disebutkan di atas, ia boleh dioptimumkan dengan memperkenalkan penunjuk tambahan, seperti meningkatkan syarat penapisan perdagangan, mengelakkan isyarat yang salah dalam kombinasi dengan penunjuk MACD, menggunakan kelajuan tindak balas penunjuk yang dipercepatkan oleh EMA yang menyesuaikan diri. Selain itu, halangan yang munasabah dan halangan aktif juga diperlukan.
Strategi ini boleh dioptimumkan dengan cara berikut:
Strategi ini menggunakan prinsip persilangan dua EMA cepat dan perlahan, menangkap titik-titik perubahan pasaran yang penting, dan mempunyai kesan yang kuat. Dengan menggunakan petunjuk tambahan dan pengoptimuman berhenti, anda dapat meningkatkan kestabilan strategi. Idea strategi ini mudah dan jelas, layak untuk dipelajari dan digunakan oleh pedagang kuantitatif, dan mempunyai banyak ruang untuk pengembangan dan potensi pengoptimuman.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Backtest single EMA cross", overlay=true)
qty = input(100000, "Buy quantity")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
#00FF00 : na
testPeriod() => true
ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")
expo = ema(close, ema1)
ma = ema(close, ema2)
avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)
p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)
longCondition = crossover(expo, ma)
shortCondition = crossunder(expo, ma)
if testPeriod()
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)