TradingVMA Strategi perdagangan rata-rata bergerak variabel

Penulis:ChaoZhang, Tanggal: 2024-02-21 11:47:43
Tag:

img

Gambaran umum

Strategi TradingVMA adalah strategi perdagangan kuantitatif yang didasarkan pada garis rata-rata bergerak variabel.

Logika Strategi

Inti dari strategi TradingVMA adalah perhitungan rata-rata bergerak panjang variabel (Variable Moving Average, VMA).

Secara khusus, strategi pertama menghitung serangkaian kuantitas perantara, seperti Indikator Gerakan Arah Harga (PDM, MDIM), data halus (PDM, MDM). Data ini akhirnya digunakan untuk mendapatkan kekuatan indikator (iS). Indikator ini mencerminkan intensitas fluktuasi harga.

Kemudian, strategi TradingVMA secara dinamis menyesuaikan periode rata-rata bergerak berdasarkan kekuatan indikator. Ketika volatilitas pasar meningkat, periode rata-rata bergerak menjadi lebih pendek, dan sebaliknya. Ini memungkinkan respons yang lebih cepat terhadap perubahan pasar.

Akhirnya, strategi ini membandingkan harga saat ini dengan VMA untuk menghasilkan sinyal perdagangan.

Analisis Keuntungan

Strategi TradingVMA memiliki keuntungan utama berikut:

  1. Periode Variabel Filter Noise More Steady Periode moving average variabel beradaptasi dengan perubahan pasar untuk menyaring kebisingan dan sinyal tren yang lebih stabil.

  2. Tanggapan yang lebih cepat terhadap perubahan harga Meningkatkan responsif Rata-rata bergerak variabel dapat merespon dengan cepat terhadap perubahan harga dan menangkap titik pembalikan tren.

  3. Mengurangi Frekuensi Perdagangan Mengurangi Overtrading - Dibandingkan dengan indikator periode tetap, TradingVMA dapat mengurangi perdagangan yang tidak perlu.

  4. Fleksibilitas parameter yang dapat disesuaikan - Strategi memungkinkan pengguna untuk memilih parameter berdasarkan preferensi mereka agar sesuai dengan lingkungan pasar yang berbeda.

Analisis Risiko

Strategi TradingVMA juga memiliki risiko utama berikut:

  1. Kurangnya Pembalikan Cepat Ketika tren berbalik dengan cepat, rata-rata bergerak yang terus-menerus menyesuaikan mungkin terlambat merespons.

  2. Bias Lagging Semua strategi rata-rata bergerak memiliki beberapa tingkat bias lagging, baik panjang atau pendek.

  3. Sinyal yang Salah TradingVMA dapat menghasilkan sinyal panjang/pendek yang salah di pasar sisi yang terikat kisaran.

  4. Optimasi Parameter yang Sulit Menemukan kombinasi parameter yang optimal bisa menjadi tantangan.

Risiko ini dapat dikendalikan melalui metode seperti stop loss, penyesuaian kombinasi parameter, dll.

Arahan Optimasi

Strategi TradingVMA juga dapat ditingkatkan dalam aspek berikut:

  1. Menggabungkan Indikator Lainnya Menggunakan indikator kontra-tren dengan indikator tren lainnya dapat meningkatkan kualitas sinyal.

  2. Optimasi Parameter Temukan parameter optimal melalui backtesting dan optimasi.

  3. Adaptive Trading Rules Menggunakan aturan masuk yang berbeda, menghentikan kerugian per rezim pasar.

  4. Sistemisasi Algoritme dan sistematiskan strategi untuk pengoptimalan yang lebih mudah.

Kesimpulan

TradingVMA adalah strategi kuantitatif adaptif. Ini menangkap tren pasar menggunakan indikator VMA yang dirancang khusus, dengan keunggulan menjadi responsif dan menyaring kebisingan. Strategi dapat ditingkatkan dengan berbagai cara untuk kinerja yang lebih baik.


/*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)

Lebih banyak