Chiến lược xoay vòng động lượng đa yếu tố


Ngày tạo: 2023-10-25 11:52:19 sửa đổi lần cuối: 2023-10-25 11:52:19
sao chép: 0 Số nhấp chuột: 754
1
tập trung vào
1617
Người theo dõi

Chiến lược xoay vòng động lượng đa yếu tố

Tổng quan

Chiến lược này tích hợp các yếu tố RSI, MACD trung bình, Bollinger Bands và Stop Loss để thực hiện giao dịch luân chuyển động đa yếu tố. Chiến lược này đầu tiên đánh giá xem liệu nhiều chỉ số kỹ thuật có phát ra tín hiệu mua hoặc bán cùng một lúc hay không, và nếu có, thực hiện giao dịch mua hoặc bán tương ứng.

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

Chính sách bao gồm các phần sau:

  1. Xác định yếu tố

    • RSI: tính toán RSI 14 chu kỳ để xác định mức giá dưới đường mua hoặc trên đường bán
    • Dãy TD: tính số ngày dừng giá để xác định điều kiện mua và bán
    • MACD: tính MACD và MACD lịch sử để xác định điều kiện mua và bán
    • Đường Brin: Xây dựng đường Brin 20 ngày để xác định giá có chạm đường Brin không
  2. Vào và ra sân

    • Điều kiện mua: mua khi chuỗi RSI, MACD và TD đồng thời phát ra tín hiệu mua
    • Điều kiện bán: Bán khi chuỗi RSI, MACD và TD đồng thời phát ra tín hiệu bán
    • Ngăn chặn: Ngăn chặn di động với số điểm cố định hoặc phần trăm
    • Stop Loss: thiết lập điểm tổn thất tối đa và thực hiện stop loss
  3. Tối ưu hóa chiến lược

    • Điều chỉnh tham số RSI: tham số chu kỳ để tối ưu hóa RSI
    • Điều chỉnh chu kỳ MA: tham số chu kỳ tối ưu hóa đường trung bình
    • Điều chỉnh điều kiện vào: tăng hoặc giảm tín hiệu vào
    • Thêm các yếu tố khác: kết hợp nhiều chỉ số kỹ thuật và yếu tố thống kê

Phân tích lợi thế chiến lược

  • Sự kết hợp của nhiều yếu tố đảm bảo tính chính xác của việc nhập học

Chiến lược này không chỉ xem xét một chỉ số kỹ thuật duy nhất, mà là kết hợp nhiều yếu tố như RSI, MACD, chuỗi TD để giảm tín hiệu sai do chỉ số duy nhất và cải thiện độ chính xác của nhập cảnh.

  • Tính năng động, nắm bắt xu hướng

Các chỉ số như RSI, MACD có tính năng động rõ ràng hơn, có thể nắm bắt được sự thay đổi xu hướng của giá cổ phiếu. Những chỉ số này có độ nhạy cảm hơn so với các chỉ số theo dõi xu hướng như đường trung bình.

  • Cơ chế ngăn chặn, kiểm soát rủi ro

Chấm dừng di động có thể dừng lại theo thời gian và hoạt động, để khóa lợi nhuận tốt hơn. Thiết lập dừng lỗ có thể kiểm soát tổn thất đơn.

  • Chiến lược rõ ràng và đơn giản

Chính sách này kết hợp các chỉ số kỹ thuật thông thường, có một số tính phổ quát. Các quy tắc tương đối đơn giản, rõ ràng, dễ hiểu và vận hành.

Phân tích rủi ro chiến lược

  • Hành động đa đầu ít hiệu quả hơn

Chiến lược này được sử dụng để điều khiển thị trường ngược và thuộc chiến lược đảo ngược. Trong thị trường bò, việc sử dụng chiến lược này có thể bị hỏng thường xuyên và không hiệu quả.

  • Có thể giao dịch quá thường xuyên

Nếu các tham số được đặt quá nhạy cảm, tần số giao dịch có thể quá cao, làm tăng chi phí giao dịch và mất điểm trượt.

  • Chỉ số phát tán rủi ro

Chiến lược này phụ thuộc vào nhiều chỉ số tín hiệu đồng hướng, nhưng đôi khi các chỉ số có thể khác nhau, do đó phát ra tín hiệu sai.

  • Hạn chế thiệt hại theo đuổi rủi ro

