Strategi Penunjuk Berganda Kuantitatif

Penulis:ChaoZhang, Tarikh: 2023-12-29 16:29:21
Tag:

img

Ringkasan

Strategi ini adalah strategi gabungan berdasarkan penunjuk EMA berganda dan penunjuk Bull Power. Nama strategi mengandungi kata kunci seperti kuantitatif dan dual-indicator, menyoroti ciri menggunakan dua penunjuk bebas.

Logika Strategi

Strategi ini terdiri daripada dua bahagian:

  1. Indikator 2/20 EMA. Indikator ini mengira EMA 2 hari dan 20 hari. Ia menghasilkan isyarat beli apabila harga melintasi EMA dan isyarat jual apabila harga melintasi EMA.

  2. Indikator Bull Power. Indikator ini mengira kuasa bullish/bearish berdasarkan hubungan bar semasa dengan bar sebelumnya. Ia menghasilkan isyarat perdagangan apabila kuasa bull/bear melebihi ambang.

Kedua-dua bahagian isyarat perlu dicetuskan pada masa yang sama untuk membuka kedudukan. sebagai contoh, EMA golden cross dan Bull Power adalah kedudukan terbuka panjang positif, manakala EMA dead cross dan Bull Power adalah kedudukan terbuka pendek negatif.

Analisis Kelebihan

  1. Menggabungkan penunjuk untuk menapis isyarat palsu. Penunjuk tunggal cenderung dipengaruhi oleh faktor luaran yang menghasilkan isyarat palsu. Gabungan penunjuk berganda boleh mengesahkan satu sama lain dan menapis isyarat palsu, meningkatkan kualiti isyarat.
  2. Parameter yang boleh disesuaikan: Tempoh EMA dan ambang Bull Power boleh disesuaikan untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza.
  3. Logik yang mudah dan jelas. Strategi ini hanya menggunakan dua petunjuk umum dengan logik yang mudah dan jelas, mudah difahami dan dilaksanakan.

Analisis Risiko

  1. Risiko kegagalan penunjuk: Walaupun menggunakan penunjuk gabungan, keadaan pasaran yang melampau masih boleh menyebabkan kegagalan penunjuk.
  2. Risiko pengoptimuman parameter. Tetapan parameter yang tidak sesuai boleh menyebabkan perdagangan yang tidak mencukupi atau berlebihan, melemahkan prestasi strategi. Memerlukan ujian yang mencukupi untuk mencari parameter yang optimum.

Arahan pengoptimuman

  1. Tambah mekanisme stop loss. Tetapkan pergerakan atau stop loss untuk mengawal kerugian perdagangan tunggal.
  2. Mengoptimumkan tetapan parameter. Uji kombinasi parameter yang berbeza untuk mencari parameter optimum untuk prestasi yang lebih baik.
  3. Menambah syarat penapisan. Menambah syarat seperti jumlah dagangan atau turun naik untuk menapis keadaan pasaran yang tidak normal semasa membuka kedudukan.

Kesimpulan

Strategi ini merealisasikan keputusan perdagangan dengan menggabungkan dua indikator EMA dan Bull Power. Berbanding dengan strategi satu indikator, kombinasi itu menghilangkan isyarat palsu dengan berkesan sambil mengekalkan parameter yang boleh disesuaikan. Kesimpulannya, strategi ini mempunyai kesederhanaan, fleksibiliti dan kepraktisan yang kuat sebagai strategi perdagangan kuantitatif.


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/07/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
//  Bull Power Indicator
//  To get more information please see "Bull And Bear Balance Indicator" 
//  by Vadim Gimelfarb. 
//
// 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


BP(SellLevel) =>
    pos = 0.0
    value = close < open ?  
             close[1] < open ?  math.max(high - close[1], close - low): math.max(high - open, close - low):
              close > open ? 
               close[1] > open ?  high - low : math.max(open - close[1], high - low) : 
                 high - close > close - low ? 
                  close[1] < open ? math.max(high - close[1], close - low) : high - open : 
                   high - close < close - low ? 
                     close[1] > open ?  high - low : math.max(open - close, high - low) : 
                      close[1] > open ? math.max(high - open, close - low) :
                       close[1] < open? math.max(open - close, high - low): high - low
    val2 = ta.sma(value, 15)                   
    pos :=  val2 > SellLevel ? 1 : -1
    pos

strategy(title='Combo 2/20 EMA & Bull Power', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull Power ═════●'
SellLevel = input.float(-15, step=0.01, 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)
prePosBP = BP(SellLevel)
iff_1 = posEMA20 == -1 and prePosBP == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBP == 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