Strategi kuantitatif pengesanan arah aliran rentas kitaran


Tarikh penciptaan: 2023-12-15 15:59:37 Akhirnya diubah suai: 2023-12-15 15:59:37
Salin: 0 Bilangan klik: 600
1
fokus pada
1621
Pengikut

Strategi kuantitatif pengesanan arah aliran rentas kitaran

Gambaran keseluruhan

Strategi ini menggabungkan penggunaan indikator PSAR untuk menentukan trend harga, indikator ADX untuk menentukan kekuatan trend, indikator RSI untuk menentukan kawasan overbought dan oversold dan indikator CMF untuk menentukan aliran dana, untuk membina strategi perdagangan kuantitatif yang menjejaki trend melintasi kitaran. Strategi ini menentukan arah trend baru dengan cepat ketika harga memutuskan untuk melakukan penyelarasan, dan terus mengikuti trend berikutnya, sambil memastikan pengambilalihan trend utama, juga menetapkan syarat penyaringan proses untuk mengurangkan risiko memegang kedudukan.

Prinsip Strategi

Peraturan utama dalam dasar ini ialah:

  1. Menggunakan indikator PSAR untuk menentukan sama ada harga berada dalam trend menaik, penetapan harga di bawah PSAR dianggap sebagai berakhirnya trend menaik dan beralih ke penurunan;

  2. RSI memerlukan nilai di atas garis tengah 50, untuk menyaring penembusan palsu yang terbentuk di kawasan oversold;

  3. ADX menuntut lebih tinggi daripada purata EMA sendiri, menunjukkan bahawa terdapat isyarat berterusan dalam analisis trend;

  4. Keperluan CMF lebih besar daripada 0 dianggap sebagai aliran wang;

Sinyal beli dihasilkan apabila empat syarat di atas dipenuhi; Sinyal jual dihasilkan apabila RSI berada di bawah 50, ADX berada di bawah EMA rata-rata dan CMF kurang dari 0.

Strategi ini secara menyeluruh mempertimbangkan arah trend harga, kekuatan trend, keadaan overbought dan oversold, dan aliran dana ke pelbagai dimensi untuk menetapkan peraturan perdagangan, menetapkan penghakiman logik yang ketat untuk menentukan apakah isyarat perdagangan dihasilkan, yang dapat menyaring kes pecah palsu dengan berkesan, dan memastikan penangkapan arah trend yang berkemungkinan tinggi dan mampan.

Analisis kelebihan

Strategi ini mempunyai kelebihan utama:

  1. Menggabungkan pelbagai peraturan perdagangan untuk menetapkan petunjuk, ia dapat mencegah penembusan palsu dengan berkesan dan memastikan kualiti isyarat perdagangan;

  2. Mencari dan menjejaki trend baru dengan cepat, untuk mengambil manfaat daripada proses trend;

  3. Proses penyetempatan untuk mengesan keadaan penapisan, mengawal risiko dengan berkesan dan memastikan kesan pengesanan;

  4. Mengambil keputusan mengenai kekuatan trend, anda boleh mengelakkan kesukaran untuk menyusun semula.

Analisis risiko

Risiko utama strategi ini ialah:

  1. Strategi tunggal mudah untuk menimbun risiko, yang memerlukan penyesuaian kedudukan yang sesuai untuk mengawal risiko keseluruhan;

  2. Ia perlu dipantau dengan teliti untuk memantau perubahan keadaan penapis dan mengelakkan kehilangan pemotongan apabila keadaan dibatalkan.

  3. Strategi ini memfokuskan pada garis tengah dan panjang, dan kandungan jangka pendek terdedah kepada kesan turun naik yang menyebabkan risiko kerugian.

Langkah-langkah pengurusan risiko yang sesuai termasuk: optimum peraturan pengurusan kedudukan, menetapkan garis amaran risiko, jarak jarak berhenti yang sesuai.

Arah pengoptimuman

Strategi ini mempunyai ruang untuk pengoptimuman:

  1. Pengaturan parameter yang dioptimumkan, yang pada masa ini lebih subjektif, boleh dioptimumkan secara automatik melalui kaedah pembelajaran mesin;

  2. Menambah modul pengurusan kedudukan yang membolehkan anda menyesuaikan kedudukan secara dinamik mengikut keadaan risiko;

  3. Menambah pengoptimuman mekanisme hentian kerugian, seperti hentian penjejakan, hentian masa, dan hentian pemecahan.

ringkaskan

Strategi ini mengintegrasikan pelbagai peraturan penilaian indikator, mewujudkan penentuan cepat dan pengesanan berterusan terhadap trend baru, dan mengesahkan keberkesanan analisis multidimensi seperti analisis kuantitatif yang menggabungkan trend dan dana. Strategi ini boleh digunakan secara indeks sebagai strategi asas untuk mengesan trend sepanjang tempoh, atau boleh dibina sebagai strategi kuantitatif jangka panjang yang stabil setelah parameter dan modul dioptimumkan.

Kod sumber strategi
/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )

start = input(1.02)
increment = input(1.02)
maximum = input(1.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

//rsi strat
length = input( 50 )
middle_RSI=input(49)
price = close
vrsi = rsi(price, length)

//cmf
lengthCMF = input(20, minval=1)
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthCMF) / sum(volume, lengthCMF)

//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, 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)
sig = adx(dilen, adxlen)
ema_length=input(10)
ema_sig= ema(sig,ema_length)


long = not uptrend  and vrsi > middle_RSI and sig > ema_sig   and mf>0 
short= uptrend   and vrsi < middle_RSI and sig<ema_sig and mf<0

strategy.entry("long",1,when=long)
strategy.close('long',when=short)