
Strategi ini didasarkan pada bentuk bendera banteng, dengan pembelian setelah harga menembus batas tinggi bandera, posisi stop loss diletakkan di batas rendah bandera, dan target profit diatur berdasarkan rasio risiko / pengembalian. Strategi ini menggunakan fungsi harga tertinggi dan terendah untuk mengidentifikasi area bendera, dan menilai penembusan dengan membandingkan harga penutupan saat ini dengan harga tertinggi di garis K sebelumnya.
Strategi ini adalah strategi breakout yang didasarkan pada bentuk bendera banteng klasik, untuk menangkap peluang kelanjutan tren dengan mengidentifikasi area bendera dan harga breakout. Keuntungan dari strategi ini adalah kejernihan logika, risiko dapat dikendalikan, tetapi menghadapi risiko tertentu ketika pasar bergoyang atau membalikkan tren.
/*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)