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

Chiến lược phá vỡ lá cờ bò dựa trên tỷ lệ rủi ro-lợi nhuận và phân tích kỹ thuật

Tác giả:ChaoZhang, Ngày: 2024-05-28 10:47:51
Tags:

img

Tổng quan

Chiến lược này dựa trên mô hình cờ bò. Nó mua khi giá phá vỡ trên mức cao của phạm vi cờ, đặt dừng lỗ ở mức thấp của phạm vi cờ, và đặt mục tiêu lợi nhuận theo tỷ lệ rủi ro-lợi nhuận. Chiến lược sử dụng các hàm giá cao nhất và thấp nhất để xác định phạm vi cờ và xác định sự phá vỡ bằng cách so sánh giá đóng hiện tại với giá cao nhất của nến trước đó.

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

  1. Xác định mô hình cờ cao: Tính toán mức cao và thấp của phạm vi cờ bằng cách sử dụng các hàm giá cao nhất và thấp nhất, và xác định xem giá hiện tại có phá vỡ trên mức cao cờ hay không.
  2. Nhập: Nếu giá đóng cửa hiện tại vượt quá giá cao nhất của nến trước, và giá cao nhất của nến trước thấp hơn mức cao nhất, sau đó mua.
  3. Stop Loss: Giá dừng lỗ được đặt ở mức thấp trừ giá đệm.
  4. Lấy Lợi nhuận: Tính toán giá mục tiêu dựa trên tỷ lệ rủi ro-lợi nhuận. Giá mục tiêu = Giá nhập + (Giá nhập - Giá dừng lỗ) * Tỷ lệ rủi ro-lợi nhuận

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

  1. Dựa trên mô hình cờ bò cổ điển, nó có thể nắm bắt các cơ hội giảm trong xu hướng mạnh.
  2. Stop loss được đặt ở mức thấp nhất, làm cho rủi ro có thể kiểm soát được.
  3. Sử dụng tỷ lệ rủi ro-lợi nhuận để thiết lập giá mục tiêu và tìm kiếm lợi nhuận cao hơn.
  4. Khái niệm mã là rõ ràng và sử dụng các chức năng tích hợp của TradingView, làm cho nó dễ hiểu và sửa đổi.

Rủi ro chiến lược

  1. Trong một thị trường biến động hoặc khi xu hướng không rõ ràng, giá có thể nhanh chóng đảo ngược sau khi phá vỡ cờ, dẫn đến giảm đáng kể.
  2. Đặt giá trị đệm không chính xác có thể dẫn đến việc dừng lỗ sớm.
  3. Tỷ lệ rủi ro-lợi nhuận thực tế có thể không đạt được giá trị đã thiết lập.
  4. Chiến lược có thể thất bại cho một số mẫu cờ biến dạng.

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

  1. Xem xét thêm các điều kiện vào các tín hiệu lọc, chẳng hạn như thay đổi khối lượng giao dịch, hướng trung bình động, v.v., để cải thiện chất lượng tín hiệu.
  2. Tối ưu hóa các tham số theo các đặc điểm thị trường khác nhau, chẳng hạn như chiều dài phạm vi cờ, tỷ lệ rủi ro-lợi nhuận, giá trị đệm dừng lỗ, v.v.
  3. Xem xét xây dựng các vị trí theo lô và sử dụng các lỗ dừng động để giảm rủi ro.
  4. Thêm quản lý vị trí để kiểm soát rủi ro tổng thể.

Tóm lại

Chiến lược này là một chiến lược đột phá dựa trên mô hình cờ bò cổ điển, nắm bắt các cơ hội tiếp tục xu hướng bằng cách xác định phạm vi cờ và đột phá giá. Ưu điểm của chiến lược là logic rõ ràng và rủi ro có thể kiểm soát được, nhưng nó phải đối mặt với một số rủi ro nhất định trong thị trường biến động hoặc đảo ngược xu hướng. Có thể cải thiện về tối ưu hóa tín hiệu, tham số năng động, quản lý vị trí, v.v., để tăng cường độ bền và lợi nhuận của chiến lược.


/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bull Flag Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Параметры стратегии
riskRewardRatio = 3.0
flagLength = input.int(5, title="Flag Length")
stopLossBuffer = input.float(0.01, title="Stop Loss Buffer", step=0.001)

// Функция для вычисления стоп-лосса и тейк-профита
calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio) =>
    takeProfitPrice = entryPrice + (entryPrice - stopLossPrice) * riskRewardRatio
    [stopLossPrice, takeProfitPrice]

// Найти минимум и максимум флага
flagLow = ta.lowest(low, flagLength)
flagHigh = ta.highest(high, flagLength)

// Условия для формирования бычьего флага
isBullFlag = high[1] < flagHigh and close > high[1]

// Условия для входа в сделку
if (isBullFlag)
    entryPrice = close
    stopLossPrice = flagLow - stopLossBuffer
    [calculatedStopLoss, calculatedTakeProfit] = calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio)
    
    // Открыть длинную позицию
    strategy.entry("Bull Flag Long", strategy.long)
    strategy.exit("Take Profit", "Bull Flag Long", limit=calculatedTakeProfit)
    strategy.exit("Stop Loss", "Bull Flag Long", stop=calculatedStopLoss)
    label.new(bar_index, high, "Buy", color=color.green, textcolor=color.white, style=label.style_label_down)


Thêm nữa