Strategi Dagangan Gabungan Pelbagai Penunjuk

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

img

Ringkasan

Strategi ini menggabungkan penunjuk CCI, ADX dan AO untuk menjana isyarat perdagangan untuk kedudukan panjang dan pendek. CCI mengenal pasti tahap overbought dan oversold, ADX menentukan kekuatan dan arah trend, dan AO membantu dalam pasaran berayun. Gabungan pelbagai penunjuk meningkatkan kestabilan dan kecekapan sistem perdagangan.

Logika Strategi

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

  2. ADX mengukur kekuatan trend. DI+ menunjukkan kekuatan trend menaik, DI- menunjukkan kekuatan trend menurun. ADX adalah kekuatan trend purata. Strategi ini berjalan lama apabila DI+ di bawah 25.

  3. AO ialah SMA pantas dikurangkan SMA perlahan. AO yang meningkat mewakili penguatan momentum menaik, dan AO yang jatuh mewakili penguatan momentum menurun. Strategi ini berjalan lama apabila AO di bawah 0.

  4. Peraturan dagangan adalah: Pergi panjang apabila CCI < 0 dan DI+ < 25 dan AO < 0; Tutup panjang apabila DI+ > 25.

  5. Mengira secara dinamik saiz pesanan sebagai ekuiti dibahagikan dengan harga penutupan dan dibulatkan ke bawah, untuk menyesuaikan pesanan apabila perubahan ekuiti akaun.

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

Kelebihan

  1. CCI menapis bunyi bising dari pelbagai pasaran, mengurangkan isyarat palsu.

  2. ADX mengenal pasti trend yang lebih kuat lebih awal.

  3. AO mengelakkan perdagangan pasaran yang berbelit-belit.

  4. Pelbagai penunjuk mengesahkan isyarat, meningkatkan kebolehpercayaan.

  5. Pengukuran kedudukan dinamik menguruskan risiko dengan berkesan.

  6. Logik yang mudah dan jelas, mudah diikuti.

Risiko

  1. CCI berjuang mengenal pasti julat vkosd.

  2. ADX telah ketinggalan dalam menangkap perubahan trend.

  3. AO bergelut dengan penyatuan yang bergelut.

  4. Tetapan penunjuk yang buruk membawa kepada penapisan berlebihan dan perdagangan yang terlepas.

  5. Pengukuran dinamik bergantung kepada turun naik dan pasaran.

  6. Potensi untuk pengambilan yang besar, memerlukan pengurusan risiko yang ketat.

Peningkatan

  1. Mengoptimumkan parameter CCI untuk pasaran yang berbeza.

  2. Mengoptimumkan parameter ADX untuk menangkap perubahan trend.

  3. Sesuaikan parameter AO untuk persekitaran turun naik.

  4. Kombinasi ujian untuk mencari berat indikator yang optimum.

  5. Tambah stop loss untuk kawalan penarikan.

  6. Masukkan jumlah untuk mengelakkan pemasangan palsu.

  7. Sesuaikan saiz kedudukan tetap mengikut instrumen.

Kesimpulan

Strategi ini menggabungkan CCI, ADX dan AO untuk menjana isyarat panjang yang agak boleh dipercayai. Pengukuran dinamik dan kawalan risiko pengurusan kedudukan. Logiknya mudah dan jelas untuk diikuti oleh pemula. Tetapi ia berjuang dalam pasaran yang berbeza, dengan potensi pengoptimuman yang signifikan yang diperlukan untuk pasaran yang berbeza. Ujian dan penyesuaian lanjut diperlukan untuk ketahanan di seluruh instrumen dan persekitaran.


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