Strategi dagangan kuantitatif crossover purata bergerak eksponen berganda


Tarikh penciptaan: 2024-01-25 14:04:23 Akhirnya diubah suai: 2024-01-25 14:04:23
Salin: 0 Bilangan klik: 659
1
fokus pada
1617
Pengikut

Strategi dagangan kuantitatif crossover purata bergerak eksponen berganda

Gambaran keseluruhan

Strategi ini dinamakan strategi perdagangan kuantitatif silang dua indeks rata-rata. Strategi ini menggunakan pengiraan purata bergerak dua indeks (Exponential Moving Average, EMA) dan membuat penilaian titik jual beli silang, menggabungkan prinsip pembukaan kedudukan perdagangan kuantitatif, untuk mewujudkan perdagangan automatik.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan purata bergerak dua indeks. Indikator 1 adalah EMA 20 hari jangka pendek, dan Indikator 2 adalah EMA 50 hari jangka panjang. Ia menghasilkan isyarat beli apabila EMA jangka pendek melintasi EMA jangka panjang dari bawah; ia menghasilkan isyarat jual apabila EMA jangka pendek melintasi EMA jangka panjang dari atas ke bawah.

Selain itu, strategi ini juga menggunakan indikator kuantitatif Vortex untuk membantu menentukan trend dan menghasilkan isyarat perdagangan. Indikator Vortex membandingkan perbezaan antara harga tertinggi dan harga penutupan semalam, dan harga terendah dengan harga penutupan semalam untuk menentukan arah kenaikan dan penurunan, dengan kitaran parameter 1 dan 3 hari.

Apabila isyarat perdagangan dihasilkan, pengurusan risiko dijalankan berdasarkan modul pengurusan wang yang terbina dalam strategi, digabungkan dengan prinsip perkadaran keuntungan dan kerugian. Strategi membolehkan anda menetapkan titik berhenti kehilangan dan berhenti untuk mengunci keuntungan, untuk mengawal risiko.

Analisis kelebihan

  • 1. Strategi untuk mengintegrasikan kedua-dua EMA cross dan Vortex kuantitatif untuk memanfaatkan kelebihan indikator dan meningkatkan ketepatan isyarat
  • 2. Sistem perdagangan automatik, tanpa melibatkan manusia, mengurangkan kemungkinan kesilapan manusia
  • 3. Fungsi Stop Loss automatik terbina dalam yang mengehadkan kerugian maksimum dalam satu transaksi
  • 4. Modul pengurusan wang mengawal peratusan dana yang dimasukkan untuk setiap urus niaga untuk mengawal risiko urus niaga keseluruhan

Analisis risiko

  • 1. Sinyal silang EMA mungkin menunjukkan isyarat palsu, dan Indeks Kuantitatif Vortex tidak dapat menyaring isyarat palsu sepenuhnya, jadi terdapat kebarangkalian kerugian tertentu
  • 2. Kejadian Black Swan yang mendadak boleh meningkatkan kerugian perdagangan secara langsung.
  • 3. Kembalikan kawalan bergantung pada fungsi hentian kerugian, jika pecah hentian kerugian akan menyebabkan kerugian yang lebih besar

Arah untuk dioptimumkan:

  • 1. Ujian boleh menyesuaikan parameter EMA, mengoptimumkan isyarat silang
  • 2. Ia boleh digabungkan dengan lebih banyak penapis indikator.
  • 3. Parameter boleh dioptimumkan secara automatik melalui algoritma pembelajaran mesin

ringkaskan

Strategi ini secara keseluruhan adalah strategi silang EMA ganda yang tipikal, menggunakan silang antara parameter EMA yang berbeza untuk menilai masa pembelian dan penjualan pasaran, termasuk dalam strategi perdagangan garis pendek. Kelebihan terbesar strategi ini adalah menggunakan indikator kuantitatif untuk penapisan isyarat, dan melalui sistem perdagangan automatik untuk mencapai penjaga nilai tanpa manusia, sambil memasang stop loss untuk mengawal risiko, prestasi yang agak stabil.

Kod sumber strategi
/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 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/
// © smottybugger 

//@version= 5
strategy("The  Averages Moving_X_Vortex", shorttitle="2.5billion BTC lol" , calc_on_order_fills=true, calc_on_every_tick=true, commission_type=strategy.commission.percent, commission_value=0.02, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, margin_long=0, margin_short=0,overlay=true)
// Dual Vortex
period_1 = input(15, "short Time")
period_2 = input(25, "long time")
VMP = math.sum(math.abs(high - low[3]), period_1)
VMM = math.sum(math.abs(low - high[1]), period_2)
STR = math.sum(ta.atr(1), period_1)
STR2 = math.sum(ta.atr(1), period_2)
VXpower= (input(5,"Vortex Power")/10000)*close
shorterV =(VMP / STR)*VXpower
longerV = (VMM / STR2)*VXpower

