Strategi Mengikuti Tren Triple EMA


Tanggal Pembuatan: 2023-09-27 17:19:26 Akhirnya memodifikasi: 2023-09-27 17:19:26
menyalin: 0 Jumlah klik: 770
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini didasarkan pada strategi Amazing scalper for majors with risk management dari SoftKill21 yang telah dimodifikasi untuk mengurangi keterlambatan dengan menggunakan Triple Index Moving Average sebagai pengganti Simple Moving Average yang asli. Strategi ini berlaku untuk periode 1 menit dari pasangan mata uang utama, menggunakan metode pelacakan tren untuk melakukan pembelian dan penjualan berdasarkan emas cross dan dead cross dari EMA cepat, EMA standar, dan EMA lambat.

Prinsip Strategi

Strategi ini menggunakan tiga periode yang berbeda dari indeks moving average: 25 siklus EMA cepat, 50 siklus EMA standar dan 100 siklus EMA lambat. Ketika EMA cepat naik melewati EMA standar dan EMA lambat, menghasilkan sinyal beli; Ketika EMA cepat turun melewati EMA standar dan EMA lambat, menghasilkan sinyal jual. Untuk mengurangi lag, menggunakan teknik pengolahan indeks sekunder untuk menghitung EMA.

Secara khusus, strategi pertama kali menghitung tiga garis EMA, kemudian menilai apakah EMA cepat membentuk persilangan emas atau dead fork dengan EMA standar dan EMA lambat, dan menghasilkan sinyal beli atau jual jika kondisi yang cocok dengan waktu pembukaan London atau New York City juga terpenuhi. Untuk menentukan ukuran posisi, strategi pertama kali menghitung persentase tetap dari ekuitas akun sebagai pintu masuk risiko, dan kemudian mengubahnya menjadi jumlah kontrak dan jam standar, sehingga secara dinamis menyesuaikan posisi setiap pesanan.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menggunakan triple EMA, dapat secara efektif meluruskan data harga, mengidentifikasi arah tren. EMA cepat sensitif terhadap perubahan harga, pelacakan stabil EMA standar, EMA lambat memfilter kebisingan.

  2. Menggunakan teknik smoothing indeks sekunder untuk menghitung EMA, mengurangi lag dan membuat sinyal lebih sensitif.

  3. Tergabung dengan waktu perdagangan utama, untuk menghindari sinyal yang menyesatkan di waktu perdagangan non-utama.

  4. Menggunakan prinsip manajemen risiko, menyesuaikan posisi sesuai dengan hak dan kepentingan akun. Menghindari kerugian tunggal yang terlalu besar untuk memberi dampak pada akun.

  5. Strategi logisnya sederhana dan jelas, mudah dipahami implementasinya, cocok untuk pemula.

  6. Dapat disesuaikan secara optimal untuk berbagai pasangan mata uang, siklus waktu, dan aplikasi luas.

Analisis risiko

