Strategi ini adalah berdasarkan corak bendera lembu. Ia membeli apabila harga pecah di atas tahap tertinggi julat bendera, menetapkan stop loss pada tahap rendah julat bendera, dan menetapkan sasaran keuntungan mengikut nisbah risiko-balasan. Strategi ini menggunakan fungsi harga tertinggi dan terendah untuk mengenal pasti julat bendera dan menentukan pecah dengan membandingkan harga penutupan semasa dengan harga tertinggi lilin sebelumnya.
Strategi ini adalah strategi breakout berdasarkan corak bendera lembu klasik, yang menangkap peluang kesinambungan trend dengan mengenal pasti julat bendera dan penembusan harga. Kelebihan strategi ini adalah logik yang jelas dan risiko yang boleh dikawal, tetapi ia menghadapi risiko tertentu dalam pasaran yang tidak menentu atau pembalikan trend. Penambahbaikan boleh dibuat dari segi mengoptimumkan isyarat, parameter dinamik, pengurusan kedudukan, dll., untuk meningkatkan kekuatan dan keuntungan strategi.
/*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)