Strategi ini adalah strategi trading yang sederhana dan efisien, yang menggabungkan indikator oscillator MACD dengan EMA rata-rata bergerak. Saat ini diatur untuk 4 jam K-line, dapat disesuaikan dengan periode waktu lain sesuai kebutuhan. Ini berkinerja lebih baik pada data Bitcoin dan Ethereum selama 3 tahun terakhir, daripada strategi kepemilikan semata-mata.
Strategi ini terdiri dari:
Indeks MACD: menilai perubahan dinamika harga
EMA Average: menentukan arah tren harga.
Kondisi waktu: batas waktu kebijakan berlaku.
Pilihan lebih banyak ruang: pilih lebih banyak atau lebih banyak ruang.
Aturan transaksi adalah sebagai berikut:
Berinvestasi/Belanja: Berinvestasi/Belanja ketika harga close out lebih tinggi dari EMA, MACD column adalah positif, dan garis K saat ini lebih tinggi dari hari sebelumnya.
Open/Broad: Open/Broad terjadi ketika harga close-out berada di bawah EMA, MACD Column adalah negatif, dan K Line saat ini berada di bawah hari sebelumnya.
Strategi ini jelas, menggabungkan tren dan ide-ide perdagangan jangka pendek untuk membentuk sistem keputusan kuantitatif yang efisien.
Strategi ini memiliki beberapa keunggulan dibandingkan dengan satu indikator:
MACD menilai momentum jangka pendek, EMA menilai arah tren, dan indikator bekerja sama erat.
Peraturan-peraturan itu sederhana dan jelas, mudah dipahami, dan tidak terlalu sulit untuk diterapkan.
Parameter dapat disesuaikan secara fleksibel untuk berbagai varietas dan periode waktu.
Anda dapat melakukan perdagangan satu arah atau perdagangan dua arah.
Anda dapat mengatur jangka waktu yang berlaku untuk menghindari transaksi yang tidak perlu.
Ini adalah salah satu dari banyak keuntungan yang bisa didapatkan dari bisnis ini.
Pengelolaan dana dapat dikontrol, dan kerugian tunggal dapat dihindari.
Teknologi Pembelajaran Mesin dapat diperkenalkan untuk optimasi dan peningkatan.
Meskipun ada banyak keuntungan dari strategi ini, ada risiko berikut yang perlu diperhatikan:
Optimasi parameter lebih luas dan ada risiko overoptimasi.
Tidak ada Stop Loss Stop, ada risiko peningkatan kerugian.
Tidak mempertimbangkan volume transaksi, kemungkinan akan terjadi penembusan palsu.
Terlambat mengidentifikasi titik balik tren, tidak dapat sepenuhnya menghindari kerugian.
Efeknya mungkin berkurang karena perubahan kondisi pasar.
Hanya berdasarkan data historis, perhatikan model yang stabil.
Transaksi yang lebih sering dan mungkin lebih mahal.
Perhatikan rasio pengembalian pendapatan untuk menghindari kurva yang terlalu curam.
Berdasarkan analisis di atas, strategi ini dapat dioptimalkan dengan cara:
Menambahkan indikator volume transaksi untuk menghindari terobosan palsu.
Meningkatkan pengaturan stop loss dan mengendalikan kerugian tunggal.
Evaluasi efek parameter dari periode waktu yang berbeda.
Memperkenalkan teknologi pembelajaran mesin untuk optimasi dinamis.
Verifikasi multi-pasar, meningkatkan stabilitas.
Mengatur ukuran posisi dan mengurangi frekuensi transaksi.
Optimalkan strategi pengelolaan dana.
Pengujian kontrak harga yang berbeda, meningkatkan frekuensi.
Tes ulang terus menerus untuk mencegah overfit.
Secara keseluruhan, strategi ini membentuk strategi kuantitatif yang sederhana dan efisien dalam kombinasi dengan indikator MACD dan EMA. Namun, strategi apa pun perlu terus dioptimalkan dan diverifikasi agar dapat tetap beradaptasi dan stabil terhadap perubahan lingkungan pasar. Strategi perdagangan perlu terus berevolusi dan diperbarui.
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21
//@version=4
strategy("My Script", overlay=true)
//heiking ashi calculation
UseHAcandles = input(false, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===
// === BASE FUNCTIONS ===
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
//timecondition
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
//ema data -- moving average
len = input(9, minval=1, title="Length")
src = input(hl2, title="Source")
out = ema(src, len)
//plot(out, title="EMA", color=color.blue)
//histogram
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//main variables to apply conditions are going to be out(moving avg) and hist(macd)
long = haClose > out and haClose > haClose[1] and out > out[1] and hist> 0 and hist[1] < 0 and time_cond
short = haClose < out and haClose < haClose[1] and out < out[1] and hist < 0 and hist[1] > 0 and time_cond
//limit to 1 entry
var longOpeneda = false
var shortOpeneda = false
var int timeOfBuya = na
longCondition= long and not longOpeneda
if longCondition
longOpeneda := true
timeOfBuya := time
longExitSignala = short
exitLongCondition = longOpeneda[1] and longExitSignala
if exitLongCondition
longOpeneda := false
timeOfBuya := na
plotshape(longCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="BUY", text="BUY", textcolor=color.white)
plotshape(exitLongCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="SELL", text="SELL", textcolor=color.white)
//automatization
longEntry= input(true)
shortEntry=input(false)
if(longEntry)
strategy.entry("long",strategy.long,when=longCondition)
strategy.close("long",when=exitLongCondition)
if(shortEntry)
strategy.entry("short",strategy.short,when=exitLongCondition)
strategy.close("short",when=longCondition)