Strategi ini menghasilkan isyarat perdagangan dengan mengira persilangan antara purata bergerak eksponensial 5 hari (EMA) dan purata bergerak mudah 20 hari (SMA). Ia menjadi panjang apabila EMA 5 hari melintasi di atas SMA 20 hari dan menutup kedudukan apabila perubahan harga mencapai 5% atau -5%.
Rata-rata bergerak eksponensial berganda adalah penunjuk teknikal yang digunakan secara meluas. EMA 5 hari mewakili trend harga baru-baru ini manakala SMA 20 hari menunjukkan pergerakan harga jangka sederhana. Apabila MA jangka pendek melintasi di atas MA jangka panjang, ia menandakan kemerosotan ke atas dan trend harga ke atas, menunjukkan masa yang baik untuk pergi panjang. Sebaliknya, persilangan ke bawah menyiratkan pembalikan harga yang berpotensi dan harus mempertimbangkan keluar dari kedudukan.
Strategi ini menetapkan EMA 5 hari dan SMA 20 hari sebagai isyarat perdagangan. Ia menjadi panjang apabila EMA 5 hari melintasi SMA 20 hari dan menutup kedudukan apabila perubahan harga mencapai 5% atau -5%. Ia juga memeriksa sama ada TII positif dan meningkat untuk mengesahkan kebolehpercayaan isyarat.
Langkah terperinci adalah:
Strategi ini menggunakan persilangan emas antara dua MA dan mempunyai kelebihan berikut:
Secara umum, strategi ini mempunyai peraturan yang mudah, menggunakan penunjuk teknikal yang matang seperti persilangan MA, dan mempunyai pengukuran kawalan risiko yang agak komprehensif.
Masih ada beberapa risiko dalam strategi ini:
Penambahbaikan yang dicadangkan ialah:
Jadi ada ruang untuk pengoptimuman lanjut.
Strategi ini boleh ditingkatkan dari aspek berikut:
Mengoptimumkan parameter MA dengan menguji gabungan EMA dan SMA yang lebih pendek/panjang untuk mencari pasangan yang optimum.
Tambah penunjuk lain seperti MACD, KDJ untuk menapis isyarat palsu.
Menggunakan algoritma pembelajaran mesin untuk mencari parameter yang lebih baik melalui pemodelan data sejarah dan statistik.
Tetapkan stop loss / mengambil keuntungan dinamik berdasarkan turun naik pasaran dan ciri instrumen untuk mengawal risiko dengan lebih baik.
Luaskan strategi ini kepada produk lain seperti forex, cryptocurrency.
Melalui penambahbaikan di atas, kestabilan dan keuntungan strategi ini dapat ditingkatkan dengan ketara.
Kesimpulannya, ini adalah strategi silang MA berganda yang mudah difahami dan dilaksanakan. Ia memanfaatkan isyarat MA dan menggunakan TII untuk menapis ralat. Ia mengawal risiko dengan menghentikan kerugian / mengambil keuntungan. Strategi ini sesuai untuk pemula untuk belajar dan juga mempunyai ruang yang besar untuk pengoptimuman. Penambahbaikan lanjut pada penyesuaian parameter, penapisan isyarat dan kehilangan berhenti dinamik dapat mengubahnya menjadi strategi perdagangan yang praktikal dan berkuasa.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-SMA Crossover Strategy", shorttitle="EMA-SMA Cross", overlay=true) // Define the moving averages ema5 = ta.ema(close, 5) sma20 = ta.sma(close, 20) smaVolume10 = ta.sma(volume, 50) majorLength = input(60, title="Major Length") minorLength = input(30, title="Minor Length") src = input(close, title="Source") smaValue = ta.sma(src, majorLength) positiveSum = 0.0 negativeSum = 0.0 for i = 0 to minorLength - 1 price = na(src[i]) ? 0 : src[i] avg = na(smaValue[i]) ? 0 : smaValue[i] positiveSum := positiveSum + (price > avg ? price - avg : 0) negativeSum := negativeSum + (price > avg ? 0 : avg - price) tii = 100 * positiveSum / (positiveSum + negativeSum) // Buy condition: 5 EMA crosses above 20 SMA buyCondition = ta.crossover(ema5, sma20) and tii > 0 and tii >= tii[1] //and volume > smaVolume10 // // Track entry price var entryPrice = 0.0 if (buyCondition) entryPrice := close // Calculate percentage change from entry price priceChange = close / entryPrice - 1 // Plotting the moving averages on the chart plot(ema5, color=color.blue, title="5 EMA") plot(sma20, color=color.red, title="20 SMA") // Highlighting buy signals and exit signals on the chart // plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, size=size.small, style=shape.labelup, text="Buy") // Strategy entry and exit if (buyCondition) strategy.entry("Buy", strategy.long) // Exit conditions if (strategy.opentrades > 0) if (priceChange >= 0.05 or priceChange <= -0.05) strategy.close("Buy")