Chiến lược đột phá động lượng Bollinger đa kỳ kết hợp với chiến lược đường trung bình động Hull

VWMA HMA BB MTF RSI
Ngày tạo: 2024-11-29 17:00:00 sửa đổi lần cuối: 2024-11-29 17:00:00
sao chép: 0 Số nhấp chuột: 507
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá động lượng Bollinger đa kỳ kết hợp với chiến lược đường trung bình động Hull

Tổng quan

Chiến lược này là một hệ thống giao dịch dựa trên phân tích nhiều khung thời gian, kết hợp với việc tạo ra tín hiệu giao dịch từ các dải Bollinger, trung bình di chuyển Hull và trung bình di chuyển trọng lượng. Chiến lược này hoạt động chủ yếu trên khung thời gian 1 giờ, đồng thời tích hợp dữ liệu thị trường trong ba chu kỳ thời gian 5 phút, 1 giờ và 3 giờ, xác nhận cơ hội giao dịch thông qua sự kết hợp của nhiều chỉ số kỹ thuật.

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

Lập luận cốt lõi của chiến lược dựa trên xác nhận chéo của nhiều chỉ số kỹ thuật. Đồng thời theo dõi mối quan hệ của giá với các loại đường trung bình trên nhiều chu kỳ thời gian, bao gồm trung bình di chuyển có trọng lượng trong chu kỳ 5 phút (VWMA), trung bình di chuyển có trọng lượng trong chu kỳ 1 giờ và trung bình di chuyển của Hull trong chu kỳ 3 giờ (HMA).

Lợi thế chiến lược

  1. Phân tích chu kỳ thời gian đa dạng làm giảm nguy cơ đột phá giả và tăng độ tin cậy của tín hiệu giao dịch
  2. Cài đặt dừng lỗ động có thể thích ứng với các môi trường thị trường khác nhau
  3. Quản lý vị trí dựa trên quyền lợi tài khoản đảm bảo sử dụng hợp lý tiền
  4. Sự lựa chọn nhiều cơ chế ra sân làm tăng khả năng thích ứng của chiến lược
  5. Giao diện đồ họa cung cấp tín hiệu giao dịch rõ ràng để phân tích và phán đoán
  6. Tích hợp nhiều chỉ số kỹ thuật đã được phát triển để cải thiện độ chính xác của quyết định giao dịch

Rủi ro chiến lược

  1. Việc sử dụng nhiều chỉ số có thể dẫn đến tín hiệu giao dịch bị trì hoãn
  2. Tín hiệu đột phá sai thường xuyên có thể xảy ra trong một thị trường biến động
  3. Tỷ lệ Stop Loss cố định có thể không phù hợp với tất cả các điều kiện thị trường
  4. Quá trình xử lý dữ liệu nhiều chu kỳ thời gian có thể làm tăng sự phức tạp trong hoạt động của chiến lược
  5. Có thể có rủi ro trượt lớn trong thị trường có biến động cao

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

  1. Giới thiệu các chỉ báo biến động để điều chỉnh mức chốt lời và dừng lỗ một cách linh hoạt
  2. Thêm chức năng nhận diện môi trường thị trường, sử dụng các thiết lập tham số khác nhau trong các trạng thái thị trường khác nhau
  3. Tối ưu hóa cơ chế lọc tín hiệu, giảm thiệt hại do đột phá giả
  4. Thêm phân tích khối lượng giao dịch để tăng độ tin cậy của tín hiệu đột phá
  5. Phát triển cơ chế tối ưu hóa tham số thích ứng, tăng sự ổn định của chiến lược

Tóm tắt

Chiến lược này xây dựng một hệ thống giao dịch tương đối toàn diện thông qua việc kết hợp phân tích nhiều chu kỳ thời gian và nhiều chỉ số kỹ thuật. Ưu điểm của chiến lược là độ tin cậy của tín hiệu và hiệu quả của quản lý rủi ro, nhưng đồng thời cũng có các vấn đề như trì trệ tín hiệu và tối ưu hóa tham số. Bằng cách tối ưu hóa và cải tiến liên tục, chiến lược có thể duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.

Mã nguồn chiến lược
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("1H- 280, 2.7", overlay=true)


// Fetch the indicator values from different timeframes
vwma5 = request.security(syminfo.tickerid, "5", ta.wma(close, 233), lookahead = barmerge.lookahead_off)
vwma_hourly = request.security(syminfo.tickerid, "60", ta.wma(close, 89), lookahead = barmerge.lookahead_off)
hullma155_3h = request.security(syminfo.tickerid, "180", ta.hma(close, 155), lookahead = barmerge.lookahead_off)


// Calculate the deviation value
deviation = close * 0.032


