Strategi Pembalikan Purata Pergerakan Berganda


Tarikh penciptaan: 2023-11-22 10:07:19 Akhirnya diubah suai: 2023-11-22 10:07:19
Salin: 1 Bilangan klik: 605
1
fokus pada
1617
Pengikut

Strategi Pembalikan Purata Pergerakan Berganda

Gambaran keseluruhan

Gagasan utama strategi ini adalah untuk menggunakan persilangan garis purata bergerak cepat dan garis purata bergerak perlahan untuk menilai trend pasaran dan memasuki ketika garis pendek dan garis purata bergerak panjang berbalik, untuk mencapai kesan trend.

Prinsip Strategi

  1. Tetapkan jangka masa rata-rata bergerak cepat (shortma) (default 7 hari) dan jangka masa rata-rata bergerak perlahan (longma) (default 77 hari)
  2. Apabila garisan pendek melalui garisan panjang di atas rata-rata, ia dianggap sebagai isyarat beli, dan dirakamkan barssince ((mabuy), dan garisan panjang bermaksud memasuki trend; apabila garisan pendek melalui garisan panjang di bawah rata-rata, ia dianggap sebagai isyarat jual, dan dirakamkan barssince ((masell), dan garisan panjang bermaksud berakhirnya trend
  3. Ukuran barssince berbanding, semakin banyak bar yang melintasi garis rata-rata pendek dari atas ke bawah menunjukkan tempoh trend yang lebih lama; sebaliknya, semakin banyak bar yang melintasi garis rata-rata pendek dari bawah ke atas menunjukkan lebih kuatnya isyarat pembalikan
  4. Sinyal beli dikeluarkan apabila jumlah bar bagi isyarat jual lebih besar daripada jumlah bar bagi isyarat beli; isyarat jual dikeluarkan apabila jumlah bar bagi isyarat beli lebih besar daripada bar bagi isyarat jual
  5. Strategi seperti itu pada dasarnya adalah strategi pembalikan dua garis rata-rata, yang menilai titik peralihan trend melalui pembalikan garis rata-rata cepat dan perlahan

Kelebihan Strategik

  1. Menggunakan penghakiman dua hala yang sama untuk menyaring sebahagian daripada isyarat perdagangan bising
  2. Menambah barssince untuk mengelakkan salah isyarat yang disebabkan oleh pembalikan harga palsu dan tutup
  3. Mudah difahami dan dilaksanakan
  4. Parameter purata bergerak yang boleh disesuaikan untuk tempoh dan pasaran yang berbeza

Risiko Strategik

  1. Strategi dua garis rata mudah menghasilkan lebih banyak isyarat, perdagangan lebih kerap
  2. Setting parameter moving averages yang tidak betul boleh terlepas peluang trend yang lebih panjang
  3. Apabila melangkaui garis purata jangka panjang, titik berhenti mungkin jauh dan terdapat penarikan balik yang lebih besar
  4. Tidak dapat menyaring pasaran yang berputar dan bergolak

Arah pengoptimuman strategi

  1. Menambah penapis untuk indikator lain untuk mengelakkan tersangkut dalam peristiwa gegaran
  2. Meningkatkan mekanisme kawalan kerugian
  3. Mengoptimumkan kombinasi parameter rata-rata bergerak
  4. Parameter purata bergerak yang disesuaikan dengan dinamik kitaran pasaran

ringkaskan

Strategi ini secara keseluruhan logiknya jelas dan mudah difahami, dengan garis rata-rata cepat dan garis rata-rata perlahan untuk menilai titik perubahan trend pasaran, secara teori dapat mengesan trend secara berkesan. Tetapi dalam penggunaan praktikal, algoritma strategi itu sendiri dan parameter tetap perlu dioptimumkan untuk menjadikannya lebih stabil dan praktikal.

Kod sumber strategi
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Up Down", "Up Down", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.0, initial_capital = 1000, overlay = true)

buy = close > open and open > close[1]
sell = close < open and open < close[1]

longma = input(77,"Long MA Input")
shortma = input(7,"Short MA Input")
long = sma(close,longma)
short = sma(close, shortma)
mabuy = crossover(short,long) or buy and short > long
masell = crossunder(short,long) or sell and short > long

num_bars_buy = barssince(mabuy)
num_bars_sell = barssince(masell)
//plot(num_bars_buy, color = teal)
//plot(num_bars_sell, color = orange)

xbuy = crossover(num_bars_sell, num_bars_buy)
xsell = crossunder(num_bars_sell, num_bars_buy)
plotshape(xbuy,"Buy Up Arrow", shape.triangleup, location.belowbar, white, size = size.tiny)
plotshape(xsell,"Sell Down Arrow", shape.triangledown, location.abovebar, white, size = size.tiny)
plot(long,"Long MA", fuchsia, 2)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

if testPeriod()
    strategy.entry("buy", true, when = xbuy, limit = close)
    strategy.close("buy", when = xsell)