Strategi Dagangan Kuantitatif Berdasarkan EMA Berganda dan Indeks Volatiliti Harga

Penulis:ChaoZhang, Tarikh: 2023-12-18 11:26:49
Tag:

img

Ringkasan

Strategi ini dikenali sebagai Pengiktirafan Purata Bergerak dan Strategi Gabungan Volatiliti Harga. Ia menggabungkan purata bergerak eksponensial berganda (DEMA) dan indeks volatiliti harga untuk menjana isyarat perdagangan yang komprehensif.

Prinsip

Strategi ini terdiri daripada dua bahagian:

  1. Indikator DEMA. Indikator ini mengira purata bergerak eksponensial 20 hari dan 2 hari. Ia menghasilkan isyarat perdagangan apabila harga memecahkan garis 2 hari dari atas atau memecahkan garis 20 hari dari bawah.

  2. (Highest Price - Lowest Price) /Close Price Volatility Index. Indeks ini mencerminkan julat turun naik harga dalam satu tempoh. Di sini kita mengira purata bergerak mudah 16 hari indeks turun naik selama 20 bar terakhir. Apabila turun naik bar semasa lebih tinggi atau lebih rendah daripada nilai purata ini, ia menghasilkan isyarat perdagangan.

Isyarat dari kedua-dua bahagian digabungkan. Jika DEMA dan indeks turun naik memberi isyarat pada masa yang sama, pesanan perdagangan panjang atau pendek akhir akan dihasilkan.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggabungkan beberapa penunjuk boleh mengurangkan isyarat palsu dan meningkatkan kebolehpercayaan isyarat.

  2. Garis 20 hari dapat mengenal pasti trend jangka menengah hingga panjang dengan berkesan, dan garis 2 hari dapat menangkap turun naik jangka pendek, menjadikan kombinasi itu dapat disesuaikan dengan persekitaran pasaran yang berbeza.

  3. Indeks turun naik boleh mencerminkan turun naik pasaran dan peluang perdagangan dengan berkesan.

  4. Dengan menyesuaikan parameter, ia boleh menyesuaikan diri dengan produk dan pasaran kitaran yang berbeza.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Dalam trend turun naik yang rendah, indeks turun naik boleh menghasilkan isyarat yang salah.

  2. Dalam pasaran satu hala yang cepat, EMA berganda mungkin tertinggal. Memendekkan parameter dengan betul atau menggabungkan dengan penunjuk lain boleh membantu.

  3. Kerumitan yang meningkat dari pelbagai penunjuk juga meningkatkan risiko pengoptimuman berlebihan.

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Menambah mekanisme stop loss dapat mengawal secara berkesan setiap kehilangan pesanan.

  2. Mengoptimumkan parameter untuk produk dan kitaran yang berbeza untuk meningkatkan kebolehsesuaian.

  3. Meningkatkan penunjuk kecairan dan turun naik untuk meningkatkan kualiti isyarat.

  4. Menambah algoritma pembelajaran mesin untuk mencapai parameter dinamik dan pelarasan berat.

Kesimpulan

Dengan menggabungkan EMA berganda dan indeks turun naik, strategi ini dapat mencapai prestasi perdagangan yang baik di kedua-dua pasaran tren dan turun naik. Terdapat juga risiko tertentu yang memerlukan pengoptimuman dan penambahbaikan lanjut. Tetapi secara keseluruhan, idea strategi jelas dan mempunyai nilai praktikal.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//  This histogram displays (high-low)/close
//  Can be applied to any time frame.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


HLCH(input_barsback,input_percentorprice,input_smalength) =>
    pos = 0.0
    xPrice = (high-low)/close
    xPriceHL = (high-low)
    xPrice1 = input_percentorprice ? xPrice * 100: xPriceHL
    xPrice1SMA = ta.sma(math.abs(xPrice1), input_smalength)
    pos := xPrice1SMA[input_barsback] > math.abs(xPrice1) ? 1 :
    	     xPrice1SMA[input_barsback] < math.abs(xPrice1) ? -1 : nz(pos[1], 0)
    pos

strategy(title='Combo 2/20 EMA & (H-L)/C Histogram', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ (H-L)/C Histogram  ═════●'
input_barsback = input(20, title="Look Back", group=I2)
input_percentorprice = input(false, title="% change", group=I2)
input_smalength = input(16, title="SMA Length", group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosHLCH = HLCH(input_barsback,input_percentorprice,input_smalength)
iff_1 = posEMA20 == -1 and prePosHLCH == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosHLCH == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)

Lebih lanjut