该策略是一个基于24小时周期内的交易量、价格高低点和斐波那契回调水平的量化交易系统。策略通过结合短期和长期移动平均线的交叉信号来确定交易时机,同时利用成交量和斐波那契水平来验证价格走势的有效性。这种多维度指标的结合既能捕捉市场趋势,又可以在关键支撑阻力位进行交易。
策略的核心逻辑包含以下几个关键要素: 1. 24小时价格区间追踪:系统持续监控并更新每个交易日内的最高价和最低价,建立价格波动范围。 2. 斐波那契回调计算:基于日内高低点计算23.6%、38.2%、61.8%和78.6%四个关键的斐波那契回调水平。 3. 成交量分析:使用20周期简单移动平均线(SMA)来平滑成交量数据,反映市场活跃度。 4. 均线交叉信号:通过14周期和28周期的移动平均线交叉来产生交易信号,其中上穿为做多信号,下穿为做空信号。
该策略通过综合运用24小时价格区间、斐波那契回调水平、成交量和均线交叉等技术指标,构建了一个逻辑完整的交易系统。策略的主要优势在于多维度分析和自适应性,但也需要注意应对震荡市场和假突破等风险。通过建议的优化方向,策略的稳定性和盈利能力有望得到进一步提升。
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("24-Hour Volume and Fibonacci Levels Strategy", overlay=true)
// Define the 24-hour time period
startTime = timestamp(year, month, dayofmonth, 0, 0)
endTime = timestamp(year, month, dayofmonth, 23, 59)
// Calculate 24-hour high and low
var float dayHigh = na
var float dayLow = na
if (time >= startTime and time <= endTime)
dayHigh := na(dayHigh) ? high : math.max(dayHigh, high)
dayLow := na(dayLow) ? low : math.min(dayLow, low)
// Fibonacci levels
fibRetrace1 = dayLow + (dayHigh - dayLow) * 0.236
fibRetrace2 = dayLow + (dayHigh - dayLow) * 0.382
fibRetrace3 = dayLow + (dayHigh - dayLow) * 0.618
fibRetrace4 = dayLow + (dayHigh - dayLow) * 0.786
// Plot Fibonacci levels
plot(fibRetrace1, color=color.green, linewidth=2, title="Fibonacci 23.6%")
plot(fibRetrace2, color=color.blue, linewidth=2, title="Fibonacci 38.2%")
plot(fibRetrace3, color=color.orange, linewidth=2, title="Fibonacci 61.8%")
plot(fibRetrace4, color=color.red, linewidth=2, title="Fibonacci 78.6%")
// Volume Indicator
volumeMa = ta.sma(volume, 20)
plot(volumeMa, color=color.purple, title="24-Hour Volume", linewidth=2)
// Optional: Display the 24-hour volume on the chart
bgcolor(time >= startTime and time <= endTime ? color.new(color.purple, 90) : na)
// Strategy conditions (based on moving averages)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)