Strategi ini juga memiliki beberapa kemungkinan risiko:

  1. EMA tidak dapat secara efektif menyaring kebocoran jangka pendek yang disebabkan oleh peristiwa yang tidak terduga, yang dapat menghasilkan sinyal yang salah.

  2. Posisi persentase tetap tidak dapat melakukan penyesuaian dinamis terhadap fluktuasi pasar, ada masalah posisi terlalu besar atau terlalu kecil. Anda dapat mempertimbangkan untuk memperkenalkan indikator penyesuaian posisi dinamis seperti volatilitas.

  3. Dengan hanya mempertimbangkan dua periode perdagangan utama, peluang perdagangan pada periode lain mungkin terlewatkan. Efek dari periode yang berbeda dapat diuji.

  4. Tidak memiliki mekanisme stop loss, tidak dapat mengontrol kerugian unilateral secara efektif. Anda dapat mengatur stop loss bergerak atau stop loss waktu.

  5. EMA cross memiliki keterlambatan dan mungkin kehilangan waktu terbaik untuk masuk. Anda dapat mempertimbangkan untuk mengurangi siklus EMA atau menggabungkannya dengan indikator pendahuluan lainnya.

  6. Efeknya mungkin dipengaruhi oleh biaya transaksi. Disarankan untuk menyesuaikan posisi stop loss dan stop loss dengan tepat.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Uji parameter siklus EMA yang berbeda untuk mencari kombinasi parameter yang optimal. Adab EMA dapat diperkenalkan untuk mengoptimalkan siklus EMA secara dinamis.

  2. Menambahkan indikator penyaringan lainnya, seperti RSI, Brinks, dan lain-lain, meningkatkan kualitas sinyal.

  3. Memperkenalkan mekanisme manajemen posisi dinamis, menyesuaikan posisi sesuai dengan volatilitas pasar dan keuntungan.

  4. Tambahkan stop loss bergerak, stop loss waktu untuk membatasi kerugian. Sesuai menyesuaikan titik stop loss.

  5. Uji waktu perdagangan yang berbeda untuk menemukan waktu perdagangan yang optimal. Anda dapat menggabungkan indikator seperti volatilitas untuk memfilter waktu.

  6. Mengoptimalkan stop loss dan stop loss level, menyeimbangkan ukuran keuntungan dan tingkat kemenangan. Memperkenalkan stop loss cerdas seperti stop loss parabola.

  7. Cobalah untuk memperbaiki cara menghitung EMA, seperti EMA linear, untuk mengurangi keterlambatan.

  8. Mencari parameter optimal dengan menggunakan metode pembelajaran mesin otomatis.

  9. Untuk memodelkan biaya transaksi, menyesuaikan sistem untuk mendapatkan keuntungan bersih maksimal.

Dengan pengoptimalan di atas, Anda dapat meningkatkan profitabilitas sistem, mengontrol penarikan, dan memperluas ruang lingkup aplikasi, sehingga mendapatkan strategi perdagangan yang lebih kuat dan stabil.

Meringkaskan

Strategi ini memiliki ide yang jelas, menggunakan tiga EMA untuk mengidentifikasi tren, bekerja sama dengan waktu perdagangan utama untuk beroperasi, dan menggunakan rasio akun untuk menentukan posisi, termasuk dalam strategi jenis trend tracking. Strategi ini memiliki ruang yang luas untuk pengoptimalan, dengan cara pengoptimalan parameter, perbaikan mekanisme, dan pengenalan teknologi, dapat memperluas penerapan strategi di lebih banyak pasar, meningkatkan kehandalan strategi.

Kode Sumber Strategi
/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// original author SoftKill21
//@version=4
//@capam 

strategy(title="Triple EMA Scalper low lag strat", shorttitle="3EMA scalper", overlay=true)
strategy.initial_capital = 50000
len1 = input(25, minval=1, title="Length")
len2 = input(50, minval=1, title="Length")
len3 = input(100, minval=1, title="Length")

src = input(close, title="Source")
tmp1 = ema(src, len1)
tmp2 = ema(src, len2)
tmp3 = ema(src, len3)
fastemaOut = 2*tmp1 - ema(tmp1, len1)
standardemaOut = 2*tmp2 - ema(tmp2, len2)
slowemaOut = 2*tmp3 - ema(tmp3, len3)
//fastemaOut = sma(src, len1)
//standardemaOut = sma(src, len2)
//slowemaOut = sma(src, len3)

plot(fastemaOut, color=color.black, title="First EMA")
plot(standardemaOut, color=color.yellow, title="Second EMA")
plot(slowemaOut, color=color.blue, title="Third EMA")


timeinrange(res, sess) => time(res, sess) != 0


londopen = timeinrange(timeframe.period, "0300-1100") 
nyopen = timeinrange(timeframe.period, "0800-1600") 

longCondition = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and londopen //or nyopen)
shortCondition = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and londopen// or nyopen)

longCondition2 = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and nyopen
shortCondition2 = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and nyopen
tp = input(50,title="TP")
sl = input(100, title="SL")

tradeLondon =  input(title="Trade london session?", type=input.bool, defval=true)
tradeNewyork = input(title="Trade new york session?", type=input.bool, defval=true)

//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(1,type=input.float,title="Risk % of equity ")/100           //risk % per trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
    size := 1000        

if(tradeLondon==true)
    strategy.entry("long",1,when=longCondition)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

if(tradeNewyork==true)
    strategy.entry("long",1,when=longCondition2)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition2)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

// strategy.risk.max_intraday_filled_orders(2)