Strategi Perdagangan Rata-rata Pergerakan Tren


Tanggal Pembuatan: 2023-09-21 20:34:43 Akhirnya memodifikasi: 2023-09-21 20:34:43
menyalin: 0 Jumlah klik: 672
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini menggunakan kombinasi garis rata-rata cepat dan garis rata-rata lambat untuk menilai arah tren, untuk menangkap tren garis tengah dan panjang untuk melakukan perdagangan tren. Melakukan overtrading ketika melewati garis rata-rata cepat di atas garis rata-rata lambat, dan mengambil posisi kosong ketika melewati garis rata-rata lambat di bawah garis rata-rata cepat, adalah strategi pelacakan tren yang khas.

Prinsip Strategi

Strategi ini terutama mengandalkan garis rata untuk menilai tren pasar. Secara khusus, strategi ini menggunakan rata-rata cepat 5 siklus dan rata-rata lambat 21 siklus.

Ketika kecepatan rata-rata melewati kecepatan rata-rata di atas, berarti tren pasar bergeser lebih banyak, strategi ini akan melakukan lebih banyak pada saat membuka K berikutnya; ketika kecepatan rata-rata melewati kecepatan rata-rata di bawah, berarti tren pasar bergeser, strategi ini akan melakukan lebih banyak pada saat membuka K berikutnya.

Selain itu, strategi ini juga mengatur parameter filter bars untuk memfilter penembusan palsu. Parameter ini memiliki nilai default 2, yang berarti bahwa garis rata-rata cepat membutuhkan 2 garis K berturut-turut di atas garis rata-rata lambat untuk menghasilkan sinyal ganda, yang dapat memfilter penembusan palsu secara efektif.

Untuk mata uang kripto, strategi ini juga menambahkan logika penilaian nilai ekstrem. Sinyal perdagangan hanya akan dikirimkan ketika garis rata-rata cepat dan garis rata-rata lambat berada di zona ekstrem pada saat yang sama.

Strategi untuk keluar dari aturan ini sederhana dan langsung, keluar dari posisi saat ini ketika harga memicu stop loss.

Keunggulan Strategis

  • Menggunakan sistem dua baris untuk melacak tren secara efektif
  • Garis rata-rata cepat memiliki panjang yang lebih pendek untuk menangkap perubahan tren secara tepat waktu
  • Garis rata-rata kecepatan lambat lebih panjang, dapat menentukan arah utama
  • Parameter bar filter filter dapat memfilter beberapa penembusan palsu
  • Penghakiman nilai ekstrem dapat menghindari terobosan palsu yang jarang terjadi di dekat titik kunci
  • Menggunakan Stop Loss Mobile untuk Mengontrol Risiko

Risiko Strategis

  • Strategi linier dapat menyebabkan kerugian pada titik-titik perubahan tren.
  • Stop loss mobile dapat berhenti prematur
  • Jika Anda tidak memiliki cukup filter parameter, Anda mungkin akan kehilangan titik beli.
  • Penilaian nilai ekstrim dalam beberapa kasus akan melewatkan titik beli
  • Strategi ini lebih cocok untuk pasar tren yang kuat, tidak cocok untuk pasar yang bergolak

Risiko dapat dikurangi dengan melakukan hal berikut:

  • Mengoptimalkan parameter bar untuk menemukan titik keseimbangan
  • Cobalah untuk memfilter indikator lain, seperti MACD
  • Mengatur titik-titik stop loss untuk mencegah stop loss prematur
  • Mempertimbangkan untuk bergabung kembali

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimisasi parameter garis rata-rata

Anda dapat menguji lebih banyak kombinasi untuk menemukan parameter garis rata-rata yang lebih sesuai dengan pasar saat ini. Misalnya, menyesuaikan garis cepat dengan 10 siklus dan garis lambat dengan 50 siklus.

  1. Menambahkan penilaian indikator lainnya

Dapat diuji dengan menambahkan MACD, KDJ dan indikator lainnya, dan mengatur kondisi yang lebih ketat untuk menghindari penembusan palsu.

  1. Mekanisme penerimaan yang optimal

Akses saat ini terlalu sederhana dan bergantung pada rata-rata, yang dapat dioptimalkan sebagai berikut:

  • Pada garis cepat, MACDDIFF juga memakai 0 untuk masuk.
  • Saat melewati jalur cepat, KDJ bisa melihat apakah dia juga sudah siap untuk masuk.
  1. Optimalkan mekanisme penghentian kerugian

Metode lain untuk menghentikan kerugian dapat diuji, misalnya, dengan melacak harga untuk menghindari terjadinya kerugian yang terlalu dini.

  1. Bergabung dengan mekanisme reintegrasi

Setelah posisi terhenti, Anda dapat masuk kembali, sehingga mengurangi kemungkinan terhenti di luar dan kehilangan tren.

Meringkaskan

Strategi ini sebagai dasar strategi trend tracking, ide inti sederhana dan langsung, menggunakan arah penilaian tren dua garis lurus, dan stop loss bergerak untuk mengendalikan risiko. Keuntungan adalah mudah dipahami dan diterapkan, dapat mengikuti tren untuk mendapatkan keuntungan, risiko juga dapat dikendalikan. Namun, ada juga beberapa kelemahan, sinyal tidak akurat dalam perdagangan pasar, dan stop loss mudah terlalu cepat dipicu. Ini membutuhkan kita untuk terus menyesuaikan dan mengoptimalkan dalam perdagangan, menambahkan indikator teknis lainnya untuk memfilter, agar strategi lebih sesuai dengan lingkungan pasar yang berbeda.

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

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", 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, %")
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?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
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")

src = close

//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
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[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

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)

//Signals
up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1
dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1
up2 = high < center and high < center2 and bar == -1 and needex
dn2 = low > center and low > center2 and bar == 1 and needex
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Lines
plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

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

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

if up1 or up2 or up3
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Long", "Long", stop = stoplong)

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Short", "Short", stop = stopshort)
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()