Strategi Mengikuti Tren Sinyal Ganda


Tanggal Pembuatan: 2023-11-02 17:02:06 Akhirnya memodifikasi: 2023-11-02 17:02:06
menyalin: 0 Jumlah klik: 588
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Sinyal Ganda

Ringkasan

Strategi ini menggunakan kombinasi dua indikator EMA ganda dan Awesome Oscillator untuk mengidentifikasi dan melacak tren. Di mana EMA cepat menilai arah tren baru-baru ini, dan filter Awesome Oscillator memberikan waktu masuk.

Prinsip Strategi

Strategi ini terutama menggunakan dua indikator teknis EMA ganda dan Awesome Oscillator untuk memfilter sinyal. Logika spesifiknya adalah sebagai berikut:

  1. Menghitung EMA 2 siklus dan 20 siklus, ketika 2 siklus EMA dari bawah ke atas menembus 20 siklus EMA, dinilai sebagai tren naik; ketika 2 siklus EMA dari atas ke bawah menembus 20 siklus EMA, dinilai sebagai tren turun.

  2. Perhitungan Awesome Oscillator, yang diperoleh dengan mengurangi rata-rata bergerak cepat dengan mengurangi rata-rata bergerak lambat, kemudian dengan mengurangi rata-rata bergerak cepat dengan mengurangi MACD pilar untuk mendapatkan pilar. Pilar AO dianggap sebagai sinyal beli ketika merah berubah menjadi biru, dan biru berubah menjadi merah sebagai sinyal jual.

  3. EMA hanya menghasilkan sinyal beli akhir jika menunjukkan tren naik dan AO menunjukkan sinyal beli pada saat bersamaan; sinyal jual akhir hanya dihasilkan jika EMA menunjukkan tren turun dan AO menunjukkan sinyal jual pada saat bersamaan.

  4. Melalui mekanisme penyaringan dua sinyal, dapat secara efektif mengurangi operasi false breakout dan melacak arah tengah tren.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Filter gabungan dua baris dapat mengurangi kesalahan perdagangan yang disebabkan oleh kebisingan. EMA menilai arah tren besar, filter AO masuk ke lapangan, keduanya dapat meningkatkan keandalan sinyal.

  2. Respon Sensitivity Sangat cepat untuk menangkap pembalikan tren dalam jangka pendek. Periode 2 EMA sangat sensitif terhadap terobosan dan dapat dengan cepat menilai apakah tren berubah dalam jangka pendek.

  3. Awesome Oscillator memfilter MACD lagi, sehingga dapat secara efektif mengidentifikasi terobosan palsu dalam tren, dan menghindari pembalikan yang tidak perlu.

  4. Kebijakan yang jelas, untuk melacak tren jangka menengah. EMA menentukan arah tren dasar, AO melakukan penyaringan lebih lanjut untuk memastikan bahwa perdagangan sesuai dengan arah tren besar, dan dapat terus menangkap tren jangka menengah.

  5. Pilihan parameter strategi yang masuk akal, 2 siklus dan 20 siklus EMA untuk menangkap perubahan harga periode yang berbeda, 5 siklus dan 34 siklus AO parameter yang dioptimalkan, dapat lebih baik mengidentifikasi karakteristik bentuk dalam jangka pendek.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Dalam situasi yang bergolak, EMA dan AO mungkin mengeluarkan lebih banyak sinyal yang salah, yang menyebabkan perdagangan kosong yang tidak perlu. Risiko kesalahan penilaian dapat dikurangi dengan menyesuaikan parameter siklus EMA.

  2. AO dalam beberapa kasus mungkin tertinggal EMA, menyebabkan sinyal terjadi pada waktu yang berbeda, dan parameter AO dapat dioptimalkan dengan tepat, sehingga lebih cepat merespons terobosan.

  3. Parameter EMA dan AO yang disesuaikan dengan karakteristik jangka pendek dan menengah, memiliki persyaratan kualitas data dan kekuatan komputasi yang tinggi, perlu disesuaikan dengan karakteristik varietas yang berbeda.

  4. Perdagangan yang lebih sering menghasilkan lebih banyak biaya dan biaya slippoint. Strategi Exit standar dapat dilonggarkan secara tepat, memperpanjang periode kepemilikan.

  5. Strategi ini tidak mempertimbangkan tren siklus besar dan resistensi pendukung utama, dan harus menggabungkan lebih banyak faktor untuk memastikan arah perdagangan yang benar.

Arah optimasi

Strategi ini dapat dioptimalkan dengan cara:

  1. Memperkenalkan indikator untuk menilai tren, membantu EMA menentukan arah tren besar, seperti pita rata-rata bergerak yang umum digunakan, ATR dan indikator tambahan.

  2. Menambahkan mekanisme identifikasi titik-titik resistensi pendukung utama, seperti garis mundur Fibonacci, hanya memberi sinyal di dekat titik-titik penting. Menghindari posisi tidak menguntungkan untuk berposisi.

  3. Mengoptimalkan kombinasi parameter EMA dan AO untuk meningkatkan kombinasi keduanya. Misalnya, menggunakan algoritma genetik kelas untuk secara otomatis mencari pasangan parameter terbaik.

  4. Menambahkan mekanisme Exit Stop Loss. Ketika harga menembus Swing High/Low terakhir, berhentilah dari posisi Exit Stop Loss dan kendalikan kerugian tunggal.

  5. Verifikasi data set sebelumnya, efektifitas strategi pengujian menggunakan data historis. Apakah tes dapat menstabilkan keuntungan, apakah hasil pengujian ulang sesuai dengan harapan.

  6. Parameter simulasi disk nyata, penyesuaian parameter secara bertahap meningkatkan efek indikator disk nyata. Verifikasi kekuatan parameter, mendapatkan kombinasi parameter yang lebih stabil.

Meringkaskan

Strategi ini memiliki ide keseluruhan yang jelas, untuk menilai arah tren besar EMA, kombinasi sinyal penyaringan AO menggunakan dua indikator untuk double verifikasi. Dapat secara efektif mengidentifikasi tren, melacak pergerakan jangka menengah. Namun ada juga risiko dan kekurangan tertentu, perlu terus mengoptimalkan tes untuk meningkatkan stabilitas.

Kode Sumber Strategi
/*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)