Strategi kuantitatif bercabang dua


Tanggal Pembuatan: 2023-12-29 16:29:21 Akhirnya memodifikasi: 2023-12-29 16:29:21
menyalin: 0 Jumlah klik: 601
1
fokus pada
1621
Pengikut

Strategi kuantitatif bercabang dua

Ringkasan

Strategi ini adalah strategi kombinasi berdasarkan indikator EMA ganda dan indikator Bull Power. Nama strategi ini mengandung kata kunci keton hidrogen dan keton keton ganda, yang menyoroti karakteristiknya menggunakan dua indikator independen.

Prinsip Strategi

Strategi ini terdiri dari dua bagian:

  1. Indikator 220 EMA. Indikator ini menghitung EMA hari ke-2 dan ke-20, menghasilkan sinyal beli ketika harga melewati EMA dari bawah, menghasilkan sinyal jual ketika harga melewati EMA dari atas ke bawah.
  2. Indikator Bull Power. Indikator ini menghitung kekuatan bullish berdasarkan hubungan antara garis K saat ini dengan garis K sebelumnya, dan menghasilkan sinyal perdagangan yang sesuai ketika kekuatan bullish lebih besar dari batas yang ditetapkan.

Dua bagian sinyal harus dipicu secara bersamaan untuk membuka posisi. Misalnya, EMA Goldfork dan Bull Power sama untuk membuka posisi positif, EMA Deadfork dan Bull Power sama untuk membuka posisi kosong.

Analisis Keunggulan

  1. Kombinasi indikator ganda menyaring sinyal palsu. Indikator tunggal mudah dipengaruhi oleh faktor eksternal untuk menghasilkan sinyal palsu, indikator kombinasi dapat saling diverifikasi, menyaring sinyal palsu, meningkatkan kualitas sinyal.
  2. Parameter indikator dapat disesuaikan. Siklus EMA dan nilai terendah Bull Power dapat disesuaikan untuk menyesuaikan dengan kondisi pasar yang berbeda.
  3. Strategi ini hanya menggunakan dua indikator umum, prinsipnya sederhana dan mudah dipahami implementasinya.

Analisis risiko

  1. Risiko kegagalan indikator. Bahkan jika kombinasi indikator, dalam situasi ekstrem, indikator mungkin gagal.
  2. Risiko Optimasi Parameter. Pengaturan parameter yang tidak tepat dapat menyebabkan terlalu banyak atau terlalu sedikit transaksi, mengurangi efektivitas strategi. Perlu pengujian yang memadai untuk menemukan parameter optimal.

Arah optimasi

  1. Meningkatkan mekanisme stop loss. Anda dapat mengatur stop loss bergerak atau stop loss mundur untuk mengendalikan kerugian tunggal.
  2. Optimalkan pengaturan parameter. Anda dapat menguji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal untuk mendapatkan hasil yang lebih baik.
  3. Menambahkan kondisi penyaringan. Anda dapat menambahkan kondisi penyaringan volume atau volatilitas yang serupa dalam kondisi pembukaan posisi, untuk menyaring beberapa kasus yang tidak biasa.

Meringkaskan

Strategi ini memungkinkan keputusan perdagangan melalui aplikasi kombinasi dua EMA dan Bull Power. Dibandingkan dengan indikator tunggal, indikator kombinasi dapat memfilter sinyal palsu secara efektif, dengan ruang untuk menyesuaikan parameter sambil mempertahankan kualitas sinyal perdagangan. Secara keseluruhan, strategi ini sederhana dan mudah dimengerti, fleksibel untuk diterapkan secara praktis, dan merupakan strategi perdagangan kuantitatif yang sangat praktis.

Kode Sumber Strategi
/*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)