
Strategi Trading VMA adalah strategi perdagangan kuantitatif berdasarkan purata bergerak yang berubah. Strategi ini menggunakan purata bergerak yang berubah untuk menangkap trend pasaran dan menghasilkan isyarat perdagangan.
Pusat strategi VMA perdagangan adalah pengiraan purata bergerak yang berubah-ubah. Purata bergerak adalah petunjuk teknikal yang terkenal yang mengira harga purata dalam jangka masa tertentu. VMA yang digunakan dalam strategi VMA perdagangan mempunyai jangka masa berubah-ubah.
Khususnya, strategi ini terlebih dahulu mengira satu siri parameter antara, seperti indikator pergerakan arah harga (PDM, MDIM), data yang telah diproses dengan lancar (PDMs, MDMs). Data ini akhirnya digunakan untuk mendapatkan kekuatan indikator (iS) yang mencerminkan kekuatan pergerakan harga.
Kemudian, strategi TradingVMA secara dinamik menyesuaikan panjang purata bergerak mengikut kekuatan penunjuk. Apabila turun naik pasaran meningkat, kitaran purata bergerak akan menjadi lebih pendek dan sebaliknya akan menjadi lebih lama.
Akhirnya, strategi membandingkan harga semasa dengan saiz VMA, menghasilkan isyarat perdagangan. Buat lebih banyak apabila harga lebih tinggi daripada VMA, dan kosong apabila harga lebih rendah daripada VMA.
Strategi Trading VMA mempunyai kelebihan utama berikut:
Siklus Berubah Filters Noise Lebih stabil - Siklus purata bergerak berubah menyesuaikan diri dengan perubahan pasaran, dapat memfilter bunyi gelombang dan mendapatkan isyarat trend yang lebih stabil.
Meningkatkan Kesan Kepada Perubahan Harga - Rata-rata Bergerak Bergerak boleh bertindak balas dengan cepat terhadap perubahan harga, menangkap titik perubahan trend baru.
Mengurangkan Frekuensi Perdagangan Mengurangkan Overtrading - Perdagangan VMA dapat mengurangkan jumlah perdagangan yang tidak perlu berbanding dengan indikator kitaran tetap.
Parameter yang boleh disesuaikan Flexible Parameters - Dasar ini membolehkan pengguna memilih parameter mengikut keutamaan mereka sendiri, menyesuaikan diri dengan keadaan pasaran yang berbeza.
Strategi Trading VMA juga mempunyai risiko utama:
Miss Rapid Reversals - Apabila trend berbalik dengan cepat, purata bergerak yang terus diselaraskan mungkin menangguhkan tindak balas.
Lagging Bias - Semua strategi purata bergerak akan mempunyai tahap penyesuaian yang lebih atau kurang.
Kesalahan isyarat kosong - Dalam pasaran yang disusun secara mendatar, TradingVMA mungkin menghasilkan isyarat kosong yang salah.
Kesukaran pengoptimuman parameter - mencari kombinasi parameter yang optimum mungkin lebih sukar.
Risiko ini boleh dikawal dengan menghentikan kerugian, menyesuaikan kombinasi parameter dan sebagainya.
Strategi Trading VMA juga boleh dioptimumkan dari beberapa arah:
Mengintegrasikan Indikator Lain - Menggunakan gabungan indikator lain seperti trend, pembalikan trend dapat meningkatkan kualiti isyarat.
Pengoptimuman Parameter - Mencari kombinasi parameter yang optimum dengan mengkaji semula sejarah dan pengoptimuman parameter.
Adaptive Trading Rules - Mengambil peraturan pembukaan dan hentian yang berbeza mengikut keadaan pasaran.
Sistematisasi perdagangan algoritma Systemization - untuk algoritma dan sistematisasi strategi, untuk memudahkan pengesanan dan pengoptimuman.
Trading VMA adalah strategi kuantitatif yang menyesuaikan diri. Ia menggunakan petunjuk VMA yang direka khas untuk menangkap trend pasaran, dengan kelebihan untuk bertindak balas dengan cepat, menyaring kebisingan.
/*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)