Strategi Perdagangan Rata-rata Pergerakan Variabel VMA


Tanggal Pembuatan: 2024-02-21 11:47:43 Akhirnya memodifikasi: 2024-02-21 11:47:43
menyalin: 2 Jumlah klik: 828
1
fokus pada
1617
Pengikut

Strategi Perdagangan Rata-rata Pergerakan Variabel VMA

Ringkasan

Strategi Trading VMA adalah strategi perdagangan kuantitatif yang didasarkan pada Moving Average Variable. Strategi ini menggunakan Moving Average yang berubah untuk menangkap tren pasar dan menghasilkan sinyal perdagangan.

Prinsip Strategi

Inti dari strategi VMA Trading adalah menghitung Variable Moving Average (VMA). Moving average adalah indikator teknis yang terkenal yang menghitung harga rata-rata dalam periode tertentu. VMA yang digunakan dalam strategi VMA Trading memiliki panjang siklus yang berubah-ubah.

Secara khusus, strategi ini pertama-tama menghitung serangkaian intermediet, seperti indikator pergerakan arah harga (PDM, MDIM), dan data yang diproses secara halus (PDMs, MDMs). Data ini akhirnya digunakan untuk mendapatkan kekuatan indikator (iS), yang mencerminkan kekuatan pergerakan harga.

Strategi TradingVMA kemudian menyesuaikan durasi rata-rata bergerak secara dinamis sesuai dengan kekuatan indikator. Ketika pasar berfluktuasi, rata-rata bergerak akan menjadi lebih pendek, dan sebaliknya akan menjadi lebih panjang. Ini memungkinkan respons yang lebih cepat terhadap perubahan pasar.

Akhirnya, strategi membandingkan harga saat ini dengan ukuran VMA, menghasilkan sinyal perdagangan. Jika harga lebih tinggi dari VMA, lakukan over, dan jika harga lebih rendah dari VMA, lakukan over.

Analisis Keunggulan

Strategi Trading VMA memiliki keuntungan utama sebagai berikut:

  1. Siklus variabel Filters Noise Lebih stabil - Siklus rata-rata bergerak variabel disesuaikan dengan perubahan pasar, dapat memfilter kebisingan gelombang, mendapatkan sinyal tren yang lebih stabil.

  2. Responsiveness Improves Responsiveness - Moving Average dapat merespons perubahan harga dengan cepat, menangkap titik balik dari tren baru.

  3. Mengurangi frekuensi perdagangan Mengurangi Overtrading - TradingVMA dapat mengurangi jumlah perdagangan yang tidak perlu dibandingkan dengan indikator siklus tetap.

  4. Parameter yang dapat disesuaikan Flexible Parameters - Kebijakan ini memungkinkan pengguna untuk memilih parameter sesuai dengan preferensi mereka sendiri, sesuai dengan situasi pasar yang berbeda.

Analisis risiko

Strategi Trading VMA juga memiliki risiko utama sebagai berikut:

  1. Miss Rapid Reversals - Ketika tren berbalik dengan cepat, rata-rata bergerak yang terus-menerus disesuaikan mungkin akan menunda reaksi.

  2. Lagging Bias - Semua strategi bergerak rata-rata memiliki beberapa tingkat penyesuaian.

  3. Kesalahan sinyal kosong - Trading VMA dapat menghasilkan sinyal kosong yang salah dalam pasar yang disusun secara horizontal.

  4. Parameter Optimization Difficulty - Menemukan kombinasi parameter yang optimal mungkin lebih sulit.

Risiko ini dapat dikendalikan dengan cara menghentikan kerugian, menyesuaikan kombinasi parameter, dan sebagainya.

Arah optimasi

Strategi Trading VMA juga dapat dioptimalkan dari beberapa arah:

  1. Kombinasi Indikator Lainnya - Kombinasi dengan indikator lain seperti tren, reversal tren dapat meningkatkan kualitas sinyal.

  2. Parameter Optimization - menemukan kombinasi parameter yang optimal melalui retrospeksi historis dan optimasi parameter.

  3. Adaptive Trading Rules - Mengadopsi aturan trading yang berbeda sesuai dengan kondisi pasar yang berbeda.

  4. Sistematisasi perdagangan algoritmik Systemization - Sistematisasi dan sistematisasi strategi untuk optimasi pengembalian.

Meringkaskan

Trading VMA adalah strategi kuantitatif yang bersifat adaptif. Strategi ini menggunakan indikator VMA yang dirancang khusus untuk menangkap tren pasar dan memiliki keunggulan untuk merespons dengan cepat dan menyaring kebisingan. Strategi ini dapat dioptimalkan dengan berbagai cara untuk mendapatkan kinerja yang lebih baik.

Kode Sumber Strategi
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 1h
basePeriod: 15m
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/
// © laptevmaxim92

//@version=4
strategy("Variable Moving Average Strategy", overlay=true)

src=close
l =input(5, title="VMA Length") 
std=input(true, title="Show Trend Direction Colors")

utp = input(false, "Use take profit?")
pr = input(100, "Take profit pips")
usl = input(false, "Use stop loss?")
sl = input(100, "Stop loss pips")
fromday = input(01, defval=01, minval=01, maxval=31, title="From Day")
frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month")
fromyear = input(2000, minval=1900, maxval=2100, title="From Year")
today = input(31, defval=01, minval=01, maxval=31, title="To Day")
tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month")
toyear = input(2019, minval=1900, maxval=2100, title="To Year")

use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))

k = 1.0/l
pdm = 0.0
pdm := max((src - src[1]), 0)
mdm = 0.0
mdm := max((src[1] - src), 0)
pdmS = 0.0
pdmS := ((1 - k)*nz(pdmS[1]) + k*pdm)
mdmS = 0.0
mdmS := ((1 - k)*nz(mdmS[1]) + k*mdm)
s = pdmS + mdmS
pdi = pdmS/s
mdi = mdmS/s
pdiS = 0.0
pdiS := ((1 - k)*nz(pdiS[1]) + k*pdi)
mdiS = 0.0
mdiS := ((1 - k)*nz(mdiS[1]) + k*mdi)
d = abs(pdiS - mdiS)
s1 = pdiS + mdiS
iS = 0.0
iS := ((1 - k)*nz(iS[1]) + k*d/s1)
hhv = highest(iS, l) 
llv = lowest(iS, l) 
d1 = hhv - llv
vI = (iS - llv)/d1
vma = 0.0
vma := (1 - k*vI)*nz(vma[1]) + k*vI*src
vmaC=(vma > vma[1]) ? color.lime : (vma<vma[1]) ? color.red : (vma==vma[1]) ? color.yellow : na 
plot(vma, color=std?vmaC:color.white, linewidth=3, title="VMA")

longCondition = vma > vma[1]
if (longCondition)
    strategy.entry("BUY", strategy.long and use_date)

shortCondition = vma < vma[1]
if (shortCondition)
    strategy.entry("SELL", strategy.short and use_date)

if (utp and not usl)
    strategy.exit("TP", "BUY", profit = pr)
    strategy.exit("TP", "SELL", profit = pr)
    
if (usl and not utp)
    strategy.exit("SL", "BUY", loss = sl)
    strategy.exit("SL", "SELL", loss = sl)
    
if (usl and utp)
    strategy.exit("TP/SL", "BUY", loss = sl, profit = pr)
    strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)