Strategi Perdagangan Kuantitatif Berdasarkan EMA Ganda dan Indeks Volatilitas Harga

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

img

Gambaran umum

Strategi ini disebut Moving Average Indicator dan Price Volatility Combination Strategy. Ini menggabungkan double exponential moving average (DEMA) dan indeks volatilitas harga untuk menghasilkan sinyal perdagangan yang komprehensif.

Prinsip

Strategi ini terdiri dari dua bagian:

  1. Indikator DEMA. Indikator ini menghitung rata-rata bergerak eksponensial 20 hari dan 2 hari. Ini menghasilkan sinyal perdagangan ketika harga menembus garis 2 hari dari atas atau menembus garis 20 hari dari bawah.

  2. (Highest Price - Lowest Price) /Close Price Volatility Index. Indeks ini mencerminkan rentang fluktuasi harga dalam satu periode. Di sini kita menghitung rata-rata bergerak sederhana 16 hari dari indeks volatilitas selama 20 bar terakhir. Ketika volatilitas bar saat ini lebih tinggi atau lebih rendah dari nilai rata-rata ini, itu menghasilkan sinyal perdagangan.

Jika DEMA dan indeks volatilitas memberikan sinyal pada saat yang sama, pesanan perdagangan panjang atau pendek akhir akan dihasilkan.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggabungkan beberapa indikator dapat mengurangi sinyal palsu dan meningkatkan keandalan sinyal.

  2. Garis 20 hari dapat secara efektif mengidentifikasi tren jangka menengah hingga panjang, dan garis 2 hari dapat menangkap fluktuasi jangka pendek, membuat kombinasi dapat disesuaikan dengan lingkungan pasar yang berbeda.

  3. Indeks volatilitas dapat secara efektif mencerminkan volatilitas pasar dan peluang perdagangan.

  4. Dengan menyesuaikan parameter, ia dapat beradaptasi dengan produk dan pasar siklus yang berbeda.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Dalam tren volatilitas rendah, indeks volatilitas dapat menghasilkan sinyal yang salah.

  2. Dalam pasar satu arah yang cepat, EMA ganda mungkin tertinggal.

  3. Perkembangan kompleksitas dari beberapa indikator juga meningkatkan risiko optimasi yang berlebihan. pengujian backtesting dan pengujian stabilitas parameter yang komprehensif diperlukan.

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam aspek berikut:

  1. Menambahkan mekanisme stop loss dapat secara efektif mengendalikan kerugian per order.

  2. Mengoptimalkan parameter untuk produk dan siklus yang berbeda untuk meningkatkan kemampuan beradaptasi.

  3. Meningkatkan indikator likuiditas dan volatilitas untuk meningkatkan kualitas sinyal.

  4. Menambahkan algoritma pembelajaran mesin untuk mencapai parameter dinamis dan penyesuaian berat.

Kesimpulan

Dengan menggabungkan EMA ganda dan indeks volatilitas, strategi ini dapat mencapai kinerja perdagangan yang baik di pasar yang sedang tren dan volatile. Ada juga risiko tertentu yang membutuhkan optimasi dan perbaikan lebih lanjut.


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