Chiến lược xoay động nhiều yếu tố

Tác giả:ChaoZhang, Ngày: 2023-10-25 11:52:19
Tags:

img

Tổng quan

Chiến lược này kết hợp RSI, MACD, Bollinger Bands và giới hạn các yếu tố tăng / giảm để thực hiện giao dịch xoay chuyển động nhiều yếu tố. Chiến lược đầu tiên đánh giá liệu nhiều chỉ số kỹ thuật có cung cấp tín hiệu mua hoặc bán đồng thời hay không. Nếu có, các hoạt động mua hoặc bán tương ứng sẽ được thực hiện. Trong khi đó, chiến lược áp dụng dừng chuyển động lợi nhuận và dừng lỗ để khóa lợi nhuận và kiểm soát rủi ro.

Chiến lược logic

Các thành phần chính của chiến lược này là:

  1. Đánh giá yếu tố

    • RSI: Tính toán RSI 14 giai đoạn và đánh giá xem nó thấp hơn đường mua hoặc cao hơn đường bán
    • TD Sequence: Tính toán số ngày tăng/giảm giới hạn và đánh giá xem nó có đáp ứng các điều kiện mua/bán không
    • MACD: Tính toán MACD và Histogram MACD để đánh giá các điều kiện mua / bán
    • Bollinger Bands: Tính toán BB 20 giai đoạn và đánh giá liệu giá có chạm vào BBs dải trên hoặc dưới
  2. Nhập và xuất cảnh

    • Điều kiện mua: RSI, MACD, TD Dòng dẫn cung cấp tín hiệu mua cùng nhau
    • Điều kiện bán: RSI, MACD, TD Sequence cung cấp tín hiệu bán cùng nhau
    • Dừng lợi nhuận: Sử dụng điểm cố định hoặc tỷ lệ phần trăm như mức dừng lợi nhuận cuối cùng
    • Stop loss: Đặt các điểm mất mát tối đa cho stop loss
  3. Tối ưu hóa chiến lược

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

Phân tích lợi thế

  • Nhiều yếu tố cải thiện độ chính xác nhập

    Chiến lược này xem xét nhiều yếu tố như RSI và MACD thay vì chỉ một chỉ số duy nhất. Điều này làm giảm các tín hiệu sai và cải thiện độ chính xác đầu vào.

  • Đặc điểm động lực ghi lại xu hướng

    Các chỉ số như RSI và MACD có đặc điểm động lực rõ ràng, nắm bắt sự thay đổi xu hướng giá. Chúng nhạy cảm hơn so với các chỉ số theo xu hướng như MA.

  • Cơ chế dừng lợi nhuận/mất lỗ kiểm soát rủi ro

    Động stop profit có thể khóa trong lợi nhuận theo động thị trường.

  • Logic đơn giản và rõ ràng

    Chiến lược kết hợp các chỉ số kỹ thuật chung và có một số tính phổ quát.

Phân tích rủi ro

  • Hiệu suất kém trong thị trường tăng

    Chiến lược tập trung vào giao dịch đảo ngược trung bình. Nó có thể kích hoạt dừng lỗ thường xuyên trong thị trường tăng.

  • Tần suất giao dịch có khả năng quá cao

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

  • Rủi ro chênh lệch giữa các chỉ số

    Chiến lược dựa trên các tín hiệu nhất quán trên các chỉ số, nhưng đôi khi sự khác biệt có thể xảy ra, dẫn đến các tín hiệu sai.

  • Stop loss đang được thâm nhập

    Các điểm dừng lỗ cố định có thể được xâm nhập.

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

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

    Kiểm tra các thông số RSI và thời gian MA để tìm các kết hợp với tần suất giao dịch thấp hơn.

  • Thêm các yếu tố thống kê để cải thiện hiệu quả

    Kết hợp các số liệu cụ thể về cổ phiếu như biến động và thanh khoản để thiết lập các thông số và cải thiện hiệu quả.

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

    Điều chỉnh các thông số chiến lược dựa trên các chỉ số hoảng loạn thị trường như VIX để giảm tần suất giao dịch trong các vụ sụp đổ trên toàn thị trường.

  • Kiểm tra các thời gian giữ khác nhau

    Kiểm tra giữ dài hạn so với xoay ngắn hạn để xem tác động của chúng đến hiệu suất chiến lược.

  • Tối ưu hóa và kiểm tra dừng lợi nhuận/mất

    Nghiên cứu các kỹ thuật dừng lợi nhuận / lỗ động tiên tiến hơn và kiểm tra lại chúng.

Tóm lại

Chiến lược này kết hợp nhiều chỉ số kỹ thuật và áp dụng stop profit/loss để khóa lợi nhuận và kiểm soát rủi ro trong khi đảm bảo độ chính xác nhập cảnh cao. Lý thuyết đơn giản và rõ ràng. Hiệu suất có thể được cải thiện hơn nữa thông qua tối ưu hóa tham số và lựa chọn chỉ số. Nhưng chiến lược này phù hợp hơn với thị trường đảo ngược trung bình và giới hạn phạm vi. Nó có thể hoạt động kém hơn trong xu hướng tăng liên tục. Tóm lại, đây là một chiến lược đà đảo ngược trung bình đa yếu tố điển hình cung cấp ý tưởng và tham chiếu cho giao dịch xoay cổ phiếu.


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













Thêm nữa