Chiến lược theo dõi xu hướng kép cổ điển

Tác giả:ChaoZhang, Ngày: 2023-11-01 16:54:29
Tags:

img

Tổng quan

Chiến lược này theo dõi xu hướng kép của cổ phiếu bằng cách tính điểm trục cổ điển và sử dụng chỉ số RSI để xác định hướng xu hướng hiện tại.

Nguyên tắc chiến lược

Chiến lược chủ yếu theo các bước sau để đạt được việc theo dõi xu hướng kép:

  1. Tính toán các điểm Pivot cổ điển bao gồm Pivot, S1, R1, S2, R2 v.v.

  2. Sử dụng chỉ số RSI để xác định hướng xu hướng giá. RSI trên 80 là vùng mua quá mức và dưới 20 là vùng bán quá mức.

  3. Đánh giá hướng xu hướng hàng ngày. Nếu giá đóng lớn hơn ngày trước R2, đó là xu hướng mạnh. Nếu giá đóng thấp hơn ngày trước S2, đó là xu hướng yếu.

  4. Hãy đưa ra quyết định giao dịch ngày hôm nay dựa trên hướng xu hướng hàng ngày, kết hợp các điểm Pivot và chỉ số RSI.

    • Nếu xu hướng hàng ngày mạnh (gần > R2), hãy tìm các điểm mua pullback dưới Pivot hoặc mua dưới S1.

    • Nếu xu hướng hàng ngày là yếu (kết thúc < S2), tìm điểm bán pullback trên Pivot hoặc bán trên R1.

  5. Đặt điểm dừng lỗ. Đối với xu hướng mạnh, dừng lỗ là ngày trước S1. Đối với xu hướng yếu, dừng lỗ là ngày trước R1.

Chiến lược đánh giá xu hướng trung dài hạn với các điểm Pivot, và sử dụng RSI v.v. để xác định xu hướng ngắn hạn và các điểm nhập cảnh. Điều này cho phép theo dõi xu hướng hai giá, phù hợp với giao dịch trung hạn.

Phân tích lợi thế

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

  1. Có khả năng theo dõi cả xu hướng trung hạn và ngắn hạn, thích nghi linh hoạt với những thay đổi của thị trường.

  2. Điểm Pivot có một số khả năng đánh giá xu hướng và có thể xác định hiệu quả xu hướng trung dài hạn.

  3. RSI vv có thể đánh giá mức mua quá mức / bán quá mức ngắn hạn, giúp xác định các điểm nhập khẩu cụ thể.

  4. Các quy tắc chiến lược là rõ ràng và đơn giản, dễ hiểu.

  5. Kiểm soát rủi ro được thực hiện với các điểm dừng lỗ rõ ràng.

Phân tích rủi ro

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

  1. Điểm Pivot có thể không dự đoán xu hướng trung dài hạn. Điều này có thể được cải thiện bằng cách điều chỉnh các tham số hoặc kết hợp với các chỉ số khác.

  2. Các thông số có thể được điều chỉnh hoặc sử dụng cùng với các chỉ số khác.

  3. Các điểm dừng lỗ có thể quá tùy tiện, không thể hoàn toàn tránh dừng lỗ bị tấn công.

  4. Việc rút vốn theo chiến lược có thể lớn hơn, cần chuẩn bị tâm lý và hỗ trợ vốn đầy đủ.

  5. Có nguy cơ giao dịch quá mức. Các điều kiện mở cửa có thể được điều chỉnh để tránh giao dịch quá mức.

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

Chiến lược có thể được tối ưu hóa trong các lĩnh vực sau:

  1. Hãy thử các kết hợp tham số khác nhau như điều chỉnh các tham số RSI, tối ưu hóa các tính toán Pivot Point vv để tìm các tham số tối ưu.

  2. Thêm hoặc kết hợp các chỉ số khác như KDJ, MACD vv để làm cho tín hiệu chính xác và đáng tin cậy hơn.

  3. Tối ưu hóa các chiến lược dừng lỗ ví dụ như dừng lỗ sau, dừng lỗ thoát vv để giảm nguy cơ dừng lỗ bị tấn công.

  4. Tối ưu hóa kích thước vị trí để hạn chế tác động của tổn thất vị trí duy nhất.

  5. Tối ưu hóa điều kiện nhập để tránh giao dịch quá mức.

  6. Kiểm tra hiệu quả trên các sản phẩm khác nhau và điều chỉnh các thông số.

  7. Thêm các chiến lược lấy lợi nhuận tự động để khóa lợi nhuận.

Tóm lại

