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ữ.
Các quy tắc đánh giá chính của chiến lược này là:
Sử dụng chỉ số PSAR để đánh giá liệu giá có đang trong xu hướng tăng hay không.
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.
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.
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.
Những lợi thế chính của chiến lược này bao gồm:
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.
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.
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.
Xem xét sức mạnh xu hướng giúp tránh tắc nghẽn phạm vi giao dịch.
Những rủi ro chính của chiến lược này bao gồm:
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.
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ỏ.
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.
Các không gian tối ưu hóa bao gồm:
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.
Thêm mô-đun định kích thước vị trí dựa trên rủi ro.
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á.
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)