// MACross
shortlen = input(20, "ShortMa")
longlen = input(29, "LongMA")
shorterMA = ta.sma(close, shortlen)
longerMA = ta.sma(close, longlen)

// Vortex "MACross Stabilized"
Varance = input(1, "Vortex Stabilize")
Vpercent = (Varance / 100)
shortV= ((((shorterMA-close)* Vpercent)+shorterV)/2)+close
longV = ((((longerMA -close )*Vpercent)+longerV)/2)+close

//MAcross vortex stabilized
Marance = input(1, "MACross Stabilize")
MApercent = Marance / 100
shortMA = ((((shorterMA-close)*MApercent)+shorterV)/2)+close
longMA = ((((longerMA-close)*MApercent)+longerV)/2)+close

//VMXadveraged Moving cross adveraged
VMXL=(longV+longMA)/2
VMXS=(shortV+shortMA)/2
VXcross= ta.cross(VMXS,VMXL) ? VMXS : na
VMXcross= ta.cross(VMXS,VMXL)

//plot
plot(VMXS,"BUY",color=#42D420)
plot(VMXL,"SELL",color=#e20420)
crossV= ta.cross(shortV, longV) ? shortV : na
plot(shortV ,"shortV", color=#42D420)
plot(longV,"longV", color=#e20420)
plot(crossV,"crossV", color=#2962FF, style=plot.style_cross, linewidth=4)
crossMA = ta.cross(shortMA, longMA) ? shortMA : na
plot(shortMA,"shortMA", color=#42D420)
plot(longMA,"longMA", color=#e20420)
plot(crossMA,"crossMA", color=#2962FF, style=plot.style_cross, linewidth=4)
plot(VXcross,"VMXcross",color=#2962FF, style= plot.style_cross,linewidth=4)
plot(close,color=#999999)

// Vortex Condistyle
is_Vlong =shortV< longV
is_Vshort =shortV>longV


// Vortex commands
Vlong =  ta.crossunder(longV, shortV)
Vshort =ta.crossover(shortV,longV)
VorteX = ta.cross(longV, shortV)

// MACross Conditions
is_MAlong = shortMA < longV
is_MAshort = shortMA > shortV


//VMX Conditions
is_VMXlong=VMXS<VMXL
is_VMXshort=VMXS>VMXL

// MA commands
MAlong = ta.crossunder(shortMA, longV)
MAshort =ta.crossover(shortMA, shortV)
MAcross =  ta.cross(shortMA, longMA)
 
//VMX COMMANss
VMXBUY=ta.crossover( VMXS,VMXL)
VMXSELL=ta.crossunder(VMXS,VMXL)

// Close Crossing PositionLMXs

CS=is_MAshort or is_VMXshort
CL= is_MAlong or is_VMXlong
OS=MAshort or VMXSELL
OL=MAlong or VMXBUY


if VMXcross
    strategy.close_all ("closed")

//if CS and  OL
    strategy.close("Short",comment="Short Closed")


//if CL and  OS
    strategy.close("Long",comment="Long Closed" ) 

//CA1= is_MAcross and is_VorteX
//if CA1
   // strategy.close_all(comment="X2X")

// Defalongyntry qty

if is_VMXlong and VMXSELL
    strategy.entry("sell",strategy.short)


if is_VMXshort and VMXBUY
    strategy.entry("buy",strategy.long)



// Stop Losses & Taking Profit
sllp = input(0, "Stop Loss Long")
sll = (1 - sllp / 100) * strategy.position_avg_price
is_sll = input(true, "Stop Long")

tplp = input(0, "Take Profit Long")
tpl = (1 + tplp / 100) * strategy.position_avg_price
is_tpl = input(true, "Take Long")

slsp = input(0, "Stop Loss Short")
sls = (1 + slsp / 100) * strategy.position_avg_price
is_sls = input(true, "Stop Short")

tpsp = input(0, "Take Profit Short")
tps = (1 - tpsp / 100) * strategy.position_avg_price
is_tps = input(true, "Take Short")

if (is_sll or is_sls) 
    strategy.close("Stop Losses", qty_percent=100)

if (is_tpl or is_tps) 
    strategy.close("Take Profits", qty_percent=100)


 //Strategy Backtest
//plot(strategy.equity, "Equity", color=color.red, linewidth=2, style=plot.style_areabr)