Berdasarkan strategi perdagangan persilangan rata-rata pergerakan ganda


Tanggal Pembuatan: 2023-12-27 16:07:49 Akhirnya memodifikasi: 2023-12-27 16:07:49
menyalin: 2 Jumlah klik: 681
1
fokus pada
1623
Pengikut

Berdasarkan strategi perdagangan persilangan rata-rata pergerakan ganda

Ringkasan

Strategi ini didasarkan pada persimpangan emas dan persimpangan mati dari rata-rata bergerak untuk menghasilkan sinyal beli dan jual. Secara khusus, strategi ini menggunakan rata-rata bergerak indeks 5 hari (EMA) dan rata-rata bergerak indeks 34 hari (DEMA) secara bersamaan.

Prinsip Strategi

  1. Hitung 5 hari EMA dan 34 hari DEMA
  2. Ketika EMA jangka pendek 5 hari melintasi DEMA jangka panjang 34 hari dari bawah, sinyal beli dihasilkan
  3. Ketika EMA jangka pendek 5 hari melintasi DEMA jangka panjang 34 hari dari atas ke bawah, menghasilkan sinyal jual
  4. Anda dapat memilih untuk berdagang hanya dalam jangka waktu tertentu.
  5. Anda dapat memilih untuk menggunakan Tracking Stop Loss

Strategi ini menggabungkan trend tracking dan persilangan rata-rata dua faktor, dengan efek yang stabil. Moving average sebagai indikator trend tracking, dapat mengidentifikasi tren pasar secara efektif. Penggunaan kombinasi EMA dan DEMA dapat secara efektif meratakan data harga untuk menghasilkan sinyal perdagangan.

Analisis Keunggulan

  1. Strategi yang sederhana, jelas, dan mudah dipahami
  2. Kombinasi penggunaan moving averages, yang mempertimbangkan penilaian tren dan pemrosesan data harga yang halus
  3. Persilangan garis rata-rata jangka pendek dan jangka panjang, memberikan sinyal perdagangan lebih awal pada titik-titik perubahan pasar besar
  4. Panjang garis rata-rata dapat dioptimalkan dengan parameter untuk menyesuaikan dengan varietas dan siklus yang berbeda
  5. Integrasi dua faktor dapat meningkatkan stabilitas strategi

Analisis risiko

  1. Dalam situasi gempa, sinyal yang salah mungkin lebih banyak.
  2. Panjang garis rata-rata yang tidak tepat dapat menyebabkan sinyal tertunda
  3. Waktu perdagangan dan pengaturan stop loss yang tidak tepat dapat mempengaruhi keuntungan strategi

Risiko ini dapat dikurangi dengan menyesuaikan panjang garis rata-rata, mengoptimalkan waktu perdagangan, dan mengatur stop loss yang masuk akal.

Arah optimasi

  1. Menyesuaikan parameter panjang garis rata-rata untuk varietas dan siklus perdagangan yang berbeda
  2. Optimalkan parameter waktu trading, trading pada periode waktu aktif utama
  3. Perbandingan antara Stop Loss Fixed dan Tracking Stop Loss
  4. Pengujian Efek Strategi dari Berbagai Metode Pengambilan Harga

Meringkaskan

Strategi ini menghasilkan sinyal perdagangan melalui dua garis sejajar silang, sekaligus menggabungkan pelacakan tren dan pemrosesan data yang halus, merupakan strategi pelacakan tren yang sederhana dan praktis. Dengan pengoptimalan parameter dan pengoptimalan aturan, dapat disesuaikan dengan varietas dan siklus perdagangan yang berbeda, memberikan sinyal perdagangan lebih awal saat perubahan tren besar, dan menghindari sinyal yang salah.

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"}]
args: [["v_input_1",false]]
*/

//@version=2
strategy(title='[STRATEGY][RS]MicuRobert EMA cross V2', shorttitle='S', overlay=true)
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)