Triple EMA Trend Mengikuti Strategi


Tarikh penciptaan: 2023-09-27 17:19:26 Akhirnya diubah suai: 2023-09-27 17:19:26
Salin: 0 Bilangan klik: 770
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini adalah berdasarkan kepada strategi Amazing scalper for majors with risk management dari SoftKill21 yang telah diubahsuai dengan menggunakan purata bergerak indeks tiga kali ganda sebagai pengganti purata bergerak mudah asal untuk mengurangkan kelewatan. Strategi ini digunakan untuk kitaran 1 minit bagi pasangan mata wang utama, menggunakan kaedah pengesanan trend untuk membeli dan menjual operasi berdasarkan emas silang dan silang mati EMA cepat, EMA standard dan EMA perlahan.

Prinsip Strategi

Strategi ini menggunakan purata bergerak indeks dari tiga kitaran yang berbeza: 25 kitaran EMA pantas, 50 kitaran EMA standard dan 100 kitaran EMA perlahan. Apabila EMA pantas melintasi EMA standard dan EMA perlahan, ia menghasilkan isyarat beli; Apabila EMA pantas melintasi EMA standard dan EMA perlahan, ia menghasilkan isyarat jual.

Khususnya, strategi pertama mengira tiga garis EMA, dan kemudian menilai sama ada EMA pantas membentuk persilangan emas atau dead fork dengan EMA standard dan EMA perlahan, dan menghasilkan isyarat beli atau jual jika syarat yang sepadan dengan waktu pembukaan London atau New York pada masa yang sama dipenuhi. Untuk menentukan saiz kedudukan, strategi pertama mengira peratusan tetap kepentingan hak akaun sebagai pintu masuk risiko, dan kemudian menukarnya menjadi bilangan kontrak dan jam standard, yang secara dinamik menyesuaikan kedudukan setiap pesanan.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan triple EMA, dapat meratakan data harga dengan berkesan, mengenal pasti arah trend. EMA pantas sensitif terhadap perubahan harga, EMA stabil standard, penapis bunyi EMA perlahan. Ketiga-tiga ini digunakan bersama, dapat menapis pecah palsu, menentukan arah trend.

  2. Menggunakan teknik kelancaran indeks sekunder untuk mengira EMA, mengurangkan keterlambatan dan menjadikan isyarat lebih sensitif.

  3. Menggabungkan masa perdagangan utama untuk mengelakkan isyarat yang mengelirukan pada masa perdagangan yang tidak utama.

  4. Menggunakan prinsip pengurusan risiko, menyesuaikan kedudukan mengikut hak dan kepentingan akaun. Mengelakkan kerugian tunggal yang terlalu besar menyebabkan kejutan pada akaun.

  5. Strategi logiknya mudah difahami, mudah diimplementasikan, dan sesuai untuk pelajar pemula.

  6. Boleh disesuaikan dengan baik untuk pasangan mata wang yang berbeza dan tempoh masa yang berbeza.

Analisis risiko

Strategi ini juga mempunyai beberapa risiko yang mungkin:

  1. EMA tidak dapat menyaring secara berkesan penembusan palsu jangka pendek yang disebabkan oleh kejadian mendadak, yang mungkin menghasilkan isyarat yang salah. Ia disyorkan untuk menganalisis penyaringan dalam kombinasi dengan petunjuk lain.

  2. Posisi peratusan tetap tidak dapat menyesuaikan diri secara dinamik dengan turun naik pasaran, terdapat masalah kedudukan yang terlalu besar atau terlalu kecil. Anda boleh mempertimbangkan untuk memperkenalkan kedudukan penyesuaian dinamik indikator seperti kadar turun naik.

  3. Hanya mengambil kira dua masa perdagangan utama, mungkin terlepas peluang perdagangan pada masa-masa lain. Anda boleh menguji kesannya pada masa yang berbeza.

  4. Tidak mempunyai mekanisme penangguhan, tidak dapat mengawal kerugian unilateral dengan berkesan. Anda boleh menetapkan penangguhan bergerak atau penangguhan masa.

  5. EMA cross mempunyai keterlambatan tertentu, mungkin terlepas masa masuk yang terbaik. Anda boleh mempertimbangkan untuk mengurangkan kitaran EMA atau menggabungkannya dengan penunjuk pendahuluan lain.

  6. Kesan mungkin dipengaruhi oleh kos urus niaga. Ia disyorkan untuk menyesuaikan kedudukan hentian dan hentian dengan sewajarnya.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji parameter kitaran EMA yang berbeza untuk mencari kombinasi parameter yang optimum. Teknologi seperti adaptasi EMA dapat diperkenalkan untuk mengoptimumkan kitaran EMA secara dinamik.

  2. Tambah penapis lain seperti RSI, Brinband dan lain-lain untuk meningkatkan kualiti isyarat.

  3. Memperkenalkan mekanisme pengurusan kedudukan dinamik, menyesuaikan kedudukan mengikut turun naik pasaran dan keuntungan.

  4. Tambah pergerakan berhenti, berhenti masa untuk mengehadkan kerugian.

  5. Uji masa perdagangan yang berbeza untuk mencari masa perdagangan yang terbaik. Anda boleh menggabungkan masa penyaringan indikator seperti kadar turun naik.

  6. Mengoptimumkan tahap hentian dan hentian kerugian, mengimbangi saiz keuntungan dan kadar kemenangan. memperkenalkan hentian pintar seperti hentian parasol.

  7. Cuba mengubah cara pengiraan EMA, seperti EMA berat linear, untuk mengurangkan ketinggalan.

  8. Mencari parameter yang optimum dengan menggunakan kaedah pembelajaran mesin automatik.

  9. Memodelkan kos transaksi, menyesuaikan sistem untuk memaksimumkan keuntungan bersih

Dengan pengoptimuman di atas, anda boleh meningkatkan keuntungan sistem, mengawal penarikan balik, dan memperluaskan ruang lingkup, sehingga anda mendapat strategi perdagangan yang lebih kuat dan stabil.

ringkaskan

Strategi ini mempunyai pemikiran keseluruhan yang jelas, menggunakan EMA tiga untuk mengenal pasti trend, bekerjasama dengan masa perdagangan utama untuk beroperasi, dan menggunakan perkadaran akaun untuk menentukan kedudukan, termasuk dalam strategi jenis trend yang tipikal. Strategi ini mempunyai ruang pengoptimuman yang besar, dengan pengoptimuman parameter, penambahbaikan mekanisme, pengenalan teknologi, dan lain-lain, strategi ini dapat diperluaskan lebih lanjut untuk digunakan di lebih banyak pasaran, meningkatkan kestabilan strategi.

Kod 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)