Strategi Crossover Purata Bergerak Eksponen

Penulis:ChaoZhang, Tarikh: 2023-10-17 16:55:10
Tag:

img

Ringkasan

Ini adalah strategi perdagangan automatik yang berjalan panjang atau pendek berdasarkan persilangan dua purata bergerak eksponensial (EMA) dengan tempoh masa yang berbeza.

Prinsip

Strategi ini menggunakan dua EMA, satu adalah EMA pada bingkai masa yang lebih besar, dan yang lain adalah EMA pada bingkai masa semasa. Apabila EMA semasa melintasi di atas EMA yang lebih besar, ia menjadi panjang. Apabila EMA semasa melintasi di bawah EMA yang lebih besar, ia menjadi pendek.

Khususnya, strategi pertama menentukan dua parameter EMA:

  1. tf - Kerangka masa yang lebih besar, lalai setiap hari.
  2. len - Tempoh tempoh EMA, lalai 3.

Kemudian ia mengira dua EMA:

  1. ma1 - EMA 3 hari pada jangka masa harian.
  2. ma2 - EMA 3 hari pada jangka masa semasa.

Akhirnya, ia memasuki perdagangan berdasarkan:

  • Apabila ma2 > ma1, ia akan panjang.
  • Apabila ma2 < ma1, ia menjadi pendek.

Dengan menilai arah trend melalui persimpangan antara dua EMA dari tempoh yang berbeza, ia mengotomatiskan perdagangan.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Prinsip mudah, mudah difahami dan dilaksanakan, sangat sesuai untuk pemula.
  2. Mengikuti trend, mematuhi trend, boleh membuat keuntungan yang baik.
  3. Menggunakan EMA, yang lebih sensitif terhadap perubahan harga, boleh menangkap pembalikan trend tepat pada masanya.
  4. Gabungan EMA dari tempoh yang berbeza boleh memanfaatkan kekuatan masing-masing dan meningkatkan kestabilan sistem.
  5. Tidak perlu terlalu banyak parameter, mudah untuk menguji dan mengoptimumkan, mudah untuk perdagangan langsung.

Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Trend lemah mengikut keupayaan, boleh dipukul di pasaran yang berbeza.
  2. Kelewatan dalam crossover EMA berganda, mungkin terlepas beberapa peluang.
  3. Tidak dapat menapis penyambungan yang tidak teratur antara dua EMA.
  4. Hanya bergantung pada EMA yang mudah, sukar untuk disesuaikan dengan pasaran yang kompleks.

Risiko boleh dikurangkan dengan menetapkan stop loss, mengoptimumkan parameter, menambah penunjuk lain dan sebagainya.

Pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji parameter EMA tempoh besar yang berbeza untuk mencari kombinasi yang optimum.
  2. Tambah penapis kelantangan untuk mengelakkan isyarat palsu.
  3. Memasukkan penunjuk trend untuk meningkatkan saiz kedudukan dan kecekapan.
  4. Tetapkan stop loss adaptif untuk mengawal kerugian perdagangan tunggal.
  5. Mengoptimumkan saiz kedudukan mengikut keadaan pasaran.
  6. Tambah model pembelajaran mesin untuk menjadikan strategi lebih pintar.

Kesimpulan

Strategi silang EMA menangkap trend dengan penunjuk mudah, sesuai untuk pemula untuk belajar dan berlatih.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Noro's Singapore Strategy", shorttitle = "Singapore str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
tf = input("D", title = "Big Timeframe")
len = input(3, minval = 1, title = "MA length")
src = input(close, title = "MA Source")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
ma1 = request.security(syminfo.tickerid, tf, sma(src, len))
ma2 = sma(src, len)
plot(ma1, linewidth = 2, color = blue, title = "Big TF MA")
plot(ma2, linewidth = 2, color = red, title = "MA")

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if ma2 > ma1
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if ma2 < ma1
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Lebih lanjut