Strategi perdagangan adaptif berdasarkan beberapa persilangan EMA


Tanggal Pembuatan: 2023-09-26 14:41:00 Akhirnya memodifikasi: 2023-09-26 14:41:00
menyalin: 0 Jumlah klik: 655
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini memungkinkan perdagangan over-the-counter yang disesuaikan dengan diri sendiri melalui beberapa kombinasi indikator EMA. Dengan menggunakan indikator EMA dengan parameter yang berbeda untuk menilai masuk dan keluar berdasarkan tren garis panjang dan pendek pasar. Strategi ini secara otomatis mengidentifikasi kondisi over-the-counter dan menggunakan mekanisme pengendalian kerugian independen untuk mengontrol risiko.

Prinsip Strategi

Strategi ini terutama menggunakan prinsip silang indikator EMA untuk operasi. Ketika garis cepat melewati garis lambat, lihat lebih banyak, dan melihat lebih rendah. Ia juga mengatur beberapa kelompok EMA, memilih parameter yang berbeda untuk berdagang sesuai dengan tren garis pendek dan panjang pasar. Secara khusus, ketika menentukan garis panjang sebagai melihat lebih banyak, pertimbangkan beberapa sinyal dengan satu set indikator EMA periode yang lebih panjang; ketika garis panjang tidak terlihat, pertimbangkan waktu kosong dengan satu set EMA periode yang lebih pendek.

Analisis Keunggulan

  • EMA multi-kelompok lebih fleksibel dalam menilai pasar yang berbeda.
  • Ini adalah salah satu cara yang paling efektif untuk memisahkan pasar kosong dari pasar kosong.
  • Strategi pembukaan dengan parameter independen, keakuratan di luar lapangan.
  • Stop loss bergerak dengan rasio tetap, pengendalian risiko yang efektif.
  • Strategi ini intuitif dan mudah dipahami dan diterapkan.

Risiko dan optimasi

  • EMA mudah menghasilkan sinyal palsu, parameter yang ditetapkan adalah kunci.
  • Stop loss tetap sulit untuk melacak fluktuasi besar.
  • Filter seperti indikator energi kuantitatif harus ditambahkan untuk meningkatkan stabilitas strategi.
  • Parameter yang dapat dioptimalkan secara otomatis menggunakan algoritma pembelajaran mesin.
  • Pertimbangkan untuk mengubah stop loss menjadi pengaturan dinamis, seperti stop loss ATR.

Meringkaskan

Strategi ini menggunakan beberapa set EMA crossover untuk mencapai efek adaptasi, baik untuk mempertahankan keunggulan EMA asli dan membuat strategi lebih elastis. Setelah menambahkan kondisi penyaringan yang tepat dan stop loss dinamis, dapat menjadi sistem perdagangan otomatis yang sangat praktis.

Kode Sumber Strategi
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-07 00:00:00
period: 12h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © str1nger
//@version=4

// strategy(title="BTC - 4hr - Long/Short", shorttitle="BTC - 4hr - Long/Short", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=75,commission_type=strategy.commission.percent, commission_value=0.075)//////<---Uses a percentage of starting equity

//DATE RANGE//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=2000, maxval=2100)
endDate = input(title="End Date", type=input.integer,
     defval=1, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=2000, maxval=2100)

inDateRange =  true


//EMAs//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//LONG
//11,33,3,40
lof= input(11, title="Long Open - Fast", step=1)
los= input(33, title="Long Open - Slow", step=1)
lcf= input(3, title="Long Close - Fast", step=1)
lcs= input(40, title="Long Close - Slow", step=1)
ema_long_open_fast = ema(close, lof)
ema_long_open_slow = ema(close, los)
ema_long_close_fast= ema(close, lcf)
ema_long_close_slow = ema(close, lcs)
//SHORT
//5,11,4,7
sof= input(5, title="Short Open - Fast", step=1)
sos= input(11, title="Short Open - Slow", step=1)
scf= input(4, title="Short Close - Fast", step=1)
scs= input(7, title="Short Close - Slow", step=1)
ema_short_open_fast = ema(close, sof)
ema_short_open_slow = ema(close, sos)
ema_short_close_fast = ema(close, scf)
ema_short_close_slow = ema(close, scs)


//CONDITIONS///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//LONG
openlong = crossover(ema_long_open_fast, ema_long_open_slow)
closelong = crossover(ema_long_close_slow, ema_long_close_fast)
//1.7%
long_loss_percent = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1.7) * 0.01
long_stop_price = strategy.position_avg_price * (1 - long_loss_percent)
//SHORT
openshort = crossover(ema_short_open_slow, ema_short_open_fast)
closeshort = crossover(ema_short_close_fast, ema_short_close_slow)
//0.4%
short_loss_percent = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0.4) * 0.01
short_stop_price = strategy.position_avg_price * (1 + short_loss_percent)


//PLOT EMAs////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//LONG
plot(ema_long_open_fast, "Long EMA open lower", linewidth=1, color=color.green)
plot(ema_long_open_slow, "Long EMA close upper", linewidth=1, color=color.green)
plot(ema_long_close_fast, "Long close lower", linewidth=1, color=color.red)
plot(ema_long_close_slow, "Long close upper", linewidth=1, color=color.red)
//SHORT
plot(ema_short_open_fast, "Short open fast", linewidth=1, color=color.green)
plot(ema_short_open_slow, "Short open slow", linewidth=1, color=color.green)
plot(ema_short_close_fast, "Short close fast", linewidth=1, color=color.red)
plot(ema_short_close_slow, "Short close slow", linewidth=1, color=color.red)


//LONG-TERM TRENDS
//LONG 144
long_term_trend_longs= input(144, title="Long-term trend - Longs", step=1)
lttl= ema(close, long_term_trend_longs)
plot(lttl, "Long-term trend - Longs", linewidth=2, color=color.blue)
//SHORT 89
long_term_trend_shorts= input(89, title="Long-term trend - Shorts", step=1)
ltts = ema(close, long_term_trend_shorts)
plot(ltts, "Long-term trend - Shorts", linewidth=2, color=color.blue)


//STRATEGY//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//LONG
if (inDateRange and openlong and (close > lttl))
    strategy.entry("OL", long=true, comment="##insert open long comment here##")
if (inDateRange and closelong)
    strategy.close("OL", comment="##insert close long comment here##")
if strategy.position_size > 0
    strategy.exit("L-SL", stop=long_stop_price, comment="##insert long stop-loss comment here##")
//SHORT  
if (inDateRange and openshort and (close < ltts))
    strategy.entry("OS", long=false, comment="##insert open short comment here##")
if (inDateRange and closeshort)
    strategy.close("OS", comment="##insert close short comment here##")
if strategy.position_size < 0
    strategy.exit("S-SL", stop=short_stop_price, comment="##inster short stop-loss comment here##")