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 đó.
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)