Strategi Rata-rata Pergerakan Ganda


Tanggal Pembuatan: 2023-10-07 15:18:44 Akhirnya memodifikasi: 2023-10-07 15:18:44
menyalin: 0 Jumlah klik: 641
1
fokus pada
1617
Pengikut

Ringkasan

Ini adalah strategi perdagangan yang didasarkan pada dua rata-rata bergerak. Ini menilai tren pasar dan menghasilkan sinyal perdagangan berdasarkan hubungan silang antara rata-rata bergerak cepat dan rata-rata bergerak lambat.

Prinsip

Strategi ini terutama menggunakan fitur pelacakan tren dari garis rata-rata bergerak. Garis rata-rata bergerak adalah harga rata-rata yang dihitung berdasarkan harga penutupan sejarah dalam periode tertentu, yang dapat memanaskan fluktuasi kecil dalam sehari, mencerminkan tren harga dalam periode waktu yang lebih besar. Garis rata-rata cepat menggunakan siklus yang lebih pendek, yang dapat merespons perubahan harga lebih cepat; Garis rata-rata lambat menggunakan siklus yang lebih panjang, yang mewakili tren jangka panjang.

Strategi ini menggunakan garis rata-rata bergerak dengan panjang periode yang berbeda untuk membentuk sinyal perdagangan dengan memanfaatkan persilangan antara garis rata-rata. Ketika rata-rata periode pendek melintasi garis rata-rata periode panjang, ini menunjukkan tren jangka pendek yang baik, menghasilkan sinyal beli. Ketika rata-rata periode pendek melintasi garis rata-rata periode panjang, ini menunjukkan tren jangka pendek yang lemah, menghasilkan sinyal jual.

Keunggulan

  • Menggunakan crossover dua garis rata untuk menilai perubahan tren pasar, merupakan indikator teknis yang sederhana dan efektif
  • Garis rata dapat menyaring kebisingan pasar secara efektif, menghindari kebocoran
  • Penyesuaian parameter periode rata-rata lambat dapat disesuaikan dengan situasi yang berbeda
  • Menampilkan sinyal tren dan titik perubahan secara visual
  • Mudah dimengerti, parameter dapat disesuaikan secara fleksibel

Risiko

  • Strategi crossover dua rata-rata mengalami keterlambatan dan mungkin melewatkan titik balik harga.
  • Tidak cocok untuk situasi gempa, akan menghasilkan lebih banyak sinyal palsu
  • Parameter siklus rata-rata yang salah dapat menyebabkan terlalu sensitif atau lambat
  • Perlu bekerja sama dengan indikator lain untuk menentukan tren latar belakang dan waktu operasi

Arah optimasi

  • Evaluasi efek keuntungan dari berbagai parameter siklus rata-rata, memilih parameter yang optimal
  • Menambahkan indikator lain untuk memfilter sinyal, seperti indikator saluran, bentuk K-line, dan lain-lain
  • Strategi Stop Loss Optimisasi dengan Indikator Volatilitas
  • Parameter dan aturan perdagangan yang dioptimalkan secara otomatis berdasarkan algoritma pembelajaran mesin
  • Menambahkan modul perdagangan algoritmik untuk otomatisasi pesanan

Meringkaskan

Strategi crossover linear ganda memanfaatkan fitur pelacakan tren dari moving averages untuk menilai arah pasar dan menghasilkan sinyal perdagangan melalui persilangan linear yang cepat dan lambat. Strategi ini sederhana dan mudah, tetapi ada beberapa masalah. Dengan cara menyesuaikan parameter, bekerja dengan indikator lain, dan mengoptimalkan algoritma, Anda dapat mengatasi kekurangannya, menjadikannya sistem perdagangan yang stabil dan andal. Secara keseluruhan, strategi crossover linear ganda adalah strategi pelacakan tren yang sangat klasik dan mudah dioperasikan.

Kode Sumber Strategi
/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © KivancOzbilgic


//@version=4
strategy("pomila", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short, when = window())
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)