Strategi Purata Pergerakan Dwi


Tarikh penciptaan: 2023-10-07 15:18:44 Akhirnya diubah suai: 2023-10-07 15:18:44
Salin: 0 Bilangan klik: 641
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Ini adalah strategi perdagangan berdasarkan dua rata-rata bergerak. Ia akan menilai trend pasaran dan menghasilkan isyarat perdagangan berdasarkan hubungan silang antara rata-rata bergerak cepat dan rata-rata bergerak perlahan. Ia menghasilkan isyarat beli apabila ia melintasi rata-rata bergerak perlahan di atas rata-rata bergerak cepat; ia menghasilkan isyarat jual apabila ia melintasi rata-rata bergerak perlahan di bawah rata-rata bergerak cepat.

Prinsip

Strategi ini menggunakan ciri trend pengesanan rata-rata bergerak. Rata-rata bergerak adalah harga purata yang dikira berdasarkan harga penutupan sejarah dalam satu tempoh tertentu, yang dapat memanaskan turun naik kecil dalam satu hari, mencerminkan trend harga dalam tempoh masa yang lebih lama. Rata-rata cepat menggunakan tempoh yang lebih pendek, dapat bertindak balas dengan lebih cepat terhadap perubahan harga; Rata-rata perlahan menggunakan tempoh yang lebih lama, mewakili trend jangka panjang.

Strategi ini membentuk isyarat perdagangan dengan menetapkan garis rata-rata bergerak dengan panjang kitaran yang berbeza, menggunakan persilangan antara garis rata-rata. Apabila garis rata-rata kitaran pendek melintasi garis rata-rata kitaran panjang, ia menunjukkan pergerakan jangka pendek yang baik, menghasilkan isyarat membeli; Apabila garis rata-rata kitaran pendek melintasi garis rata-rata kitaran panjang, ia menunjukkan pergerakan jangka pendek yang lemah, menghasilkan isyarat menjual.

Kelebihan

  • Menggunakan dua garis sejajar untuk menilai perubahan trend perdagangan sebagai penunjuk teknikal yang mudah dan berkesan
  • Garis rata boleh menapis bunyi bising pasaran dengan berkesan dan mengelakkan penyekatan
  • Menyesuaikan parameter kitaran purata perlahan-lahan boleh disesuaikan dengan keadaan yang berbeza
  • Tanda-tanda trend dan titik perubahan
  • Mudah difahami, parameter boleh disesuaikan

Risiko

  • Strategi penyambungan dua garis sejajar terlewat dan mungkin terlepas titik perubahan harga
  • Tidak sesuai untuk keadaan gegaran, akan menghasilkan lebih banyak isyarat salah
  • Parameter kitaran purata yang tidak betul boleh menyebabkan terlalu sensitif atau lambat
  • Perlu dikombinasikan dengan petunjuk lain untuk menentukan trend latar belakang dan masa tindakan

Arah pengoptimuman

  • Menilai kesan pendapatan dari parameter kitaran purata yang berbeza, memilih parameter yang paling baik
  • Menambah penapis isyarat penunjuk lain, seperti penunjuk saluran, bentuk K-line, dan sebagainya
  • Optimumkan strategi hentian dan hentian kerugian yang digabungkan dengan indikator kadar turun naik
  • Parameter dan peraturan perdagangan yang dioptimumkan secara automatik berdasarkan algoritma pembelajaran mesin
  • Menambah modul perdagangan algoritma untuk membuat pesanan automatik

ringkaskan

Strategi persilangan binari menggunakan ciri trend pengesanan garis rata-rata bergerak untuk menentukan arah pasaran dan menghasilkan isyarat perdagangan melalui persilangan garis rata-rata yang cepat dan perlahan. Strategi ini mudah dan mudah, tetapi ada beberapa masalah. Dengan cara menyesuaikan parameter, bekerjasama dengan petunjuk lain, dan pengoptimuman algoritma, kekurangan dapat diatasi, menjadikannya sistem perdagangan yang stabil dan boleh dipercayai.

Kod 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)