
이 전략은 황소 깃발 모양을 기반으로, 가격이 깃발 모양의 영역의 고점을 돌파한 후에 구매하고, 스톱 로드 포지션은 깃발 모양의 영역의 낮은 곳에 위치하고, 목표 수익은 리스크 수익 비율에 따라 설정된다. 이 전략은 최고 가격과 최저 가격 함수를 사용하여 깃발 모양의 영역을 식별하고, 현재 종결 가격과 이전 K선 최고 가격을 비교하여 돌파를 판단한다.
이 전략은 클래식 황소 깃발 모양을 기반으로 한 돌파 전략으로, 깃발 모양의 영역과 가격 돌파구를 식별하여 트렌드 연장 기회를 포착한다. 전략의 장점은 논리적으로 명확하고, 위험은 통제 가능하지만, 흔들리는 시장이나 추세 역전 시에는 약간의 위험에 직면한다. 이후에는 신호, 동적 변수, 포지션 관리 등의 최적화 측면에서 개선하여 전략의 안정성과 수익성을 향상시킬 수 있다.
/*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)