Strategi Mengikuti Tren Salib Emas EMA Ganda


Tanggal Pembuatan: 2023-11-21 15:10:54 Akhirnya memodifikasi: 2023-11-21 15:10:54
menyalin: 0 Jumlah klik: 648
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Salib Emas EMA Ganda

Ringkasan

Strategi ini merupakan strategi pelacakan tren sederhana dengan menghitung EMA garis cepat dan EMA garis lambat, dan membandingkan hubungan besar dan kecil antara dua EMA untuk menentukan arah tren pasar. Ketika EMA garis cepat melintasi EMA garis lambat, Anda harus melakukan lebih banyak, dan ketika EMA garis cepat melintasi EMA garis lambat, Anda harus mengambil posisi kosong.

Prinsip Strategi

Indikator inti dari strategi ini adalah EMA garis cepat dan EMA garis lambat. Panjang EMA garis cepat diatur menjadi 21 siklus dan panjang EMA garis lambat diatur menjadi 55 siklus. EMA garis cepat dapat merespon perubahan harga lebih cepat, mencerminkan tren jangka pendek terbaru; EMA garis lambat dapat merespon perubahan harga lebih lambat, memfilter beberapa kebisingan, mencerminkan tren jangka menengah dan panjang.

Ketika garis cepat EMA melewati garis lambat EMA, berarti tren jangka pendek berubah menjadi naik, tren jangka menengah mungkin terjadi pembalikan, ini adalah sinyal untuk melakukan lebih banyak. Ketika garis cepat EMA melewati garis lambat EMA, berarti tren jangka pendek berubah menjadi turun, tren jangka menengah mungkin terjadi pembalikan, ini adalah sinyal untuk melakukan shorting.

Dengan membandingkan EMA cepat dan lambat, titik-titik perubahan tren dapat ditangkap dalam dua skala waktu, jangka pendek dan jangka menengah, yang merupakan strategi pelacakan tren yang khas.

Keunggulan Strategis

  1. Pemikiran sederhana, jelas, mudah dipahami dan diterapkan
  2. Fleksibilitas pengaturan parameter, siklus EMA jalur cepat dan lambat dapat disesuaikan
  3. ATR Stop Loss Stop yang dapat dikonfigurasi, risiko yang dapat dikendalikan

Risiko Strategis

  1. Penentuan waktu persimpangan EMA ganda mungkin salah, ada risiko kehilangan titik masuk terbaik
  2. Ketika terjadi gejolak, sinyal-sinyal yang tidak efektif dapat muncul berkali-kali, sehingga menimbulkan risiko kerugian.
  3. Parameter ATR yang tidak tepat dapat menyebabkan stop loss terlalu longgar atau terlalu radikal

Tindakan pencegahan risiko:

  1. Optimalkan parameter EMA untuk mencari kombinasi parameter yang optimal
  2. Menambahkan mekanisme penyaringan untuk menghindari sinyal tidak efektif yang ditimbulkan oleh pergerakan pasar.
  3. Uji dan optimalkan parameter ATR untuk memastikan pengaturan stop loss masuk akal

Arah optimasi strategi

  1. Berdasarkan metode statistik untuk menguji stabilitas dari berbagai parameter siklus EMA
  2. Menambahkan kondisi penyaringan untuk menghindari sinyal yang tidak valid dalam kombinasi dengan indikator lainnya
  3. Optimalkan parameter ATR untuk mendapatkan stop loss stop loss yang optimal

Meringkaskan

Strategi ini menilai tren pasar melalui persilangan EMA garis cepat dan EMA garis lambat, sederhana, jelas, dan mudah diterapkan. Selain itu, dengan ATR untuk mengatur stop loss, risiko dapat dikendalikan. Dengan mengoptimalkan parameter dan meningkatkan kondisi penyaringan, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.

Kode Sumber Strategi
/*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)