Strategi Impulse EMA Bertiga

Penulis:ChaoZhang, Tarikh: 2023-09-27 17:19:26
Tag:

Ringkasan

Strategi ini dimodifikasi dari SoftKill21s Amazing scalper untuk jurusan dengan pengurusan risiko dengan menggunakan purata bergerak eksponensial tiga kali ganda dan bukannya purata bergerak mudah untuk mengurangkan lag. Ia sesuai untuk pasangan mata wang utama pada jangka masa 1 minit, mengamalkan pendekatan mengikut trend berdasarkan salib emas dan salib kematian EMA pantas, EMA standard dan EMA perlahan. Ia juga menggabungkan sesi London dan New York dan prinsip pengurusan risiko untuk menentukan saiz kedudukan.

Logika Strategi

Strategi ini menggunakan tiga EMA dengan tempoh yang berbeza: EMA pantas 25 tempoh, EMA standard 50 tempoh dan EMA perlahan 100 tempoh. Apabila EMA pantas melintasi EMA standard dan EMA perlahan, ia menghasilkan isyarat beli. Apabila EMA pantas melintasi di bawah EMA standard dan EMA perlahan, ia menghasilkan isyarat jual. Untuk mengurangkan kelewatan, EMA dikira menggunakan teknik pelunturan eksponensial berganda. Strategi ini juga memeriksa sama ada masa pasaran terbuka sesi London atau New York sesuai dengan syarat kemasukan. Di samping itu, saiz kedudukan setiap pesanan ditentukan secara dinamik dengan menggunakan peratusan tetap ekuiti akaun untuk mengawal risiko.

Secara khusus, strategi pertama mengira tiga garis EMA, kemudian memeriksa sama ada EMA cepat membentuk salib emas atau salib kematian dengan EMA standard dan EMA perlahan. Jika keadaan juga sepadan dengan waktu pasaran terbuka London atau New York, isyarat beli atau jual dihasilkan. Apabila menentukan saiz kedudukan, strategi mengira peratusan tetap ekuiti akaun sebagai pendedahan risiko, kemudian menukarnya kepada saiz kontrak dan banyak pusingan untuk menyesuaikan kedudukan secara dinamik untuk setiap pesanan.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. EMA bertiga dapat secara berkesan meluruskan data harga dan mengenal pasti arah trend. EMA pantas sensitif terhadap perubahan harga, EMA standard melacak dengan mantap, dan EMA perlahan menapis bunyi bising.

  2. Penggunaan kelancaran eksponensial berganda mengurangkan kelewatan dan menjadikan isyarat lebih sensitif.

  3. Memasukkan sesi dagangan utama mengelakkan isyarat yang mengelirukan pada waktu luar jam sibuk.

  4. Pendekatan pengurusan risiko menyesuaikan saiz kedudukan berdasarkan ekuiti akaun, mengelakkan kerugian berlebihan pada perdagangan tunggal.

  5. Logiknya mudah dan jelas, mudah difahami dan dilaksanakan, sesuai untuk pemula.

  6. Strategi ini boleh dioptimumkan dan disesuaikan untuk pasangan mata wang dan jangka masa yang berbeza, dengan penerapan yang luas.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko berpotensi:

  1. EMA tidak dapat menapis secara berkesan pecah palsu jangka pendek yang disebabkan oleh peristiwa tiba-tiba, yang boleh menghasilkan isyarat yang salah.

  2. Ukuran kedudukan peratusan tetap tidak dapat menyesuaikan secara dinamik dengan turun naik pasaran, yang membawa kepada kedudukan yang terlalu besar atau kurang besar. Ukuran kedudukan dinamik berdasarkan turun naik boleh dipertimbangkan.

  3. Hanya dua sesi utama yang dipertimbangkan, yang mungkin kehilangan peluang perdagangan dalam sesi lain.

  4. Kekurangan mekanisme stop loss mengakibatkan ketidakupayaan untuk mengawal kerugian satu sisi dengan berkesan.

  5. Penyambungan EMA mempunyai beberapa kelewatan dan mungkin tidak mempunyai masa masuk yang terbaik.

  6. Prestasi boleh dipengaruhi oleh kos transaksi. paras Stop Loss dan mengambil keuntungan harus disesuaikan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji parameter tempoh EMA yang berbeza untuk mencari kombinasi optimum. EMA adaptif boleh diperkenalkan untuk mengoptimumkan tempoh secara dinamik.

  2. Tambah penapis lain seperti RSI, Bollinger Bands untuk meningkatkan kualiti isyarat.

  3. Memperkenalkan saiz kedudukan dinamik berdasarkan turun naik pasaran dan keuntungan.

  4. Tambah bergerak atau masa berhenti kehilangan untuk mengehadkan kerugian.

  5. Uji sesi dagangan yang berbeza untuk mencari masa optimum.

  6. Mengoptimumkan tahap mengambil keuntungan dan menghentikan kerugian untuk mengimbangi saiz keuntungan dan kadar kemenangan. Memperkenalkan berhenti pintar seperti SAR parabolik.

  7. Cuba mengubah suai pengiraan EMA seperti EMA berat linear untuk mengurangkan lag.

  8. Gunakan pembelajaran mesin untuk mencari parameter optimum.

  9. Model kos transaksi dan sistem pelarasan untuk keuntungan bersih maksimum.

Melalui pengoptimuman di atas, keuntungan sistem dapat ditingkatkan, pengeluaran dikendalikan, penerapan diperluas, untuk mendapatkan strategi perdagangan yang lebih kuat dan kukuh.

Ringkasan

Logik keseluruhan strategi ini jelas, menggunakan EMA tiga untuk mengenal pasti trend, menggabungkan dengan sesi utama untuk pelaksanaan, dan mengamalkan saiz kedudukan berdasarkan peratusan akaun. Ia tergolong dalam sistem trend berikut biasa. Terdapat ruang yang besar untuk pengoptimuman melalui penyesuaian parameter, penambahbaikan mekanisme, pengenalan teknologi dan lain-lain untuk memperluaskan lagi penerapannya di lebih banyak pasaran dan meningkatkan ketahanan. Sebagai pembelajaran e untuk pemula, ia menyediakan titik permulaan yang baik. Dengan amalan dan peningkatan, ia boleh berubah menjadi strategi kuantitatif yang matang dan boleh dipercayai.


/*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) 

Lebih lanjut