Sumber daya yang dimuat... Pemuatan...

Dual EMA Golden Cross Strategi Terobosan

Penulis:ChaoZhang, Tanggal: 2023-12-20 16:34:58
Tag:

img

Gambaran umum

Strategi ini adalah strategi yang mengikuti tren berdasarkan operasi salib emas dan salib kematian dari garis rata-rata bergerak eksponensial (EMA) 5 menit dan 34 menit. Ini panjang ketika EMA cepat melintasi EMA lambat dari bawah, dan pendek ketika EMA cepat melintasi EMA lambat dari atas.

Prinsip Strategi

  1. EMA5 cepat dan EMA34 lambat membentuk sinyal perdagangan. EMA5 mencerminkan perubahan harga baru-baru ini dan EMA34 mencerminkan perubahan harga jangka menengah.
  2. Ketika EMA5 melintasi EMA34, itu adalah salib emas, yang menunjukkan tren jangka pendek lebih baik daripada tren jangka menengah, jadi pegang posisi panjang.
  3. Ketika EMA5 melintasi di bawah EMA34, itu adalah salib kematian, yang menunjukkan tren jangka pendek lebih buruk daripada tren jangka menengah, jadi pegang posisi pendek.
  4. Atur stop profit dan stop loss untuk mengunci keuntungan dan mengendalikan risiko.

Analisis Keuntungan

  1. Menggunakan EMA ganda menyaring kebocoran palsu dan menghindari terperangkap.
  2. Mengikuti tren jangka menengah meningkatkan peluang keuntungan.
  3. Menetapkan stop profit dan stop loss secara efektif mengendalikan risiko.

Analisis Risiko

  1. Dual EMA memiliki efek keterlambatan dan mungkin kehilangan peluang perdagangan jangka pendek.
  2. Stop loss diatur terlalu luas memperbesar risiko kerugian.
  3. Hentikan keuntungan yang terlalu ketat kehilangan kesempatan untuk memaksimalkan keuntungan.

Arahan Optimasi

  1. Mengoptimalkan parameter EMA untuk menemukan kombinasi parameter terbaik.
  2. Optimalkan titik stop profit dan stop loss untuk mengunci keuntungan yang lebih besar.
  3. Tambahkan indikator lain seperti MACD, KDJ untuk menyaring sinyal dan meningkatkan akurasi.

Ringkasan

Strategi ini menghasilkan sinyal perdagangan dari golden crosses dan death crosses dari garis EMA ganda, dan menetapkan stop profit dan stop loss untuk mengendalikan risiko.


/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]MicuRobert EMA cross V2', 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?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=22.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:',  defval=5)
ma_length01 = input(title='DEMA length:',  defval=34)
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 ? low <= buy_entry_price - sl: 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 ? high >= sel_entry_price + sl : 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)

Lebih banyak