Esta estratégia é baseada no padrão de bandeira de touro. Ele compra quando o preço rompe acima do máximo da faixa de bandeira, define o stop loss no mínimo da faixa de bandeira e define a meta de lucro de acordo com a relação risco-recompensa. A estratégia usa as funções de preço mais alto e mais baixo para identificar a faixa de bandeira e determina o rompimento comparando o preço de fechamento atual com o preço mais alto da vela anterior.
Esta estratégia é uma estratégia de ruptura baseada no padrão clássico de bandeira de touro, que capta oportunidades de continuação da tendência identificando a faixa de bandeira e as rupturas de preço. As vantagens da estratégia são lógica clara e risco controlável, mas enfrenta certos riscos em mercados voláteis ou inversões de tendência. Podem ser feitas melhorias em termos de otimização de sinais, parâmetros dinâmicos, gerenciamento de posição, etc., para melhorar a robustez e lucratividade da estratégia.
/*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)