Strategi Pelacakan Tren EMA GOLDEN CROSS

Penulis:ChaoZhang, Tanggal: 2023-11-21 15:10:54
Tag:

img

Gambaran umum

Strategi ini menghitung garis EMA cepat dan garis EMA lambat dan membandingkan hubungan ukuran antara kedua EMA untuk menentukan arah tren pasar. Ini termasuk dalam strategi pelacakan tren sederhana. Ketika EMA cepat melintasi EMA lambat, pergi panjang. Ketika EMA cepat melintasi EMA lambat, pergi pendek. Ini adalah strategi silang emas EMA ganda yang khas.

Logika Strategi

Indikator inti dari strategi ini adalah EMA cepat dan EMA lambat. Panjang EMA cepat ditetapkan menjadi 21 periode dan panjang EMA lambat ditetapkan menjadi 55 periode. EMA cepat dapat merespons perubahan harga lebih cepat, mencerminkan tren jangka pendek baru-baru ini; EMA lambat merespons lebih lambat terhadap perubahan harga, menyaring beberapa kebisingan dan mencerminkan tren jangka menengah hingga panjang.

Ketika EMA cepat melintasi di atas EMA lambat, ini menunjukkan bahwa tren jangka pendek telah berbalik ke atas dan tren jangka menengah hingga panjang mungkin telah berbalik, yang merupakan sinyal untuk pergi panjang.

Dengan membandingkan EMA cepat dan lambat, ia menangkap titik pembalikan tren pada dua skala waktu, jangka pendek dan jangka menengah hingga panjang, yang merupakan strategi pelacakan tren yang khas.

Keuntungan

  1. Logika yang sederhana dan jelas, mudah dimengerti dan diterapkan
  2. Pengaturan parameter yang fleksibel, periode EMA cepat dan lambat dapat disesuaikan
  3. ATR stop loss dan take profit yang dapat dikonfigurasi untuk risiko yang dapat dikontrol

Risiko

  1. Waktu yang tidak tepat untuk penyeberangan EMA, risiko kehilangan titik masuk terbaik
  2. Sinyal yang sering tidak valid selama konsolidasi pasar, menyebabkan kerugian
  3. Pengaturan parameter ATR yang tidak benar, menyebabkan berhenti terlalu longgar atau terlalu agresif

Manajemen Risiko:

  1. Mengoptimalkan EMA cepat dan lambat garis parameter untuk menemukan kombinasi yang optimal
  2. Menambahkan mekanisme penyaringan untuk menghindari sinyal yang tidak valid dari konsolidasi pasar
  3. Uji dan optimalkan parameter ATR untuk memastikan stop loss dan profit take yang wajar

Bidang Peningkatan

  1. Stabilitas uji dari parameter periode EMA yang berbeda berdasarkan metode statistik
  2. Tambahkan kondisi penyaringan dikombinasikan dengan indikator lain untuk menghindari sinyal yang tidak valid
  3. Mengoptimalkan parameter ATR untuk mendapatkan rasio stop loss/take profit terbaik

Ringkasan

Strategi ini menilai tren berdasarkan EMA crossovers, yang sederhana dan jelas untuk diimplementasikan. Dengan ATR berbasis berhenti, risiko terkendali. Peningkatan lebih lanjut pada stabilitas dan profitabilitas dapat dilakukan melalui optimasi parameter dan kondisi penyaringan.


/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "VP Backtester", overlay=false)


// Create General Strategy Inputs
st_yr_inp = input(defval=2017, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
 
// Default Stop Types
fstp = input(defval=false, title="Fixed Perc stop")
fper = input(defval=0.1, title='Percentage for fixed stop', type=float)
atsp = input(defval=true, title="ATR Based stop")
atrl = input(defval=14, title='ATR Length for stop')
atrmsl = input(defval=1.5, title='ATR Multiplier for stoploss')
atrtpm = input(defval=1, title='ATR Multiplier for profit')
 
// Sessions
asa_inp = input(defval=true, title="Trade the Asian Session")
eur_inp = input(defval=true, title="Trade the European Session")
usa_inp = input(defval=true, title="Trade the US session")
ses_cls = input(defval=true, title="End of Session Close Out?")
 
// Session Start / End times (In exchange TZ = UTC-5)    
asa_ses = "1700-0300" 
eur_ses = "0200-1200" 
usa_ses = "0800-1700"  
 
in_asa = time(timeframe.period, asa_ses)
in_eur = time(timeframe.period, eur_ses)
in_usa = time(timeframe.period, usa_ses)
 
strategy.risk.allow_entry_in(strategy.direction.all)
 
// Set start and end dates for backtest
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
window()  => time >= start and time <= end ? true : false // create function "within window of time"

 
// Check if we are in a sessions we want to trade
can_trade = asa_inp and not na(in_asa) ? true :
  eur_inp and not na(in_eur) ? true :
  usa_inp and not na(in_usa) ? true :
  false
  
// atr calc for stop and profit
atr = atr(atrl)
atr_stp_dst_sl = atr * atrmsl
atr_stp_dst_tp = atr * atrtpm



//*************************************************************************************
// Put your strategy/indicator code below
// and make sure to set long_condition=1 for opening a buy trade
// and short_condition for opening a sell trade
//*************************************************************************************
fastInput = input(21)
slowInput = input(55)

fast = ema(close, fastInput)
slow = ema(close, slowInput)

plot(fast, color = red)
plot(slow, color = blue)

long_condition = crossover(fast, slow)
short_condition = crossunder(fast, slow)


//*************************************************************************************
// Trade management with ATR based stop & profit
//*************************************************************************************
if (long_condition and window() )
    strategy.entry("Long Entry",  strategy.long)
    if strategy.position_size <= 0 // Less than as in both direction strat - Could be long before switching
        if atsp
            atr_stop = open  - atr_stp_dst_sl
            atr_profit = open + atr_stp_dst_tp
            strategy.exit('ATR Long Exit', "Long Entry", stop=atr_stop, limit = atr_profit)
        if fstp
            stop = open - (open * fper)
            strategy.exit('Perc Fixed Long Stop Exit', "Long Entry", stop=stop)
 
if (short_condition and window() )
    strategy.entry("Short Entry",strategy.short)
    if strategy.position_size >= 0 // Greater than as in both direction strat - Could be long before switching
        if atsp
            atr_stop = open  + atr_stp_dst_sl
            atr_profit = open - atr_stp_dst_tp
            strategy.exit('ATR Short Exit', "Short Entry", stop=atr_stop, limit = atr_profit)
        if fstp
            stop = open + (open * fper)
            strategy.exit('Perc Fixed Short Stop Exit', "Short Entry", stop=stop)
 
 
strategy.close_all(when=not can_trade and ses_cls)
 


Lebih banyak