Tài nguyên đang được tải lên... tải...

Chiến lược Bollinger Momentum Breakout nhiều khung thời gian với trung bình di chuyển Hull

Tác giả:ChaoZhang, Ngày: 2024-11-29 17:00:00
Tags:VWMAHMABBMTFRSI

img

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 các băng Bollinger, trung bình chuyển động Hull và trung bình chuyển động cân đối để tạo ra các tín hiệu giao dịch. Chiến lược hoạt động chủ yếu trên khung thời gian 1 giờ trong khi tích hợp dữ liệu thị trường từ các khoảng thời gian 5 phút, 1 giờ và 3 giờ. Nó sử dụng nhiều chỉ số kỹ thuật để xác nhận cơ hội giao dịch và thực hiện các cơ chế dừng lỗ và lấy lợi nhuận năng động, tự động điều chỉnh kích thước vị trí dựa trên vốn chủ sở hữu tài khoản để kiểm soát rủi ro hiệu quả.

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

Khái niệm cơ bản dựa trên xác nhận chéo của nhiều chỉ số kỹ thuật. Chiến lược theo dõi mối quan hệ giá với các đường trung bình động khác nhau trên nhiều khung thời gian, bao gồm VWMA 5 phút, VWMA 1 giờ và HMA 3 giờ. Các tín hiệu dài được tạo ra khi giá vượt qua ngưỡng trên trong khi ở trên tất cả các chỉ số khung thời gian; ngược lại, các tín hiệu ngắn xảy ra khi giá vượt qua ngưỡng dưới trong khi ở dưới tất cả các chỉ số. Chiến lược kết hợp các tính toán lệch để thiết lập các ngưỡng bước vào và bước ra năng động, tăng tính linh hoạt giao dịch.

Ưu điểm chiến lược

  1. Phân tích nhiều khung thời gian làm giảm rủi ro phá vỡ sai và cải thiện độ tin cậy tín hiệu
  2. Các thiết lập dừng lỗ và lấy lợi nhuận năng động thích nghi với các điều kiện thị trường khác nhau
  3. Định dạng vị trí dựa trên vốn chủ sở hữu tài khoản đảm bảo sử dụng vốn hợp lý
  4. Các cơ chế thoát hàng loạt cung cấp khả năng thích nghi chiến lược
  5. Giao diện đồ họa cung cấp hình ảnh tín hiệu giao dịch rõ ràng để phân tích
  6. Tích hợp nhiều chỉ số kỹ thuật trưởng thành làm tăng độ chính xác quyết định giao dịch

Rủi ro chiến lược

  1. Nhiều chỉ số có thể dẫn đến tín hiệu giao dịch chậm
  2. Có thể xảy ra các vụ phá vỡ sai thường xuyên trên các thị trường khác nhau
  3. Tỷ lệ dừng lỗ và lợi nhuận cố định có thể không phù hợp với tất cả các điều kiện thị trường
  4. Xử lý dữ liệu nhiều khung thời gian có thể làm tăng sự phức tạp của chiến lược
  5. Rủi ro trượt cao trong thị trường biến động

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

  1. Thiết lập các chỉ số biến động cho các điều chỉnh dừng lỗ và lợi nhuận động
  2. Thêm nhận dạng điều kiện thị trường để điều chỉnh tham số
  3. Tối ưu hóa bộ lọc tín hiệu để giảm tổn thất đột phá giả
  4. Kết hợp phân tích khối lượng để cải thiện độ tin cậy tín hiệu đột phá
  5. Phát triển các cơ chế tối ưu hóa tham số thích nghi để tăng cường sự ổn định

Tóm lại

Chiến lược này xây dựng một hệ thống giao dịch tương đối hoàn chỉnh thông qua phân tích nhiều khung thời gian và nhiều chỉ số kỹ thuật.


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


Có liên quan

Thêm nữa