Strategi ini menghasilkan isyarat perdagangan berdasarkan salib emas dan salib mati purata bergerak. Ia menggabungkan tiga purata bergerak dengan tetapan parameter yang berbeza - jangka pendek, jangka sederhana dan jangka panjang. Dengan membandingkan hubungan ketinggian antara ketiga-tiga MA ini, ia menentukan keadaan bullish / bearish pasaran dan menghasilkan isyarat perdagangan.
Strategi ini menetapkan tiga garis purata bergerak, iaitu purata bergerak sederhana jangka pendek, purata bergerak berwajaran jangka sederhana dan purata bergerak eksponensial jangka panjang. Khususnya, ia menetapkan SMA 1 tempoh, WMA 20 tempoh dan EMA 25 tempoh.
Apabila garis SMA jangka pendek melintasi garis WMA jangka sederhana ke atas dan harga penutupan juga lebih tinggi daripada garis WMA, ia menunjukkan pasaran sedang berbalik ke atas dan membentuk isyarat kenaikan. Apabila SMA jangka pendek melintasi di bawah WMA jangka sederhana atau harga penutupan lebih rendah daripada WMA, ia memberikan isyarat penurunan. Oleh itu, strategi ini menilai keadaan kenaikan / penurunan pasaran dengan membandingkan ketinggian dan persilangan di antara tiga MA.
Strategi ini menggabungkan tiga MAs jangka pendek, sederhana dan panjang, yang boleh bertindak balas terhadap perubahan pasaran dalam kitaran yang berbeza dan meningkatkan ketepatan menangkap trend. Khususnya, WMA jangka sederhana mempunyai kesan yang lebih baik untuk menapis bunyi pasaran dan mengelakkan isyarat yang salah dengan berkesan. Di samping itu, strategi ini hanya menghantar isyarat panjang apabila isyarat kenaikan SMA dan harga penutupan mencapai konsistensi yang tinggi, yang menghalang whipsaws dan memastikan setiap kemasukan cekap.
Strategi ini mempunyai risiko isyarat palsu. Apabila SMA jangka pendek menghasilkan isyarat yang salah, kerugian yang tidak perlu mungkin disebabkan oleh strategi yang sangat bergantung pada garis SMA. Juga, strategi ini sensitif terhadap parameter. Apabila parameter ditetapkan dengan tidak betul di bawah pasaran terikat julat, banyak perdagangan yang salah boleh dicetuskan.
Untuk mengelakkan risiko sedemikian, disarankan untuk menyesuaikan panjang MA, melonggarkan syarat perdagangan dengan betul dan menetapkan stop loss untuk mengehadkan kerugian tunggal.
Strategi ini boleh dioptimumkan dari aspek berikut:
Menggabungkan lebih banyak jenis MA seperti KC untuk membentuk portfolio penunjuk untuk meningkatkan ketepatan
Tambah faktor jumlah seperti pecah dengan jumlah yang tinggi
Gabungkan penunjuk turun naik untuk mengelakkan kegagalan di pasaran bergelombang
Menggunakan pembelajaran mesin untuk melatih dan mengoptimumkan parameter
Strategi ini menentukan status bullish / bearish pasaran berdasarkan hubungan silang dan ketinggian antara tiga MA dan harga penutupan. Dengan menggabungkan MA dengan istilah yang berbeza, ia dapat dengan berkesan mengesan trend dan isyaratnya berkualiti tinggi. Dengan penyesuaian parameter yang betul dan memperkenalkan lebih banyak penunjuk tambahan, strategi dapat ditingkatkan lagi dalam relevansi dan kestabilan.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Candle Close Strategy KHANH 11/11/2023", overlay=true, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.0000005, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len1 = input.int(1, title="SMA #1 Length", minval=1) src1 = input(close, title="SMA Source #1") out1 = ta.sma(src1, len1) plot(out1, title="SMA #1", color=close >= out1 ? color.rgb(120, 123, 134, 100) : color.rgb(120, 123, 134, 100), linewidth=1) len2 = input.int(20, title="HMA #2 Length", minval=1) src2 = input(close, title="HMA Source #2") out2 = ta.hma(src2, len2) plot(out2, title="HMA #2", color=close >= out2 ? color.rgb(253, 255, 254, 100) : color.rgb(255, 255, 255, 100), linewidth=1) len3 = input.int(25, title="EMA #3 Length", minval=1) src3 = input(close, title="EMA Source #3") out3 = ta.ema(src3, len3) plot(out3, title="EMA #3", color=close >= out3 ? color.blue : color.blue, linewidth=1) // Define the long condition longCondition = (out1 > out2 and close > out2) // Define the short condition shortCondition = (out1 < out2 or close < out2) // Entry conditions if (longCondition) strategy.entry("Long",strategy.long) else if (shortCondition) strategy.entry("Short", strategy.short) // Trade channel plot PeriodLookBack = input(55, title="Period Look Back") xHighest55 = request.security(syminfo.tickerid, timeframe.period, ta.highest(PeriodLookBack)) xLowest55 = request.security(syminfo.tickerid, timeframe.period, ta.lowest(PeriodLookBack)) plot(xHighest55[1], color=color.red, title="HH") plot(xLowest55[1], color=color.green, title="LL") //@version=5 //indicator("Custom Moving Averages", shorttitle="CMA", overlay=true) shortLength = input(defval=40, title="Short Length") longLength = input(defval=80, title="Long Length") // Sử dụng khung thời gian của biểu đồ đang sử dụng thay vì cố định là "D" shortTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, shortLength)) shortBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, shortLength)) longTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, longLength)) longBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, longLength)) shortAverageLine = (shortTopBorder + shortBottomBorder) / 2 longAverageLine = (longTopBorder + longBottomBorder) / 2 plot(shortAverageLine, color=color.new(#fc0000, 0)) plot(longAverageLine, color=color.new(#01ff27, 0))