Chiến lược này đánh giá xu hướng trung dài hạn với các điểm trục và sử dụng RSI vv để giúp xác định xu hướng ngắn hạn và các điểm nhập cảnh, đạt được theo dõi xu hướng kép của giá. Lý luận tổng thể rõ ràng và hợp lý, hoạt động tốt cho giao dịch trung hạn. Nhưng một số rủi ro về tín hiệu sai tồn tại, cần tối ưu hóa thêm các thông số, kiểm soát dừng lỗ nghiêm ngặt để giảm rủi ro và kiểm soát kích thước vị trí thích hợp để quản lý các khoản rút lớn hơn có thể xảy ra. Với tối ưu hóa và cải tiến liên tục, lợi nhuận đầu tư ổn định có thể đạt được.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="swing trade", shorttitle="vinay_swing", overlay=true)
pf = input(false,title="Show Filtered Pivots")
sd = input(true, title="Show Daily Pivots?")

//moving average
len = input(50, minval=1, title="Length")
src = input(close, title="Source")
out = ema(src, len)

//RSI INPUT
length = input( 7 )
overSold = input( 20 )
overBought = input( 80 )
price = close
vrsi = rsi(price, length)


// Classic Pivot
pivot = (high + low + close ) / 3.0
// Filter Cr
bull= pivot > (pivot + pivot[1]) / 2 + .0025
bear= pivot < (pivot + pivot[1]) / 2 - .0025
// Classic Pivots
r1 = pf and bear ? pivot + (pivot - low) : pf and bull ? pivot + (high - low) : pivot + (pivot - low)
s1 = pf and bull ? pivot - (high - pivot) : pf and bear ? pivot - (high - low) : pivot - (high - pivot)
r2 = pf ? na : pivot + (high - low)
s2 = pf ? na : pivot - (high - low)
BC = (high + low) / 2.0
TC = (pivot - BC) + pivot

//Pivot Average Calculation
smaP = sma(pivot, 3)

//Daily Pivots 
dtime_pivot = request.security(syminfo.tickerid, 'D', pivot[1])
dtime_pivotAvg = request.security(syminfo.tickerid, 'D', smaP[1])
dtime_r1 = request.security(syminfo.tickerid, 'D', r1[1]) 
dtime_s1 = request.security(syminfo.tickerid, 'D', s1[1]) 
dtime_r2 = request.security(syminfo.tickerid, 'D', r2[1]) 
dtime_s2 = request.security(syminfo.tickerid, 'D', s2[1])
dtime_BC = request.security(syminfo.tickerid, 'D', BC[1])
dtime_TC = request.security(syminfo.tickerid, 'D', TC[1])

offs_daily = 0
plot(sd and dtime_pivot ? dtime_pivot : na, title="Daily Pivot",style=circles, color=fuchsia,linewidth=1) 
plot(sd and dtime_r1 ? dtime_r1 : na, title="Daily R1",style=circles, color=#DC143C,linewidth=1) 
plot(sd and dtime_s1 ? dtime_s1 : na, title="Daily S1",style=circles, color=lime,linewidth=1) 
plot(sd and dtime_r2 ? dtime_r2 : na, title="Daily R2",style=circles, color=maroon,linewidth=1) 
plot(sd and dtime_s2 ? dtime_s2 : na, title="Daily S2",style=circles, color=#228B22,linewidth=1)
plot(sd and dtime_BC ? dtime_BC : na, title="Daily BC",style=circles, color=black,linewidth=1)
plot(sd and dtime_TC ? dtime_TC : na, title="Daily TC",style=circles, color=black,linewidth=1)

bull1=  (close > dtime_r2)
bull2= (low < dtime_pivot) or (low < dtime_s1) 
bull3= dtime_pivot > dtime_pivot[1]
bullishenglufing=bull2 and bull3
bullishenglufing1=bull1 and (close > out) and (crossover(vrsi, overBought))
longCondition = bull1[1] and ((low < dtime_TC) or (low < dtime_BC) or (low < dtime_s1))

bear1=  (close < dtime_s2)
bear2= (high > dtime_pivot) or (high < dtime_r1) 
bear3= dtime_pivot < dtime_pivot[1]
bearishenglufing=bear2 and bear3
bearishenglufing1=bear1 and (close < out) and (crossunder(vrsi, overSold))
shortCondition = bear1[1] and ((high > dtime_BC) or (high > dtime_TC) or (high > dtime_r1))

plotshape(bullishenglufing, style = shape.triangleup, location = location.belowbar, color = green, size = size.tiny)
plotshape(bearishenglufing, style = shape.triangledown, location = location.abovebar, color = red, size = size.tiny)

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)


Thêm nữa