该策略是一个基于布林带标准差的趋势跟踪交易系统。策略通过观察连续三根蜡烛线相对于布林带上下轨的位置关系来判断趋势的强度,并在趋势确立时进行交易。系统采用了固定风险收益比的方式来管理每笔交易的风险。
策略的核心逻辑基于以下几点: 1. 使用20周期移动平均线作为布林带的中轨,并使用2倍标准差计算上下轨。 2. 当连续三根蜡烛线的收盘价都位于上轨之上时,系统认为上升趋势已经确立,在第三根蜡烛线收盘时入场做多。 3. 当连续三根蜡烛线的收盘价都位于下轨之下时,系统认为下降趋势已经确立,在第三根蜡烛线收盘时入场做空。 4. 止损设置在入场信号最早的那根蜡烛线的极值处。 5. 目标价位的设置采用1:1的风险收益比,即盈利目标距离等于止损距离。
这是一个设计合理的趋势跟踪策略,通过布林带和多重确认机制来捕捉市场趋势。策略的风险管理框架完善,执行标准明确。虽然存在一定的滞后性,但通过建议的优化方向可以进一步提升策略的稳定性和盈利能力。对于偏好趋势跟踪、注重风险控制的交易者来说,这是一个值得参考的策略框架。
/*backtest
start: 2024-11-01 00:00:00
end: 2025-02-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Bollinger Band Buy and Sell Strategy (Entry at Close of 3rd Candle)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=0)
// Bollinger Band settings
length = input.int(20, "Bollinger Band Length")
mult = input.float(2.0, "Standard Deviation Multiplier")
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper_band = basis + dev
lower_band = basis - dev
// Plot Bollinger Bands
plot(upper_band, "Upper Band", color.blue)
plot(lower_band, "Lower Band", color.red)
// Initialize variables
var float buyEntryPrice = na
var float buyStopLoss = na
var float buyTargetPrice = na
var float sellEntryPrice = na
var float sellStopLoss = na
var float sellTargetPrice = na
// Buy Condition: Last 3 candles closed above upper band
buyCondition = close[2] > upper_band[2] and
close[1] > upper_band[1] and
close > upper_band
// Sell Condition: Last 3 candles closed below lower band
sellCondition = close[2] < lower_band[2] and close[1] < lower_band[1] and close < lower_band
// Buy Logic
if buyCondition and strategy.position_size == 0
buyEntryPrice := close // Entry at the close of the 3rd candle
buyStopLoss := low[2] // Low of the earliest candle in the 3-candle sequence
buyTargetPrice := buyEntryPrice + (buyEntryPrice - buyStopLoss)
strategy.entry("Buy", strategy.long)
strategy.exit("Buy Exit", "Buy", stop=buyStopLoss, limit=buyTargetPrice)
// Plot buy signal arrow on the entry candle
label.new(bar_index, low, "▲", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
// Sell Logic
if sellCondition and strategy.position_size == 0
sellEntryPrice := close // Entry at the close of the 3rd candle
sellStopLoss := high[2] // High of the earliest candle in the 3-candle sequence
sellTargetPrice := sellEntryPrice - (sellStopLoss - sellEntryPrice)
strategy.entry("Sell", strategy.short)
strategy.exit("Sell Exit", "Sell", stop=sellStopLoss, limit=sellTargetPrice)
// Plot sell signal arrow on the entry candle
label.new(bar_index, high, "▼", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)
// Plot stop loss and target levels for buy trades
plot(strategy.position_size > 0 ? buyStopLoss : na, "Buy Stop Loss", color.red, 2, plot.style_linebr)
plot(strategy.position_size > 0 ? buyTargetPrice : na, "Buy Target", color.green, 2, plot.style_linebr)
// Plot stop loss and target levels for sell trades
plot(strategy.position_size < 0 ? sellStopLoss : na, "Sell Stop Loss", color.red, 2, plot.style_linebr)
plot(strategy.position_size < 0 ? sellTargetPrice : na, "Sell Target", color.green, 2, plot.style_linebr)