Strategi perdagangan lintas EMA ganda

Penulis:ChaoZhang, Tanggal: 2023-10-17 13:56:54
Tag:

img

Gambaran umum

Strategi ini menggunakan salib emas dan salib kematian dari garis EMA ganda untuk menentukan waktu masuk dan keluar. Secara khusus, ketika garis EMA cepat melintasi di atas garis EMA lambat dari bawah, sinyal salib emas dihasilkan untuk masuk panjang. Ketika garis EMA cepat melintasi di bawah garis EMA lambat dari atas, sinyal salib kematian dihasilkan untuk masuk pendek. Strategi ini sederhana dan mudah diterapkan, dan merupakan strategi perdagangan yang sangat umum.

Logika Strategi

Kode inti dari strategi ini adalah sebagai berikut:

fast = input(25, title="Fast")
slow = input(75, title="Slow") 

matype1=ema(source, fast)
matype2=ema(source, slow)

longCondition = crossover(matype1, matype2)
shortCondition = crossunder(matype1, matype2) 

if (longCondition)
    strategy.entry("Long", strategy.long)
     
if (shortCondition)
    strategy.entry("Short", strategy.short) 

Strategi ini pertama-tama menetapkan dua garis EMA, dengan periode EMA cepat sebagai 25 dan periode EMA lambat sebagai 75. Kemudian menghitung nilai dari dua garis EMA. Ketika EMA cepat melintasi di atas EMA lambat, longCondition menjadi benar. Ketika EMA cepat melintasi di bawah EMA lambat, shortCondition menjadi benar. Setelah kondisi yang sesuai benar, itu menjadi panjang atau pendek.

Strategi ini memanfaatkan fitur smoothing dari EMA untuk menyaring kebisingan pasar, sambil dapat dengan cepat menangkap perubahan tren.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Logikanya sederhana dan intuitif, mudah dimengerti dan diterapkan.

  2. EMA meringankan fluktuasi pasar dan menyaring sinyal palsu secara efektif.

  3. Salib emas dan salib kematian adalah sinyal perdagangan yang kuat untuk mengendalikan risiko.

  4. Periode EMA yang fleksibel sesuai dengan lingkungan pasar yang berbeda.

  5. Mudah dikombinasikan dengan indikator teknis lainnya.

  6. Parameter EMA dapat dioptimalkan untuk hasil yang lebih baik.

Analisis Risiko

Risiko dari strategi ini meliputi:

  1. Sinyal yang sering tidak efektif di pasar yang terikat rentang karena EMA sering melintasi.

  2. Kelewatan EMA dapat kehilangan peluang jangka pendek.

  3. Crossover EMA saja tidak dapat mengidentifikasi pembalikan tren, membatasi potensi keuntungan.

  4. Periode EMA tetap tidak dapat beradaptasi dengan perubahan pasar.

  5. Membutuhkan modal yang signifikan, jika tidak memperbesar risiko.

  6. Membutuhkan stop loss yang ketat, jika tidak kerugian tunggal bisa sangat besar.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan periode EMA untuk kondisi pasar yang berbeda.

  2. Tambahkan filter lain seperti MACD, Bollinger Bands untuk meningkatkan kualitas sinyal.

  3. Tambahkan indikator penilaian tren seperti ATR, ADX untuk mengurangi perdagangan yang tidak efektif.

  4. Menggabungkan analisis multi-frame waktu untuk menentukan arah tren.

  5. Gunakan pembelajaran mesin untuk secara dinamis mengoptimalkan periode EMA.

  6. Mengoptimalkan ukuran posisi untuk mengendalikan risiko.

  7. Mengoptimalkan strategi stop loss untuk membatasi kerugian tunggal.

Ringkasan

Strategi ini menggunakan dua EMA golden cross dan death cross sebagai sinyal perdagangan, membentuk strategi trend berikut klasik. Ini sederhana dan mudah diterapkan, dan dapat dikombinasikan dengan indikator lain, yang sesuai dengan investor dengan persyaratan yang relatif rendah pada penilaian tren. Tapi juga memiliki batas keuntungan dan risiko, yang membutuhkan optimasi yang tepat untuk lingkungan pasar yang berbeda. Secara keseluruhan, ini memberikan dasar yang sangat baik untuk pengembangan strategi dan penelitian mendalam.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars

//@version=4
strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true)

matype = input("ema")
hidema = input(false)
sourcetype = input(close, title="Source Type")
source=close
 
// STEP 1:
// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=231)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12) 
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

fast = input(25, title="Fast")
slow = input(75, title="Slow")

matype1=ema(source, fast)
matype2=ema(source, slow)


signalcolor = source > matype2 ? color.blue : color.red
signal = cross(fast, slow) 



hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA")
yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA")
//kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme")
 

longCondition = crossover(matype1, matype2)
if (afterStartDate and longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(matype1, matype2)
if (afterStartDate and shortCondition)
    strategy.entry("Short", strategy.short)
    

//--------------------------------------------------------

//volume based color bars
length=input(21, "length", minval=1)
avrg=sma(volume,length)

vold1 = volume > avrg*1.5 and close<open
vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open
vold3 = volume < avrg *0.5 and close<open

volu1 = volume > avrg*1.5 and close>open
volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open
volu3 = volume< avrg*0.5 and close>open

cold1=#800000
cold2=#FF0000
cold3=color.orange

colu1=#006400
colu2=color.lime
colu3=#7FFFD4

ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na

barcolor(ac)

Lebih banyak