Strategi kuantitatif pelacakan tren lintas siklus


Tanggal Pembuatan: 2023-12-15 15:59:37 Akhirnya memodifikasi: 2023-12-15 15:59:37
menyalin: 0 Jumlah klik: 600
1
fokus pada
1621
Pengikut

Strategi kuantitatif pelacakan tren lintas siklus

Ringkasan

Strategi ini menggabungkan penggunaan indikator PSAR untuk menentukan tren harga, indikator ADX untuk menentukan kekuatan tren, indikator RSI untuk menentukan area overbought dan oversold, dan indikator CMF untuk menentukan aliran dana, untuk membangun strategi perdagangan kuantitatif yang melacak tren lintas siklus. Strategi ini menentukan posisi cepat ketika harga terputus untuk membentuk arah tren baru, dan terus melacak tren berikutnya, sekaligus mengatur kondisi proses penyaringan untuk mengurangi risiko memegang posisi, sambil memastikan pengambilalihan tren utama.

Prinsip Strategi

Aturan penilaian utama dalam kebijakan ini adalah sebagai berikut:

  1. Menggunakan indikator PSAR untuk menentukan apakah harga sedang dalam tren naik, penetasan PSAR dianggap sebagai akhir dari tren naik dan bergeser ke penurunan;

  2. RSI membutuhkan nilai di atas garis tengah 50, untuk memfilter terobosan palsu yang terbentuk di zona oversold.

  3. ADX meminta lebih tinggi dari rata-rata EMA-nya sendiri, yang menunjukkan adanya sinyal yang terus berlanjut dari hasil analisis tren;

  4. CMF lebih besar dari 0 dan dianggap sebagai aliran dana;

Sinyal beli muncul ketika empat kondisi di atas terpenuhi; Sinyal jual muncul ketika RSI berada di bawah 50, ADX berada di bawah rata-rata EMA sendiri dan CMF kurang dari 0.

Strategi ini secara komprehensif mempertimbangkan arah tren harga, intensitas tren, status overbought dan oversold, dan aliran dana ke beberapa dimensi untuk mengatur aturan perdagangan, menetapkan penilaian logis yang ketat dalam menentukan apakah sinyal perdagangan dihasilkan, dan secara efektif memfilter kemungkinan terobosan, untuk memastikan bahwa arah tren ditangkap dengan probabilitas tinggi dan berkelanjutan.

Analisis Keunggulan

Strategi ini memiliki keuntungan utama sebagai berikut:

  1. Kombinasi berbagai aturan pengaturan indikator perdagangan, dapat secara efektif mencegah penembusan palsu, memastikan kualitas sinyal perdagangan;

  2. Mengidentifikasi dan melacak tren yang muncul dengan cepat, sehingga Anda dapat sepenuhnya memanfaatkan proses tren;

  3. Proses pengaturan melacak kondisi penyaringan, yang dapat secara efektif mengendalikan risiko dan memastikan efek pelacakan;

  4. Pengertian indikator intensitas tren dapat mencegah terjadinya kebuntuan.

Analisis risiko

Strategi ini memiliki risiko utama sebagai berikut:

  1. Strategi tunggal mudah untuk menimbun risiko, yang memerlukan penyesuaian posisi yang tepat untuk mengendalikan risiko keseluruhan;

  2. Perhatikan perubahan kondisi penyaringan dalam proses pelacakan untuk menghindari terjadinya Loss Cut setelah kondisi dibatalkan.

  3. Strategi ini didasarkan pada garis tengah dan panjang, dan konten jangka pendek rentan terhadap dampak fluktuasi yang menimbulkan risiko stop loss.

Langkah-langkah manajemen risiko yang sesuai meliputi: optimalisasi aturan manajemen posisi, pengaturan garis peringatan risiko, jarak jarak penghentian yang tepat, dll.

Arah optimasi

Strategi ini memiliki ruang optimasi sebagai berikut:

  1. Pengaturan parameter yang dioptimalkan, saat ini parameter yang lebih subjektif, dapat diperkenalkan metode pembelajaran mesin untuk mengoptimalkan secara otomatis;

  2. Menambahkan modul manajemen posisi, yang memungkinkan untuk menyesuaikan posisi secara dinamis sesuai dengan situasi risiko;

  3. Optimalisasi mekanisme stop loss, seperti tracking stop loss, time stop loss, dan breakout stop loss.

Meringkaskan

Strategi ini mengintegrasikan berbagai aturan penilaian indikator, memungkinkan identifikasi cepat dan pelacakan terus menerus terhadap tren baru, dan memvalidasi efektivitas analisis multi-dimensi seperti analisis kuantitatif perdagangan yang menggabungkan tren dan dana. Strategi ini dapat digunakan secara indeks sebagai strategi dasar untuk melacak tren lintas-siklus, atau dapat dibangun menjadi strategi kuantitatif jangka menengah yang stabil setelah optimasi parameter dan modul.

Kode 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)