Strategi Dual-Indikator Kuantitatif

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

img

Gambaran umum

Strategi ini adalah strategi kombinasi berdasarkan indikator EMA ganda dan indikator Bull Power. Nama strategi berisi kata kunci seperti kuantitatif dan indikator ganda, menyoroti karakteristiknya menggunakan dua indikator independen.

Logika Strategi

Strategi ini terdiri dari dua bagian:

  1. Indikator 2/20 EMA. Indikator ini menghitung EMA 2 hari dan 20 hari. Ini menghasilkan sinyal beli ketika harga melintasi EMA dan sinyal jual ketika harga melintasi EMA.

  2. Indikator Bull Power. Indikator ini menghitung kekuatan bullish/bearish berdasarkan hubungan bar saat ini dengan bar sebelumnya. Ini menghasilkan sinyal perdagangan ketika kekuatan bull/bear melebihi ambang batas.

Kedua bagian sinyal perlu dipicu pada saat yang sama untuk membuka posisi. misalnya, EMA golden cross dan Bull Power adalah posisi terbuka panjang positif, sementara EMA dead cross dan Bull Power adalah posisi terbuka pendek negatif.

Analisis Keuntungan

  1. Kombinasi indikator untuk menyaring sinyal palsu. Indikator tunggal cenderung dipengaruhi oleh faktor eksternal yang menghasilkan sinyal palsu. Kombinasi indikator ganda dapat saling memverifikasi dan menyaring sinyal palsu, meningkatkan kualitas sinyal.
  2. Periode EMA dan ambang Bull Power dapat disesuaikan untuk menyesuaikan dengan lingkungan pasar yang berbeda.
  3. Logika yang sederhana dan jelas. Strategi hanya menggunakan dua indikator umum dengan logika yang sederhana dan jelas, mudah dimengerti dan diterapkan.

Analisis Risiko

  1. Risiko kegagalan indikator: Meskipun menggunakan indikator kombinasi, kondisi pasar yang ekstrem masih dapat menyebabkan kegagalan indikator.
  2. Risiko optimasi parameter. Pengaturan parameter yang tidak tepat dapat menyebabkan perdagangan yang tidak memadai atau berlebihan, merusak kinerja strategi. Membutuhkan pengujian yang cukup untuk menemukan parameter optimal.

Arahan Optimasi

  1. Tambahkan mekanisme stop loss. Atur stop loss bergerak atau lookback untuk mengendalikan kerugian perdagangan tunggal.
  2. Mengoptimalkan pengaturan parameter. Uji kombinasi parameter yang berbeda untuk menemukan parameter optimal untuk kinerja yang lebih baik.
  3. Menambahkan kondisi penyaringan. Menambahkan kondisi seperti volume perdagangan atau volatilitas untuk menyaring kondisi pasar yang tidak normal saat membuka posisi.

Kesimpulan

Strategi ini mewujudkan keputusan perdagangan dengan menggabungkan indikator EMA dan Bull Power ganda. Dibandingkan dengan strategi indikator tunggal, kombinasi ini menghilangkan sinyal palsu secara efektif sambil mempertahankan parameter yang dapat disesuaikan.


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