Strategi Penembusan Palang Emas EMA Berganda


Tarikh penciptaan: 2023-12-20 16:34:58 Akhirnya diubah suai: 2023-12-20 16:34:58
Salin: 1 Bilangan klik: 719
1
fokus pada
1621
Pengikut

Strategi Penembusan Palang Emas EMA Berganda

Gambaran keseluruhan

Strategi ini adalah strategi pengesanan trend untuk melakukan operasi silang emas dan silang mati berdasarkan purata bergerak indeks 5 minit dan 34 minit (EMA). Apabila garis cepat melintasi garis perlahan dari bawah, buka posisi panjang; Apabila garis cepat melintasi garis pendek dari atas ke bawah, buka posisi kosong.

Prinsip Strategi

  1. Garis EMA5 dan EMA34 membentuk isyarat perdagangan. EMA5 bertindak balas terhadap perubahan harga baru-baru ini, EMA34 bertindak balas terhadap perubahan harga pertengahan.
  2. Apabila garis cepat melintasi garis perlahan, ia melintasi untuk emas, menunjukkan bahawa pergerakan jangka pendek lebih baik daripada pergerakan jangka menengah, memegang lebih banyak pilihan.
  3. Apabila garis cepat di bawah garis perlahan, untuk kematian, menunjukkan bahawa keadaan jangka pendek lebih buruk daripada keadaan jangka menengah, memegang tiket terbang.
  4. Tetapkan Stop Loss untuk mengunci keuntungan dan mengawal risiko.

Analisis kelebihan

  1. Penggunaan saringan EMA berganda untuk mengelakkan penembusan palsu.
  2. Mengesan trend jangka menengah dan meningkatkan peluang keuntungan.
  3. Tetapkan Stop Loss untuk mengawal risiko.

Analisis risiko

  1. Dua EMA mempunyai keterlambatan dan mungkin terlepas peluang perdagangan jangka pendek.
  2. Stop loss set terlalu besar, risiko kerugian meningkat.
  3. Penetapan titik tolak terlalu kecil dan gagal memaksimumkan peluang keuntungan.

Arah pengoptimuman

  1. Mengoptimumkan parameter EMA untuk mencari kombinasi parameter terbaik.
  2. Mengoptimumkan titik hentian hentian, mengunci lebih banyak mata wang.
  3. Tambah penapis untuk penunjuk lain, seperti MACD, KDJ dan lain-lain, untuk meningkatkan ketepatan isyarat.

ringkaskan

Strategi ini menghasilkan isyarat dagangan melalui persilangan emas dan persilangan mati dua EMA bergerak dan menetapkan stop loss untuk mengawal risiko. Strategi ini adalah strategi pengesanan trend sederhana dan berkesan dalam jangka masa pertengahan. Mengoptimumkan parameter stop loss, memperkenalkan isyarat penapis indikator lain, dapat meningkatkan keuntungan strategi yang stabil.

Kod 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)