Strategi Mengikuti Tren Double EMA Golden Cross dan Death Cross


Tanggal Pembuatan: 2024-02-29 11:45:42 Akhirnya memodifikasi: 2024-02-29 11:45:42
menyalin: 0 Jumlah klik: 644
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Double EMA Golden Cross dan Death Cross

Ringkasan

Strategi ini menggunakan dua indikator EMA untuk menentukan arah tren harga. Strategi ini menentukan tren harga dengan menghitung dua set parameter yang berbeda dari indikator EMA, yang menggabungkan sinyal EMA dan dead fork. Strategi ini menghasilkan sinyal beli ketika EMA yang lebih pendek melewati EMA yang lebih panjang; menghasilkan sinyal jual ketika EMA yang lebih pendek melewati EMA yang lebih panjang.

Prinsip Strategi

Indikator inti dari strategi ini adalah dua set EMA, yang terdiri dari satu set EMA1 dengan periode yang lebih lama dan satu set EMA2 dengan periode yang lebih pendek. Strategi ini menghitung dua set EMA dengan siklus dasar pada garis 4 jam.

Ketika periode yang lebih pendek EMA2 melewati periode yang lebih lama EMA1, menghasilkan sinyal beli. Ini menunjukkan bahwa tren jangka pendek harga menjadi kuat dan mulai memasuki tren naik. Ketika periode yang lebih pendek EMA2 melewati periode yang lebih lama EMA1, menghasilkan sinyal jual. Ini menunjukkan bahwa tren kenaikan jangka pendek harga terputus dan mulai memasuki tren turun.

Untuk menyaring sinyal kesalahan, strategi menetapkan dua set indikator Gold Fork Dead Fork. Hanya jika kedua set indikator mengirimkan sinyal pada saat yang sama, maka akan memicu pembelian dan penjualan yang sesuai. Hal ini dapat secara efektif mengurangi kesalahan perdagangan yang disebabkan oleh pergerakan harga.

Analisis Keunggulan

  • Dengan menggunakan struktur EMA ganda, perubahan tren harga dalam jangka pendek dapat ditangkap secara efektif, dan penilaian tren dapat dilakukan.
  • Menambahkan filter pada dua set indikator Gold Fork Dead Fork dapat mengurangi sinyal yang salah dan menghindari pergerakan harga yang menyebabkan transaksi yang tidak perlu.
  • Indikator ini digunakan dalam skala 4 jam untuk mengatasi fluktuasi harga yang sering terjadi.
  • Struktur strategi yang sederhana dan jelas, mudah dipahami implementasi, cocok untuk aplikasi perdagangan kuantitatif.

Analisis risiko

  • Struktur double EMA kurang efektif dalam menilai situasi pencatatan. Jika terjadi pencatatan yang lama, sinyal yang salah akan dihasilkan.
  • Indikator tingkat 4 jam tidak cukup sensitif terhadap respons terhadap kejadian yang mengejutkan. Pemberitahuan mengejutkan yang signifikan dapat menyebabkan perubahan besar dalam waktu 4 jam dan tidak dapat mengontrol risiko secara efektif.
  • Strategi hanya didasarkan pada indikator teknis, tidak digabungkan dengan informasi fundamental. Jika fundamental perusahaan berubah secara signifikan, indikator teknis mungkin tidak berlaku.

Risiko-risiko ini dapat dikendalikan dengan cara-cara berikut:

  1. Menambahkan indikator EMA untuk lebih banyak periode waktu, membangun portofolio model.
  2. Dengan menggunakan analisis emosi teks dan lain-lain untuk menilai peristiwa besar yang terjadi, dan untuk menyesuaikan posisi secara dinamis.
  3. Parameter penyesuaian dinamis yang terkait dengan perubahan lingkungan ekonomi, kebijakan, dan fundamental perusahaan.

Arah optimasi

Strategi ini masih bisa dioptimalkan lebih jauh:

  1. Meningkatkan portofolio model. Anda dapat membuat lebih banyak kombinasi dari berbagai parameter indikator, meningkatkan stabilitas strategi.

  2. Meningkatkan mekanisme penangguhan kerugian. Menetapkan titik penangguhan yang masuk akal, yang dapat secara efektif mengendalikan kerugian tunggal.

  3. Optimasi parameter dinamis. Parameter EMA dapat dioptimalkan secara otomatis sesuai dengan kondisi pasar yang berbeda.

  4. Menggabungkan teknologi pembelajaran mesin. Menggunakan kerangka kerja seperti Tensorflow, melatih model untuk memprediksi tren harga secara real-time.

Meringkaskan

Strategi pelacakan tren dua EMA adalah strategi perdagangan tren yang sederhana dan praktis. Ini menggunakan indikator dua EMA untuk menilai tren jangka pendek dalam harga untuk menangkap peluang untuk gerakan arah.

Kode Sumber Strategi
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)