
Chiến lược này kết hợp các chỉ số PSA để xác định xu hướng giá, chỉ số ADX để xác định xu hướng mạnh, chỉ số RSI để xác định khu vực mua bán quá mức và chỉ số CMF để xác định dòng tiền, xây dựng một chiến lược giao dịch định lượng theo dõi xu hướng xuyên chu kỳ. Chiến lược này xác định vị trí nhanh chóng khi giá bị phá vỡ để tạo ra một xu hướng xu hướng mới, và theo dõi liên tục trong xu hướng tiếp theo, đồng thời thiết lập các điều kiện lọc quy trình để giảm rủi ro giữ vị trí trong khi đảm bảo nắm bắt lợi nhuận của xu hướng chính.
Chính sách này có các quy định chính như sau:
Sử dụng chỉ số PSAR để xác định liệu giá có đang trong xu hướng tăng hay không, giá phá vỡ PSAR được coi là kết thúc xu hướng tăng và chuyển sang giảm;
Chỉ số RSI yêu cầu cao hơn đường trung bình 50, để lọc các đột phá giả tạo tạo ra khu vực bán tháo;
ADX yêu cầu cao hơn đường trung bình EMA của nó, cho thấy kết quả phân tích xu hướng có tín hiệu liên tục;
CMF yêu cầu lớn hơn 0, được coi là dòng tiền;
Một tín hiệu mua được tạo ra khi đáp ứng bốn điều kiện trên; một tín hiệu bán được tạo ra khi đáp ứng các điều kiện PSAR, RSI thấp hơn 50, ADX thấp hơn đường trung bình EMA và CMF nhỏ hơn 0.
Chiến lược tổng hợp xem xét xu hướng xu hướng giá, cường độ xu hướng, tình trạng mua bán quá mức và dòng tiền đến nhiều chiều thiết lập quy tắc giao dịch, thiết lập phán đoán logic nghiêm ngặt khi đánh giá tạo ra tín hiệu giao dịch, có thể lọc hiệu quả các trường hợp phá vỡ giả, đảm bảo nắm bắt xu hướng xu hướng có khả năng bền vững.
Chiến lược này có những lợi thế chính như sau:
Kết hợp với nhiều chỉ số thiết lập các quy tắc giao dịch, có thể ngăn chặn hiệu quả các đột phá giả mạo, đảm bảo chất lượng tín hiệu giao dịch;
Xác định và theo dõi nhanh chóng các xu hướng mới nổi để nắm bắt đầy đủ lợi ích của quá trình xu hướng;
Thiết lập quy trình theo dõi các điều kiện lọc để kiểm soát rủi ro hiệu quả và đảm bảo hiệu quả theo dõi;
Kết hợp với các chỉ số đánh giá cường độ của xu hướng, bạn có thể tránh được tình trạng khó khăn trong việc điều chỉnh.
Chiến lược này có những rủi ro chính như sau:
Một chiến lược duy nhất dễ gây rủi ro và cần điều chỉnh vị trí để kiểm soát rủi ro tổng thể;
Trong quá trình theo dõi, cần chú ý đến sự thay đổi của điều kiện lọc để tránh Loss Cut khi điều kiện bị hủy bỏ;
Chiến lược này chủ yếu dựa trên đường dài và đường trung bình, các nội dung ngắn hạn dễ bị ảnh hưởng bởi sự biến động và có nguy cơ 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 quản lý vị trí, thiết lập đường dây cảnh báo rủi ro, khoảng cách đường dừng lỗ được nới lỏng thích hợp.
Chính sách này có thể được tối ưu hóa:
Tối ưu hóa thiết lập tham số, thiết lập tham số hiện nay là chủ quan hơn, có thể giới thiệu phương pháp học máy để tối ưu hóa tự động;
Thêm mô-đun quản lý vị trí, có thể điều chỉnh vị trí theo tình trạng rủi ro;
Tăng tối ưu hóa các cơ chế dừng lỗ, chẳng hạn như dừng theo dõi, dừng thời gian, phá vỡ dừng lỗ.
Chiến lược này tích hợp nhiều quy tắc đánh giá chỉ số, thực hiện định vị nhanh chóng và theo dõi liên tục các xu hướng mới nổi, xác nhận hiệu quả của phân tích đa chiều như xu hướng và tài chính kết hợp với giao dịch định lượng. Chiến lược này có thể được sử dụng theo chỉ số như là chiến lược cơ bản để theo dõi xu hướng xuyên thời kỳ, hoặc có thể được xây dựng thành chiến lược định lượng dài hạn trung bình ổn định sau khi tối ưu hóa tham số và mô-đun.
/*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)