Strategi Mengikuti Aliran Purata Pergerakan Berganda


Tarikh penciptaan: 2024-01-24 11:28:57 Akhirnya diubah suai: 2024-01-24 11:28:57
Salin: 1 Bilangan klik: 323
1
fokus pada
1214
Pengikut

Strategi Mengikuti Aliran Purata Pergerakan Berganda

Gambaran keseluruhan

Strategi pengesanan trend binari adalah strategi yang menggunakan gabungan purata bergerak cepat dan purata bergerak perlahan untuk menilai trend pasaran dan mengeluarkan isyarat perdagangan apabila terdapat perubahan arah trend. Strategi ini menggabungkan indikator garis rata dan indikator saluran harga untuk mengenal pasti trend, yang dapat menyaring bunyi pasaran dengan berkesan dan menentukan arah trend.

Prinsip Strategi

Strategi trend pengesanan dua rata-rata menggunakan dua penunjuk rata-rata bergerak iaitu rata-rata bergerak cepat ((5 kitaran) dan rata-rata bergerak perlahan ((21 kitaran). Rata-rata bergerak cepat digunakan untuk menghasilkan isyarat perdagangan, rata-rata bergerak perlahan digunakan untuk menentukan arah trend pasaran. Apabila rata-rata bergerak cepat melintasi rata-rata perlahan dari bawah ke atas, ia menghasilkan isyarat membeli; apabila rata-rata bergerak cepat melintasi rata-rata perlahan dari atas ke bawah, ia menghasilkan isyarat menjual.

Strategi ini juga menggunakan indikator saluran harga untuk membantu menentukan trend. Saluran harga ditentukan oleh purata bergerak harga tertinggi dan terendah. Apabila harga menembusi saluran, menunjukkan bahawa trend berbalik. Strategi ini menggunakan dua saluran harga, dengan kitaran saluran harga pertama 21, dan kitaran saluran harga kedua 5, yang sepadan dengan kitaran garis rata-rata.

Dalam menilai isyarat membeli dan menjual, strategi ini memerlukan tiang merah muncul secara berturut-turut ((pengguna boleh menetapkan bilangan tiang), sebagai syarat penapisan tambahan. Ini dapat mengelakkan isyarat salah di kawasan persidangan.

Secara umum, logik untuk menentukan trend dalam strategi trend track adalah:

  1. Menggunakan saluran harga untuk menilai arah trend peringkat besar
  2. Menggunakan garis rata-rata pantas untuk menilai trend jangka pendek dan menghantar isyarat perdagangan
  3. Gabungan dengan penapis tiang tambahan untuk mengelakkan isyarat yang salah semasa penyusunan

Menggunakan pelbagai peringkat penilaian trend, anda boleh menyaring kebisingan dan menentukan arah trend.

Analisis kelebihan

Strategi trend-following dua garis rata mempunyai kelebihan berikut:

  1. Menggunakan sistem dua hala yang sama untuk mengenal pasti trend dan menentukan arah trend utama
  2. Garis rata pantas menghantar isyarat perdagangan untuk menangkap perubahan trend tepat pada masanya
  3. Saluran harga menilai trend besar-besaran, dan mengelakkan diri daripada kebisingan pasaran jangka pendek
  4. Keadaan penapisan lajur merah/hijau, mengurangkan kemungkinan isyarat salah di kawasan yang disusun
  5. Parameter strategi boleh disesuaikan, anda boleh menyesuaikan parameter untuk pasaran yang berbeza, meningkatkan kestabilan strategi
  6. Anda boleh menambah strategi Hentikan Kerugian untuk mengawal risiko setiap dagangan dengan berkesan

Secara keseluruhannya, strategi ini mempunyai kestabilan yang lebih baik secara keseluruhan, dengan prestasi yang lebih baik dalam pasaran yang sedang tren.

Analisis risiko

Terdapat beberapa risiko dalam strategi trend-following linear.

  1. Sinyal yang salah boleh berlaku apabila pasaran diselesaikan dalam jangka masa yang panjang, yang boleh menyebabkan kerugian kecil berturut-turut
  2. Parameter strategi yang tidak ditetapkan pada masa yang tepat, isyarat perdagangan mungkin terlewat, kehilangan masa masuk yang terbaik
  3. Tidak ada strategi menghentikan kerugian yang berkesan, risiko perdagangan tunggal sukar dikawal

Oleh itu, risiko strategik dapat dikurangkan dengan:

  1. Menyesuaikan syarat penapis lajur merah/hijau untuk mengurangkan kekerapan dagangan dalam pasaran yang disusun
  2. Optimumkan parameter laju rata-rata untuk memastikan isyarat dagangan tepat pada masanya
  3. Tambah strategi hentian bergerak atau peratusan hentian, kawalan ketat terhadap kerugian tunggal

Arah pengoptimuman

Terdapat ruang untuk pengoptimuman lebih lanjut dalam strategi trend pengesanan dua garis lurus, yang meliputi:

  1. Menggabungkan indikator kadar turun naik, seperti ATR, untuk menyesuaikan stop loss secara automatik
  2. Mengoptimumkan parameter strategi secara automatik menggunakan kaedah pembelajaran mesin
  3. Modul untuk menambah rangkaian neuron untuk menilai arah trend
  4. Menggabungkan pelbagai petunjuk dan syarat penapisan untuk membina portfolio strategi

Arahan pengoptimuman ini dapat meningkatkan lagi tahap kestabilan, adaptasi dan kecerdasan strategi.

ringkaskan

Strategi trend pengesanan dua garis rata adalah strategi trend pengesanan yang lebih kukuh secara keseluruhan. Ia menggabungkan petunjuk garis rata dan saluran harga untuk menentukan arah dan kekuatan trend, dan menghantar isyarat perdagangan dengan garis rata yang cepat. Keadaan penapis tiang tambahan juga dapat mengelakkan isyarat yang salah.

Kod sumber strategi
/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")

src = useohlc4 == true ? ohlc4 : close
fastsma = ema(src, 5)

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
//ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
//trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1]

trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1]
trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1]
trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)