Xu hướng trong ngày sau chiến lược định lượng dựa trên lọc tình trạng đa chỉ số

Tác giả:ChaoZhang, Ngày: 2023-12-15 15:59:37
Tags:

img

Tổng quan

Chiến lược này kết hợp PSAR để đánh giá xu hướng giá, ADX để đánh giá sức mạnh xu hướng, RSI để xác định các khu vực mua quá nhiều và bán quá nhiều và CMF để đánh giá dòng tiền để xây dựng một chiến lược giao dịch định lượng theo xu hướng trong ngày qua các chu kỳ. Nó có thể nhanh chóng xác định hướng xu hướng mới khi giá vượt qua sự củng cố và hình thành xu hướng mới, và tiếp tục theo dõi xu hướng sau đó. Trong khi đảm bảo rằng lợi nhuận xu hướng chính được nắm bắt, điều kiện lọc cũng được thiết lập trong quá trình để giảm rủi ro nắm giữ.

Nguyên tắc

Các quy tắc đánh giá chính của chiến lược này là:

  1. Sử dụng chỉ số PSAR để đánh giá liệu giá có đang trong xu hướng tăng hay không.

  2. Yêu cầu chỉ số RSI ở trên điểm trung bình của 50 để lọc ra các sự đột phá sai xảy ra trong các khu vực quá bán.

  3. Yêu cầu ADX ở trên đường EMA của nó, cho thấy một tín hiệu bền vững trong phân tích xu hướng.

  4. Yêu cầu CMF lớn hơn 0, đánh giá nguồn vốn tăng.

Các tín hiệu mua được tạo ra khi tất cả bốn điều kiện trên được đáp ứng. Các điều kiện bán xảy ra khi PSAR tăng trên giá, RSI giảm xuống dưới 50, ADX giảm xuống dưới EMA và CMF trở nên nhỏ hơn 0.

Chiến lược này xem xét toàn diện hướng xu hướng giá, sức mạnh xu hướng, tình trạng mua quá mức / bán quá mức và dòng tiền khi thiết lập các quy tắc giao dịch. Bằng cách thiết lập các quy tắc logic nghiêm ngặt khi tạo ra các tín hiệu giao dịch, các sự đột phá sai có thể được lọc hiệu quả và có khả năng cao xu hướng bền vững có thể được nắm bắt.

Ưu điểm

Những lợi thế chính của chiến lược này bao gồm:

  1. Kết hợp nhiều chỉ số trong việc thiết lập các quy tắc giao dịch có thể ngăn chặn hiệu quả các sự phá vỡ sai và đảm bảo chất lượng tín hiệu.

  2. Nhanh chóng xác định hướng xu hướng đang nở và theo dõi cho phép nắm bắt hầu hết lợi nhuận xu hướng.

  3. Thiết lập các điều kiện lọc quy trình có thể kiểm soát hiệu quả rủi ro và đảm bảo hiệu quả theo dõi.

  4. Xem xét sức mạnh xu hướng giúp tránh tắc nghẽn phạm vi giao dịch.

Phân tích rủi ro

Những rủi ro chính của chiến lược này bao gồm:

  1. Một sự tích lũy chiến lược duy nhất gây ra rủi ro danh mục đầu tư, đòi hỏi kích thước vị trí thích hợp.

  2. Theo dõi chặt chẽ sự thay đổi điều kiện lọc trong quá trình theo dõi để tránh mất mát khi hủy bỏ.

  3. Chiến lược trung hạn / dài hạn này có thể bị gián đoạn ngắn hạn bởi biến động và có rủi ro dừng lỗ.

Các biện pháp quản lý rủi ro tương ứng bao gồm: tối ưu hóa các quy tắc kích thước vị trí, thiết lập các đường cảnh báo rủi ro và mở rộng khoảng cách dừng, v.v.

Hướng dẫn tối ưu hóa

Các không gian tối ưu hóa bao gồm:

  1. Tối ưu hóa tham số thông qua máy học cho các thiết lập chủ quan hiện tại.

  2. Thêm mô-đun định kích thước vị trí dựa trên rủi ro.

  3. Cải thiện các cơ chế dừng, ví dụ như dừng kéo dài, dừng thời gian hoặc dừng đột phá.

Kết luận

Chiến lược kết hợp các chỉ số này đã được chứng minh là hiệu quả trong việc nhanh chóng xác định và theo dõi các xu hướng mới nổi, xác nhận giao dịch định lượng dựa trên nhiều chiều như xu hướng và quỹ. Là một cơ sở, nó có thể được lập chỉ mục qua các chu kỳ. Với điều chỉnh tham số và cải tiến mô-đun, nó cũng có thể trở thành một chiến lược ổn định trung hạn / dài hạn.


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

Thêm nữa