Strategi Penembusan EMA Triple Crossover

Penulis:ChaoZhang, Tarikh: 2023-12-28 15:56:54
Tag:

img

Ringkasan

Strategi Triple EMA Crossover Breakout menggunakan penunjuk purata bergerak eksponensial tiga (EMA) untuk menentukan arah trend pasaran dan memasuki titik pecah trend.

Logika Strategi

Strategi ini berdasarkan prinsip-prinsip berikut:

  1. Gunakan tiga EMA dengan tempoh yang berbeza (200 hari, 50 hari, 20 hari) untuk menentukan trend pasaran utama, jangka sederhana dan jangka pendek.

  2. Apabila EMA jangka pendek (20 hari) melintasi di atas EMA jangka sederhana (50 hari), isyarat beli dihasilkan. Apabila melintasi di bawah, isyarat jual dihasilkan.

  3. Menggabungkan corak lilin untuk memeriksa kebolehpercayaan isyarat. Hanya apabila harga penutupan lilin kedua lebih tinggi (lebih rendah) daripada harga tinggi (lebih rendah) lilin sebelumnya, pecah dianggap boleh dipercayai.

  4. Tetapkan stop loss dan mengambil tahap keuntungan untuk mengehadkan risiko di luar turun naik harga yang munasabah.

Analisis Kelebihan

  1. Menggunakan pelbagai EMA meningkatkan ketepatan penilaian trend.

  2. Menyaring isyarat palsu dengan corak candlestick mengelakkan risiko perdagangan yang tidak perlu.

  3. Hentikan kerugian dan ambil keuntungan mengawal kerugian perdagangan tunggal dengan berkesan.

Analisis Risiko

  1. Dalam pasaran yang berbeza, EMA boleh menghasilkan isyarat palsu yang berlebihan dan gagal menentukan arah pasaran.

  2. Sistem penunjuk tunggal mempunyai kapasiti yang terhad dalam situasi pasaran yang kompleks.

  3. Ia mengabaikan kos perdagangan yang boleh membawa kepada ketidakberhasilan di pasaran bayaran tinggi.

Pengoptimuman

  1. Memperkenalkan penunjuk lain seperti MACD dan KDJ untuk membentuk sistem gabungan dan meningkatkan ketepatan penilaian.

  2. Mengoptimumkan parameter melalui backtesting untuk simbol dan jangka masa tertentu untuk membuat strategi sesuai dengan lebih baik.

  3. Tambah jumlah dagangan untuk mengelakkan isyarat palsu dengan jumlah yang rendah.

Kesimpulan

Triple EMA Crossover Breakout Strategy mempunyai logika yang jelas dan mudah difahami untuk menentukan trend pasaran dan mencari masa kemasukan menggunakan crossover EMA. Tetapi ia juga mempunyai beberapa batasan dalam menangani situasi pasaran yang kompleks. Ia disyorkan untuk digabungkan dengan penunjuk lain dan mengoptimumkan parameter untuk menyesuaikan diri dengan persekitaran perdagangan yang lebih pelbagai.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)

entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")

stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")


get_level(level, level100, level0) =>
    level * (level100 - level0) + level0

buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]

if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
    l = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, high[0], low[2])
    entryPrice2 = get_level(entryLevel2, high[0], low[2])
    entryPrice3 = get_level(entryLevel3, high[0], low[2])
    
    exitPrice = get_level(tpLevel, high[0], low[2])
    stopPrice = get_level(stopLevel, high[0], low[2])
    
    strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
    strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
    strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
    strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)

    label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(l, color.green)
    label.set_yloc(l, yloc.belowbar)
    label.set_style(l, label.style_label_up)
    
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
    a = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, low[0], high[2])
    entryPrice2 = get_level(entryLevel2, low[0], high[2])
    entryPrice3 = get_level(entryLevel3, low[0], high[2])
    
    exitPrice = get_level(tpLevel, low[0], high[2])
    stopPrice = get_level(stopLevel,low[0], high[2])
    
    strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
    strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) 
    strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
    strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) 

    label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(a, color.red)
    label.set_yloc(a, yloc.abovebar)
    label.set_style(a, label.style_label_down)
   


Lebih lanjut