Strategi Breakout Golden Cross EMA Ganda


Tanggal Pembuatan: 2023-12-20 16:34:58 Akhirnya memodifikasi: 2023-12-20 16:34:58
menyalin: 1 Jumlah klik: 719
1
fokus pada
1621
Pengikut

Strategi Breakout Golden Cross EMA Ganda

Ringkasan

Strategi ini adalah strategi pelacakan tren untuk melakukan crossover emas dan crossover mati berdasarkan rata-rata bergerak indeks 5 menit dan 34 menit (EMA). Buka posisi panjang ketika garis cepat melewati garis lambat dari bawah; buka posisi kosong ketika garis cepat melewati garis lambat dari atas ke bawah; dan atur stop loss untuk mengendalikan risiko.

Prinsip Strategi

  1. Garis cepat EMA5 dan garis lambat EMA34 membentuk sinyal perdagangan. EMA5 bereaksi terhadap perubahan terbaru dalam harga, EMA34 bereaksi terhadap perubahan menengah dalam harga.
  2. Ketika garis cepat melintasi garis lambat, berselisih untuk emas, menunjukkan bahwa perdagangan jangka pendek lebih baik daripada perdagangan jangka menengah, memiliki lebih banyak opsi.
  3. Ketika garis cepat di bawah garis lambat, untuk kematian, menyilang, menunjukkan bahwa jangka pendek lebih buruk dari jangka menengah, memegang tiket pesawat.
  4. Set Stop Loss untuk mengunci keuntungan dan mengendalikan risiko.

Analisis Keunggulan

  1. Dengan menggunakan filter EMA ganda untuk menghindari penembusan palsu.
  2. Menelusuri tren jangka menengah dan meningkatkan peluang keuntungan.
  3. Pengaturan Stop Loss untuk mengontrol risiko secara efektif.

Analisis risiko

  1. EMA ganda memiliki keterlambatan dan kemungkinan kehilangan peluang perdagangan jangka pendek.
  2. Stop loss set terlalu besar, risiko kerugian meningkat.
  3. Stop loss terlalu kecil untuk memaksimalkan peluang keuntungan.

Arah optimasi

  1. Optimalkan parameter EMA untuk mencari kombinasi optimal.
  2. Mengoptimalkan Stop Loss Point, mengunci lebih banyak mata uang.
  3. Menambahkan filter indikator lain, seperti MACD, KDJ dan lain-lain, untuk meningkatkan akurasi sinyal.

Meringkaskan

Strategi ini menghasilkan sinyal perdagangan dengan crossing emas dan crossing mati dari dua EMA bergerak dan mengatur stop loss untuk mengendalikan risiko. Strategi ini adalah strategi pelacakan tren jangka menengah yang sederhana dan efektif.

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