该策略是一个结合了斐波那契回撤、趋势跟踪和风险管理的综合交易系统。它主要基于0.65斐波那契回撤水平作为关键价格参考点,并结合移动平均线来确认市场趋势,同时整合了基于ATR的动态止损止盈机制。该策略在15分钟时间周期上运行,旨在捕捉符合当前市场趋势的高概率交易机会。
策略的核心逻辑基于以下几个关键组件: 1. 使用38个周期的历史数据计算最高点和最低点,并基于这个范围确定0.65斐波那契回撤水平。 2. 采用181周期的简单移动平均线(SMA)作为趋势过滤器,用于确定市场的总体方向。 3. 利用12周期的平均真实波幅(ATR)乘以1.8的系数来设置动态的止损和止盈水平。 4. 在上升趋势中,当价格从下方突破0.65斐波那契水平时触发做多信号;在下降趋势中,当价格从上方突破该水平时触发做空信号。
这是一个设计合理的中期趋势跟踪策略,通过结合斐波那契理论、趋势跟踪和风险管理,构建了一个完整的交易系统。策略的主要特点是在识别市场趋势的基础上,利用价格突破关键水平产生交易信号,并通过动态的止损止盈机制来管理风险。虽然存在一些需要优化的地方,但总体而言这是一个具有实用价值的策略框架。
/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-25 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Refined Fibonacci Strategy - Enhanced Risk Management", overlay=true)
// Input parameters
fibonacci_lookback = input.int(38, minval=2, title="Fibonacci Lookback Period")
atr_multiplier = input.float(1.8, title="ATR Multiplier for Stop Loss and Take Profit")
sma_length = input.int(181, title="SMA Length")
// Calculating Fibonacci levels
var float high_level = na
var float low_level = na
if (ta.change(ta.highest(high, fibonacci_lookback)))
high_level := ta.highest(high, fibonacci_lookback)
if (ta.change(ta.lowest(low, fibonacci_lookback)))
low_level := ta.lowest(low, fibonacci_lookback)
fib_level_0_65 = high_level - ((high_level - low_level) * 0.65)
// Trend Filter using SMA
sma = ta.sma(close, sma_length)
in_uptrend = close > sma
in_downtrend = close < sma
// ATR for Risk Management
atr = ta.atr(12)
long_stop_loss = close - (atr * atr_multiplier)
long_take_profit = close + (atr * atr_multiplier)
short_stop_loss = close + (atr * atr_multiplier)
short_take_profit = close - (atr * atr_multiplier)
// Entry Conditions
buy_signal = close > fib_level_0_65 and close[1] <= fib_level_0_65 and in_uptrend
sell_signal = close < fib_level_0_65 and close[1] >= fib_level_0_65 and in_downtrend
// Execute Trades
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (sell_signal)
strategy.entry("Sell", strategy.short)
// Exit Conditions
if (strategy.position_size > 0)
strategy.exit("Exit Long", "Buy", stop=long_stop_loss, limit=long_take_profit)
if (strategy.position_size < 0)
strategy.exit("Exit Short", "Sell", stop=short_stop_loss, limit=short_take_profit)
// Plotting
plot(fib_level_0_65, color=color.blue, title="Fibonacci 0.65 Level")
plot(sma, color=color.orange, title="SMA")