Strategi perdagangan kombinasi multi-indikator

Penulis:ChaoZhang, Tanggal: 2023-10-26 15:22:28
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator CCI, ADX dan AO untuk menghasilkan sinyal perdagangan untuk posisi panjang dan pendek. CCI mengidentifikasi tingkat overbought dan oversold, ADX menentukan kekuatan dan arah tren, dan AO membantu pasar berosilasi. Kombinasi multi-indikator meningkatkan stabilitas dan efisiensi sistem perdagangan.

Logika Strategi

  1. CCI menunjukkan overbought di atas 100 dan oversold di bawah -100.

  2. ADX mengukur kekuatan tren. DI+ menunjukkan kekuatan tren naik, DI- menunjukkan kekuatan tren turun. ADX adalah kekuatan tren rata-rata. Strategi ini berlangsung lama ketika DI+ di bawah 25.

  3. AO adalah SMA cepat dikurangi SMA lambat. AO naik mewakili penguatan momentum bullish, dan AO turun mewakili penguatan momentum bearish. Strategi ini berjalan panjang ketika AO di bawah 0.

  4. Aturan perdagangan adalah: pergi panjang ketika CCI < 0 dan DI+ < 25 dan AO < 0; tutup panjang ketika DI+ > 25.

  5. Menghitung secara dinamis ukuran pesanan sebagai ekuitas dibagi dengan harga penutupan dan dibulatkan ke bawah, untuk menyesuaikan pesanan sebagai perubahan ekuitas rekening.

  6. Gunakan strategi.entry untuk sinyal panjang, dan strategi.close untuk sinyal keluar.

Keuntungan

  1. CCI memfilter kebisingan dari berbagai pasar, mengurangi sinyal palsu.

  2. ADX mengidentifikasi tren yang lebih kuat lebih awal.

  3. AO menghindari perdagangan pasar yang berbelit-belit.

  4. Beberapa indikator memverifikasi sinyal, meningkatkan keandalan.

  5. Dimensi posisi dinamis mengelola risiko secara efektif.

  6. Logika yang sederhana dan jelas, mudah diikuti.

Risiko

  1. CCI kesulitan mengidentifikasi rentang vkosd.

  2. ADX telah tertinggal dalam menangkap perubahan tren.

  3. AO berjuang dengan konsolidasi berbelit-belit.

  4. Pengaturan indikator yang buruk menyebabkan penyaringan yang berlebihan dan perdagangan yang terlewatkan.

  5. Dimensi dinamis tergantung pada volatilitas dan pasar.

  6. Potensi untuk pengambilan besar, yang membutuhkan manajemen risiko yang ketat.

Peningkatan

  1. Mengoptimalkan parameter CCI untuk pasar yang berbeda.

  2. Mengoptimalkan parameter ADX untuk menangkap perubahan tren.

  3. Sesuaikan parameter AO untuk lingkungan volatilitas.

  4. Kombinasi uji untuk menemukan bobot indikator yang optimal.

  5. Tambahkan stop loss untuk kontrol penarikan.

  6. Masukkan volume untuk menghindari kebocoran palsu.

  7. Sesuaikan ukuran posisi tetap dengan instrumen.

Kesimpulan

Strategi ini menggabungkan CCI, ADX dan AO untuk menghasilkan sinyal panjang yang cukup dapat diandalkan. Dimensi dinamis dan pengendalian risiko manajemen posisi. Logika sederhana dan jelas untuk diikuti oleh pemula. Tapi berjuang di berbagai pasar, dengan potensi optimasi yang signifikan yang diperlukan untuk pasar yang berbeda. Pengujian dan penyetelan lebih lanjut diperlukan untuk ketahanan di seluruh instrumen dan lingkungan.


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

//@version=3
strategy("Strategy Niel", shorttitle="Strategy Niel", max_bars_back=2000, initial_capital=1000)

//Input variables
buywhenadxabove = input(25)
buywhendiplusbelow = input(10)
buywhenccibelow = input(0)
buywhenawesomeoscillatorbelow = input(0)
sellwhendiplusabove = input(25)

//CCI script
numberofbarsforcci = input(20)
CCI = cci(close,numberofbarsforcci)

//+DI and ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

//plot(sig, color=red, title="ADX")
//plot(up, color=blue, title="+DI")
//plot(down, color=orange, title="-DI")


//Awesome Oscillator
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? blue : red
//plot(xSMA1_SMA2, style=histogram, linewidth=1, color=cClr)

buy = sig > buywhenadxabove and up < buywhendiplusbelow  and CCI < buywhenccibelow and xSMA1_SMA2 < buywhenawesomeoscillatorbelow 

ordersize=floor(strategy.equity/close) // Floor returns largest integer, strategy.equity gives total equity remaining - allows to dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when= buy) //strategy.entry let's you enter the market variables id ("long"), strategy.long (long position entry), size of the order and when the order should happen
bought = strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
sell = up > sellwhendiplusabove 
strategy.close("long", when=sell ) //strategy.close let's you close your position with variables id ('long') and when this should happen




Lebih banyak