
Strategi ini adalah berdasarkan corak bendera lembu, membeli selepas harga menembusi kawasan tinggi bendera, dan meletakkan kedudukan hentian di kawasan rendah bendera, dan menetapkan keuntungan sasaran berdasarkan perbandingan risiko-pengembalian. Strategi ini menggunakan fungsi harga tertinggi dan harga terendah untuk mengenal pasti kawasan bendera, dan menilai penembusan dengan membandingkan harga penutupan semasa dan harga tertinggi K sebelumnya.
Strategi ini adalah strategi penembusan berdasarkan bentuk bendera lembu klasik, untuk menangkap peluang kesinambungan trend dengan mengenal pasti julat bendera dan penembusan harga. Kelebihan strategi adalah kejernihan logik, risiko boleh dikawal, tetapi menghadapi risiko tertentu ketika pasaran bergolak atau trend berbalik.
/*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)