Strategi ini menggabungkan indikator EMA dan Awesome Oscillator ganda untuk mengidentifikasi dan melacak tren. EMA dengan cepat menilai arah tren jangka pendek sementara Awesome Oscillator memfilter keluar breakout palsu dan memberikan waktu masuk.
Strategi ini terutama menggunakan dua indikator teknis, EMA ganda dan Awesome Oscillator untuk menyaring sinyal dengan logika berikut:
Hitung EMA 2 periode dan 20 periode. Ketika EMA 2 periode melanggar EMA 20 periode ke atas, itu menandakan tren naik. Ketika EMA 2 periode melanggar EMA 20 periode ke bawah, itu menandakan tren menurun.
Perhitungkan Awesome Oscillator, yang merupakan histogram MACD yang dihaluskan oleh EMA cepat dikurangi EMA lambat. Ketika histogram AO berubah dari merah ke biru, itu adalah sinyal beli. Ketika berubah dari biru ke merah, itu adalah sinyal jual.
Hanya ketika EMA menunjukkan tren naik dan AO menunjukkan sinyal beli pada saat yang sama, sinyal beli akhir dihasilkan.
Melalui mekanisme penyaringan sinyal ganda ini, penyusutan palsu dapat dikurangi dan tren jangka menengah dapat dilacak.
Keuntungan dari strategi ini adalah:
Filter garis ganda mengurangi perdagangan berisik yang disebabkan oleh kesalahan. EMA menilai tren keseluruhan sementara AO menyaring waktu masuk. Menggabungkan keduanya meningkatkan keandalan sinyal.
Sensitivitas respons yang sangat cepat dengan cepat menangkap pembalikan jangka pendek. EMA 2 periode sangat sensitif terhadap pecah dan dapat dengan cepat menentukan apakah tren baru-baru ini telah berubah.
Awesome Oscillator lebih lanjut menyaring MACD untuk secara efektif mengidentifikasi terobosan palsu dalam tren dan menghindari perdagangan terbalik yang tidak perlu.
Strategi ini memiliki arah yang jelas untuk melacak tren jangka menengah. EMA menentukan tren dasar sementara AO memfilter sinyal untuk memastikan perdagangan mengikuti tren keseluruhan.
Pemilihan parameter yang wajar. EMA 2 periode dan 20 periode menangkap perubahan harga selama kerangka waktu yang berbeda. Parameter AO 5 dan 34 dioptimalkan untuk mengidentifikasi pola jangka pendek.
Ada juga beberapa risiko:
Di pasar yang bervariasi, EMA dan AO dapat menghasilkan lebih banyak sinyal palsu, menyebabkan perdagangan pendek yang tidak perlu.
AO kadang-kadang bisa tertinggal dari EMA, menyebabkan keterlambatan waktu sinyal.
EMA dan AO menyisir fitur jangka pendek dan menengah membutuhkan data berkualitas dan daya komputasi.
Kriteria keluar dapat dikurangi untuk memperpanjang periode kepemilikan.
Strategi ini tidak mempertimbangkan tren jangka panjang dan level support/resistance utama.
Strategi dapat dioptimalkan melalui beberapa aspek:
Memperkenalkan indikator tren seperti pita rata-rata bergerak dan ATR untuk membantu EMA dalam menentukan tren keseluruhan.
Tambahkan deteksi dukungan / resistensi kunci seperti retracement Fibonacci, menghasilkan sinyal hanya di sekitar level kunci untuk menghindari posisi masuk yang buruk.
Mengoptimalkan kombinasi parameter EMA dan AO untuk meningkatkan efek combo.
Tambahkan stop loss exit. exit ketika harga melanggar Swing High/Low baru-baru ini untuk mengendalikan kerugian perdagangan tunggal.
Backtest pada data historis untuk mengevaluasi kinerja strategi, memeriksa apakah profitabilitas stabil memenuhi harapan.
Perdagangan kertas untuk secara bertahap menyesuaikan parameter dan meningkatkan kinerja langsung.
Ide strategi keseluruhan jelas, menggabungkan EMA untuk tren keseluruhan dan AO untuk penyaringan sinyal. Ini dapat secara efektif mengidentifikasi dan melacak tren tetapi juga memiliki beberapa risiko dan keterbatasan untuk optimasi dan pengujian lebih lanjut untuk meningkatkan stabilitas. Kuncinya adalah memilih produk dan parameter yang sesuai dikombinasikan dengan prinsip dan gaya perdagangan yang tepat. Secara keseluruhan strategi ini memiliki logika yang baik dan nilai praktis.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 27/04/2022 // This is combo strategies for get a cumulative signal. // // First strategy // This indicator plots 2/20 exponential moving average. For the Mov // Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met. // // Second strategy // This indicator plots the oscillator as a histogram where blue denotes // periods suited for buying and red . for selling. If the current value // of AO (Awesome Oscillator) is above previous, the period is considered // suited for buying and the period is marked blue. If the AO value is not // above previous, the period is considered suited for selling and the // indicator marks it as red. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// EMA20(Length) => pos = 0.0 xPrice = close xXA = ta.ema(xPrice, Length) nHH = math.max(high, high[1]) nLL = math.min(low, low[1]) nXS = nLL > xXA or nHH < xXA ? nLL : nHH iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0) pos := nXS > close[1] ? -1 : iff_1 pos AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA) => pos = 0.0 xSMA1_hl2 = ta.sma(hl2, nLengthFast) xSMA2_hl2 = ta.sma(hl2, nLengthSlow) xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2 xSMA_hl2 = ta.sma(xSMA1_SMA2, nLengthFast) nRes = xSMA1_SMA2 - xSMA_hl2 xResWMA = ta.wma(nRes, nLengthWMA) xResMA = ta.sma(nRes, nLengthMA) xResEMA = ta.ema(nRes, nLengthEMA) xSignalSeries = bShowWMA ? xResWMA : bShowMA ? xResMA : bShowEMA ? xResEMA : na pos := xSignalSeries[2] < 0 and xSignalSeries[1] > 0? 1: xSignalSeries[2] > 0 and xSignalSeries[1] < 0 ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & Bill Awesome Oscillator (AC)', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ Awesome Oscillator (AC) ═════●' nLengthSlow = input.int(34, minval=1, title="Length Slow", group=I2) nLengthFast = input.int(5, minval=1, title="Length Fast", group=I2) nLengthMA = input.int(15, minval=1, title="MA", group=I2) nLengthEMA = input.int(15, minval=1, title="EMA", group=I2) nLengthWMA = input.int(15, minval=1, title="WMA", group=I2) bShowWMA = input.bool( defval=true, title="trading WMA", group=I2) bShowMA = input.bool( defval=false, title="trading MA", group=I2) bShowEMA = input.bool( defval=false, title="trading EMA", group=I2) var misc = '●═════ MISC ═════●' reverse = input.bool(false, title='Trade reverse', group=misc) var timePeriodHeader = '●═════ Time Start ═════●' d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader) m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader) y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader) StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false posEMA20 = EMA20(Length) prePosAC = AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA) iff_1 = posEMA20 == -1 and prePosAC == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosAC == 1 and StartTrade ? 1 : iff_1 iff_2 = reverse and pos == -1 ? 1 : pos possig = reverse and pos == 1 ? -1 : iff_2 if possig == 1 strategy.entry('Long', strategy.long) if possig == -1 strategy.entry('Short', strategy.short) if possig == 0 strategy.close_all() barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)