// Initialize the signal variables
var float signalLine = na
var color lineColor = na


// Long Entry Conditions
longCondition_5min = close > vwma5
longCondition_hourly = close > vwma_hourly
longCondition_3h = close > hullma155_3h


// Short Entry Conditions
shortCondition_5min = close < vwma5
shortCondition_hourly = close < vwma_hourly
shortCondition_3h = close < hullma155_3h


// Long Entry
if longCondition_5min and longCondition_hourly and longCondition_3h
    signalLine := close + deviation
    lineColor := color.rgb(0, 255, 0, 1)


// Short Entry
if shortCondition_5min and shortCondition_hourly and shortCondition_3h
    signalLine := close - deviation
    lineColor := color.rgb(255, 0, 0, 1)


// Plotting the connecting line
plot(signalLine, title="Signal Line", color=lineColor, linewidth=1, style=plot.style_line)


// Colorize the signal line
bgcolor(signalLine > close ? color.rgb(0, 255, 0, 99) : color.rgb(255, 0, 0, 99), transp=90)



// Strategy settings
useTPSL = input(true, "Use TP/SL for closing long positions?")
useDownbreakOutbreak = input(false, "Use Downbreak and Outbreak for closing positions?")
useM7FClosing = input(false, "Use M7F Signal for closing positions?")


length1 = input.int(280, minval=1)
src = input(close, title="Source")
mult = input.float(2.7, minval=0.001, maxval=50, title="StdDev")


basis = ta.vwma(src, length1)
dev = mult * ta.stdev(src, length1)
upper = basis + dev
lower = basis - dev


offset = input.int(0, "Offset", minval = -500, maxval = 500)


length2 = input.int(55, minval=1)
src2 = input(close, title="Source")
hullma = ta.wma(2 * ta.wma(src2, length2 / 2) - ta.wma(src2, length2), math.floor(math.sqrt(length2)))


hullmacrosslower = ta.crossover(hullma, lower)
hullmacrossupper = ta.crossunder(hullma, upper)


breakout = ta.crossover(ohlc4, upper)
breakdown = ta.crossunder(ohlc4, upper)
outbreak = ta.crossover(ohlc4, lower)
downbreak = ta.crossunder(ohlc4, lower)


// Calculate position size and leverage
margin_pct = 1
leverage = 1
position_size = strategy.equity * margin_pct
qty = position_size / close / leverage


// Define take profit and stop loss levels
take_profit = 0.14
stop_loss = 0.06


// Opening a long position
if breakout
    strategy.entry("Long", strategy.long, qty, limit=close*(1+take_profit), stop=close*(1-stop_loss))


// Opening a short position
if downbreak
    strategy.entry("Short", strategy.short, qty, limit=close*(1-take_profit), stop=close*(1+stop_loss))


// Closing positions based on chosen method
if useTPSL
    // Using TP/SL for closing long positions
    if strategy.position_size > 0 and breakdown
        strategy.close("Long", comment="Breakdown")
else if useDownbreakOutbreak
    // Using Downbreak and Outbreak for closing positions
    if strategy.position_size > 0 and (breakdown or downbreak)
        strategy.close("Long", comment="Breakdown")
    if strategy.position_size < 0 and (outbreak or downbreak)
        strategy.close("Short", comment="Outbreak")
else if useM7FClosing
    // Using M7F Signal for closing positions
    if strategy.position_size > 0 and (signalLine < close)
        strategy.close("Long", comment="M7F Signal")
    if strategy.position_size < 0 and (signalLine > close)
        strategy.close("Short", comment="M7F Signal")


// Plotting entry signals
plotshape(hullmacrosslower, title="High Bear Volatility", style=shape.arrowup, text="^^^^^", color=color.rgb(75, 202, 79), location=location.belowbar)
plotshape(hullmacrossupper, title="High Bull Volatility", style=shape.arrowdown, text="-----", color=color.rgb(215, 72, 72), location=location.abovebar)
plotshape(breakout ? 1 : na, title="Breakout", style=shape.arrowup, text="", color=color.rgb(75, 202, 79), location=location.belowbar, size=size.tiny)
plotshape(breakdown ? 1 : na, title="Breakdown", style=shape.arrowdown, text="", color=color.rgb(201, 71, 71), location=location.abovebar, size=size.tiny)
plotshape(outbreak ? 1 : na, title="Outbreak", style=shape.arrowup, text="", color=color.rgb(0, 110, 255), location=location.belowbar, size=size.tiny)
plotshape(downbreak ? 1 : na, title="Downbreak", style=shape.arrowdown, text="", color=color.rgb(255, 111, 0), location=location.abovebar, size=size.tiny)