Strategi Pelacakan Tren Moving Average

Penulis:ChaoZhang, Tanggal: 2024-01-03 17:01:38
Tag:

img

Gambaran umum

Strategi ini menilai tren harga dengan menghitung persilangan rata-rata bergerak ganda, dan mengeluarkan sinyal beli dan jual dengan pembatasan parameter tertentu.

Prinsip Strategi

Inti dari strategi ini terletak pada perhitungan rata-rata bergerak cepat dan lambat. Rata-rata bergerak cepat memiliki periode setengah dari total periode rata-rata bergerak, yang lebih sensitif terhadap perubahan harga; rata-rata bergerak lambat memiliki periode total periode rata-rata bergerak, yang mencerminkan perubahan harga lebih lancar.

Selain itu, strategi menetapkan parameter tertentu untuk menghindari perdagangan yang salah. Misalnya, ambang keputusan adalah untuk memastikan bahwa sinyal dikeluarkan hanya ketika perbedaan antara dua rata-rata bergerak melebihi tingkat tertentu; parameter kepercayaan digunakan untuk menyaring fluktuasi harga kecil.

Akhirnya, stop profit dan stop loss digunakan untuk mengendalikan risiko. Jika open profit kurang dari stop loss point atau lebih besar dari stop profit point, posisi akan ditutup. Hal ini secara efektif membatasi kerugian dari satu perdagangan.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah menggabungkan penilaian tren harga dan karakteristik volatilitas melalui indikator rata-rata bergerak. Menyambung rata-rata bergerak ganda adalah pendekatan teknis yang efektif klasik untuk menentukan tren harga. Dengan optimasi parameter, ini dapat dengan akurat menangkap tren. Parameter kepercayaan dapat secara efektif menyaring pasar yang bergolak dan menghindari perdagangan yang sering salah.

Selain itu, parameter seperti ambang keputusan, stop profit dan stop loss juga dapat sangat mengurangi risiko perdagangan dengan menghindari mengejar tinggi dan menjual rendah.

Analisis Risiko

Risiko utama dari strategi ini adalah kemungkinan sinyal yang salah dari rata-rata bergerak ganda. baik MAs cepat dan lambat adalah rata-rata bergerak tertimbang yang bereaksi lambat terhadap peristiwa mendadak, sehingga kehilangan pembalikan harga jangka pendek. pada saat ini, parameter kepercayaan dapat memberikan konfirmasi ganda.

Selain itu, pengaturan stop profit dan stop loss point yang tidak tepat juga akan meningkatkan risiko. Target profit yang terlalu tinggi dan stop loss point yang terlalu rendah dapat menyebabkan kerugian melebihi harapan. Parameter yang wajar perlu ditetapkan sesuai dengan karakteristik produk perdagangan yang berbeda dan volatilitas.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan periode rata-rata bergerak, menetapkan rata-rata bergerak adaptif untuk memodelkan fluktuasi harga siklus yang berbeda dengan lebih baik;

  2. Menetapkan mekanisme pelacakan dinamis untuk stop profit dan stop loss, menghitung volatilitas secara real time berdasarkan kondisi pasar sehingga titik stop dapat berubah secara dinamis;

  3. Meningkatkan model pembelajaran mesin untuk menilai arah tren harga, memanfaatkan data historis untuk menentukan pergerakan harga saat ini, dan mengurangi sinyal yang salah.

Kesimpulan

Secara umum, ini adalah strategi perdagangan tren klasik yang sederhana dan efektif. Ini menggunakan silang rata-rata bergerak ganda untuk menentukan tren, menetapkan parameter untuk mengendalikan risiko, dan memiliki konfigurasi yang tinggi untuk perdagangan multi-produk.


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Trade Signal", shorttitle="Trade Alert", overlay=true )
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001)
SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
    strategy.entry("Short",strategy.short)

//alerts
alertcondition(closelong, title='Close Buy Position', message='Close Buy Position')
alertcondition(closeshort, title='Close Short Position', message='Close Short Position')
alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert')
alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert')

//a1=plot(n1,color=c)
//a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
//plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green,  title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red,  title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart

Lebih banyak