Strategi Tren Salib Kematian Golden Cross EMA Ganda


Tanggal Pembuatan: 2023-12-29 15:46:15 Akhirnya memodifikasi: 2023-12-29 15:46:15
menyalin: 1 Jumlah klik: 701
1
fokus pada
1621
Pengikut

Strategi Tren Salib Kematian Golden Cross EMA Ganda

Ringkasan

Strategi ini menggunakan indikator EMA ganda untuk menentukan arah tren saat ini, dan digabungkan dengan indikator RSI untuk menghindari kehilangan peluang jual beli, merupakan strategi pelacakan tren yang khas.

Prinsip Strategi

  1. Perhitungan rata-rata EMA untuk periode 10 dan 20, masing-masing diberi nama ma00 dan ma01
  2. Ketika ma00 memakai ma01 menghasilkan sinyal beli
  3. Ketika ma00 di bawah menembus ma01 menghasilkan sinyal jual
  4. Pada saat yang sama, ketika harga naik ke ma00, sinyal beli juga akan dihasilkan jika ma00 lebih tinggi dari ma01
  5. Sama halnya ketika harga di bawah ma00, jika ma00 lebih rendah dari ma01 akan menghasilkan sinyal jual
  6. Dengan pertimbangan ganda ini, Anda bisa menghindari kehilangan beberapa titik jual beli.
  7. Menetapkan harga stop loss dan stop loss untuk mengendalikan risiko

Analisis Keunggulan

  1. Dengan menggunakan penilaian dua EMA, penyaringan terhadap penembusan palsu dapat dilakukan secara efektif.
  2. Pengadilan Syarat Ganda Menghindari Keterlambatan
  3. Pengaturan Stop Loss Stop yang menguntungkan untuk pengendalian risiko

Analisis risiko

  1. Strategi EMA rata-rata ganda adalah strategi pelacakan tren, sering dibeli dan dijual dalam situasi yang bergolak, mudah terhenti
  2. Tidak dapat menentukan titik balik tren dengan tepat, dapat menyebabkan kerugian
  3. Stop loss yang tidak tepat dapat memperbesar kerugian

Arah optimasi

  1. Periode EMA dapat dioptimalkan dengan tepat untuk mencari kombinasi parameter yang optimal
  2. Pertimbangan-pertimbangan lain dapat ditambahkan untuk meningkatkan stabilitas strategi
  3. Anda dapat mengatur stop loss secara dinamis dan menyesuaikan stop loss secara real-time dengan pergerakan pasar.
Kode Sumber Strategi
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title='[STRATEGY][RS]MicuRobert EMA cross V1', shorttitle='S', overlay=true, pyramiding=0, initial_capital=100000)
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
USE_TRAILINGSTOP = input(title='Use Trailing Stop?', type=bool, defval=true)
trade_session = input(title='Trade Session:',  defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?color.gray:na)
trade_size = input(title='Trade Size:', type=float, defval=1)
tp = input(title='Take profit in pips:', type=float, defval=55.0) * (syminfo.mintick*10)
sl = input(title='Stop loss in pips:', type=float, defval=11.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:',  defval=10)
ma_length01 = input(title='DEMA length:',  defval=20)
price = input(title='Price source:', defval=open)

//  ||--- NO LAG EMA, Credit LazyBear:  ---||
f_LB_zlema(_src, _length)=>
    _ema1=ema(_src, _length)
    _ema2=ema(_ema1, _length)
    _d=_ema1-_ema2
    _zlema=_ema1+_d
//  ||-------------------------------------||

ma00 = f_LB_zlema(price, ma_length00)
ma01 = f_LB_zlema(price, ma_length01)
plot(title='M0', series=ma00, color=black)
plot(title='M1', series=ma01, color=black)

isnewbuy = change(strategy.position_size)>0 and change(strategy.opentrades)>0
isnewsel = change(strategy.position_size)<0 and change(strategy.opentrades)>0

buy_entry_price = isnewbuy ? price : buy_entry_price[1]
sel_entry_price = isnewsel ? price : sel_entry_price[1]
plot(title='BE', series=buy_entry_price, style=circles, color=strategy.position_size <= 0 ? na : aqua)
plot(title='SE', series=sel_entry_price, style=circles, color=strategy.position_size >= 0 ? na : aqua)
buy_appex = na(buy_appex[1]) ? price : isnewbuy ? high : high >= buy_appex[1] ? high : buy_appex[1]
sel_appex = na(sel_appex[1]) ? price : isnewsel ? low : low <= sel_appex[1] ? low : sel_appex[1]
plot(title='BA', series=buy_appex, style=circles, color=strategy.position_size <= 0 ? na : teal)
plot(title='SA', series=sel_appex, style=circles, color=strategy.position_size >= 0 ? na : teal)
buy_ts = buy_appex - sl
sel_ts = sel_appex + sl
plot(title='Bts', series=buy_ts, style=circles, color=strategy.position_size <= 0 ? na : red)
plot(title='Sts', series=sel_ts, style=circles, color=strategy.position_size >= 0 ? na : red)

buy_cond1 = crossover(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
buy_cond0 = crossover(price, ma00) and ma00 > ma01 and (USE_TRADESESSION ? istradingsession : true)
buy_entry = buy_cond1 or buy_cond0
buy_close = (not USE_TRAILINGSTOP ? false : low <= buy_ts) or high>=buy_entry_price+tp//high>=last_traded_price + tp or low<=last_traded_price - sl //high >= hh or 
sel_cond1 = crossunder(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
sel_cond0 = crossunder(price, ma00) and ma00 < ma01 and (USE_TRADESESSION ? istradingsession : true)
sel_entry = sel_cond1 or sel_cond0
sel_close = (not USE_TRAILINGSTOP ? false : high >= sel_ts) or low<=sel_entry_price-tp//low<=last_traded_price - tp or high>=last_traded_price + sl //low <= ll or 

strategy.entry('buy', long=strategy.long, qty=trade_size, comment='buy', when=buy_entry)
strategy.close('buy', when=buy_close)
strategy.entry('sell', long=strategy.short, qty=trade_size, comment='sell', when=sel_entry)
strategy.close('sell', when=sel_close)

//What i add .!
pos = iff(ma01 < ma00 , 1,
	    iff(ma01 > ma00 , -1, nz(pos[1], 0))) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue)
plot(ma00, color=red, title="MA")
plot(ma01, color=blue, title="EMA")