
Стратегия основана на форме бычьего флага, покупается после того, как цена пробивает высокие точки в флагах, с остановкой на низких точках в флагах и целевой прибылью, основанной на риске и отдаче. Стратегия использует функцию наивысшей цены и наименьшей цены, чтобы идентифицировать флага, и оценивает прорыв, сравнивая текущую цену закрытия и предыдущую цену 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)