Dual EMA dan indikator AC Berbasis Tren Mengikuti Strategi

Penulis:ChaoZhangTanggal: 2024-01-15 12:02:54
Tag:

img

Gambaran umum

Strategi ini dirancang berdasarkan indikator osilator akselerasi EMA dan AC ganda. Indikator EMA ganda digunakan untuk menentukan arah tren harga, sementara indikator AC digunakan untuk mengkonfirmasi sinyal tren untuk efek penyaringan. Strategi ini menggabungkan fungsi mengikuti tren dan penyaringan sinyal untuk meningkatkan kualitas sinyal dan keuntungan dari tren.

Logika Strategi

Strategi ini terdiri dari dua modul:

  1. Modul EMA Dual

    • Buat indikator EMA ganda menggunakan EMA 2 hari dan EMA 20 hari. Sinyal beli dihasilkan ketika harga melintasi EMA 2 hari. Sinyal jual dihasilkan ketika harga melintasi EMA 20 hari.

    • Modul ini menentukan arah tren jangka pendek dan jangka menengah untuk mengikuti tren dasar.

  2. Modul AC

    • Menggunakan nilai positif dan negatif dari osilator akselerasi AC untuk mengkonfirmasi sinyal tren.

    • Modul ini menyaring sinyal palsu dan meningkatkan keandalan.

Singkatnya, strategi ini mengintegrasikan dua EMA untuk mendeteksi tren utama dan indikator AC untuk menyaring keluar pecah palsu, membentuk tren sistematis mengikuti metodologi.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. EMA ganda melacak tren jangka menengah dan panjang sementara AC menyaring kebisingan jangka pendek, efek kombinasi yang hebat.

  2. Efek penyaringan yang sangat baik untuk menghindari menjual setelah keuntungan panjang atau membeli setelah keuntungan pendek.

  3. Pengaturan parameter yang fleksibel yang dapat disesuaikan dengan produk dan lingkungan pasar yang berbeda.

  4. Logika strategi yang jelas, mudah dipahami, dioptimalkan dan ditingkatkan.

  5. Tren yang baik mengikuti potensi keuntungan untuk tren produk.

Analisis Risiko

Ada beberapa risiko dalam strategi ini:

  1. Pengaturan parameter EMA ganda yang tidak tepat dapat melewatkan tren jangka pendek atau menghasilkan perdagangan yang berlebihan.

  2. Pengaturan parameter AC yang tidak benar dapat menyaring sinyal yang valid tetapi lebih lemah atau gagal menyaring cukup kebisingan.

  3. Tidak mampu beradaptasi dengan pasar yang berubah dengan cepat, seperti kecelakaan yang tajam.

  4. Keuntungan yang tidak cukup di pasar yang berbeda, harus digunakan sebagai strategi mengikuti tren.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Uji lebih banyak kombinasi parameter untuk menemukan parameter optimal yang sesuai dengan karakteristik produk yang berbeda.

  2. Tambahkan modul stop loss untuk keluar pada kerugian besar.

  3. Menyaring sinyal dengan lebih banyak indikator.

  4. Mengembangkan strategi kombo jangka panjang-pendek untuk melacak tren jangka menengah-panjang, menggunakan perdagangan jangka pendek untuk mengurangi atau menambahkan posisi di sepanjang tren.

Kesimpulan

Ide menggabungkan dua EMA untuk tren dan AC untuk penyaringan kebisingan layak dipelajari. Strategi ini memiliki sinyal berkualitas dan keandalan, cocok untuk melacak produk tren. Dengan penyesuaian parameter yang tepat, keuntungan besar dapat dicapai dengan mengendarai tren menggunakan strategi ini.


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/01/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
// The Accelerator Oscillator has been developed by Bill Williams 
// as the development of the Awesome Oscillator. It represents the 
// difference between the Awesome Oscillator and the 5-period moving 
// average, and as such it shows the speed of change of the Awesome 
// Oscillator, which can be useful to find trend reversals before the 
// Awesome Oscillator does.
//
// 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) =>
    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
    cClr = nRes > nRes[1] ? color.blue : color.red
    iff_1 = nRes > 0 ? 1 : nz(pos[1], 0)
    pos := nRes < 0 ? -1 : iff_1           
    pos

strategy(title='Combo 2/20 EMA & Accelerator Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Accelerator Oscillator  ═════●'
nLengthSlow = input(33,  title="Length Slow", group=I2)
nLengthFast = input(6, title="Length Fast", 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)
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)

Lebih banyak