Thiết lập điểm dừng cố định có thể bị phá vỡ, bạn có thể thiết lập dừng động hoặc xem xét thay đổi cổ phiếu để tránh rủi ro này.

Hướng tối ưu hóa chiến lược

  • Tối ưu hóa tham số, giảm tần suất giao dịch

Bạn có thể thử nghiệm các tham số của RSI và tham số chu kỳ của đường trung bình để tìm ra sự kết hợp với tần suất giao dịch thấp hơn.

  • Tăng số liệu thống kê, tăng hiệu quả

Có thể kết hợp các đặc tính thống kê của cổ phiếu, chẳng hạn như biến động, tính thanh khoản, để thiết lập các tham số, tăng hiệu quả chiến lược.

  • Kết hợp các chỉ số toàn thị trường như VIX

Các tham số của chiến lược có thể được điều chỉnh dựa trên chỉ số hoảng loạn toàn thị trường như VIX, giảm tần suất giao dịch khi thị trường hoảng loạn.

  • Kiểm tra thời gian giữ vị trí khác nhau

Có thể thử nghiệm các chu kỳ giữ vị trí khác nhau để đánh giá tác động của việc giữ dài hạn hoặc chuyển động ngắn hạn đối với hiệu quả chiến lược.

  • Tối ưu hóa và thử nghiệm chiến lược dừng lỗ

Có thể nghiên cứu các phương pháp dừng động lực nâng cao hơn để đo lại hiệu quả.

Tóm tắt

Chiến lược này xem xét tổng hợp nhiều chỉ số kỹ thuật, sử dụng dừng lỗ di động để khóa lợi nhuận và kiểm soát rủi ro, dựa trên việc đảm bảo độ chính xác cao hơn. Ý tưởng chiến lược đơn giản, rõ ràng, dễ hiểu hoạt động, có thể nâng cao hiệu quả hơn nữa bằng cách tối ưu hóa tham số và ưu tiên chỉ số. Tuy nhiên, chiến lược này phù hợp hơn với thị trường ngược và xung đột, hiệu quả có thể kém hơn trong tình huống tăng vọt liên tục.

Mã nguồn chiến lược
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("RSI, TD Seq, MACD, BB Strategy - Calculation Trailing Profit",overlay=true)


RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") 


TD = close > close[4] ?nz(TD[1])+1:0
TS = close < close[4] ?nz(TS[1])+1:0
TDUp = TD - valuewhen(TD < TD[1], TD , 1 )
TDDn = TS - valuewhen(TS < TS[1], TS , 1 )
TDcheckUP = iff(TD == 2, true, false)
TDCheckDOWN = iff(TS == 2, true, false)

[_, _, histLine] = macd(close, 12, 26, 9)
MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0  and histLine[4] > 0, true, false)
MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false)

RSICal = rsi(close, 14)
RSICalNewUp = 50 + RSIDifference
RSICalNewDown = 50 - RSIDifference
RSICheckUp = iff(RSICal <= RSICalNewUp, true, false)
RSICheckDown = iff(RSICal >= RSICalNewDown, true, false)

basis = sma(close, 20)
dev = 2 * stdev(close, 20)
upperBB = basis + dev
lowerBB = basis - dev
BBCheckUp = iff(close > upperBB, true, false)
BBCheckDown = iff(close < lowerBB, true, false)
//BBCheckUp = false
//BBCheckDown = false


BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false)
SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false)


ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) 
ProfitTrailingA = input(10, minval=0, maxval=10000, title="Profit", step=0.5) 
useStopLoss = input(false, title="Use Stop Loss?")
LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) 
colB = input(100, minval=0, maxval=100, title="0-show / 100-hide Strategy", step=100) 

ProfitStrat = ProfitStratA * 10
ProfitTrailing = ProfitTrailingA * 10
Lossstrat = useStopLoss ? LossstratA * 10 : 1000000

if (strategy.position_size > 0)
    strategy.exit("BuyClose", "Buy", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat)
    
    
if (strategy.position_size < 0)   
    strategy.exit("SellClose", "Sell", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) 
    

if (BuyCheck == true and strategy.position_size == 0)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    


if (SellCheck == true and strategy.position_size == 0)
    strategy.entry("Sell", strategy.short, comment="Short Entry")
    


plotshape(BuyCheck, color=blue, transp=colB, style=shape.arrowup, text="Buy\n", location=location.belowbar)
plotshape(SellCheck, color=orange, transp=colB, style=shape.arrowdown, text="Sell\n", location=location.abovebar)