
La stratégie est basée sur la forme du drapeau du taureau, achetant après que le prix a franchi le sommet de la zone du drapeau, la position de stop-loss est placée au bas de la zone du drapeau, et le profit cible est réglé en fonction du rapport de retour sur risque. La stratégie utilise la fonction de prix le plus élevé et le prix le plus bas pour identifier la zone du drapeau et pour juger de la rupture en comparant le prix de clôture actuel et le prix le plus élevé de la ligne K précédente.
La stratégie est une stratégie de rupture basée sur la forme classique du drapeau du taureau, qui permet de saisir les opportunités de continuation de la tendance en identifiant les intervalles de la forme du drapeau et les ruptures de prix. L’avantage de la stratégie est la clarté de la logique, le risque est contrôlable, mais face à un certain risque lors d’un marché tremblant ou d’un renversement de tendance.
/*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)