该策略是一个专门设计用于捕捉市场极端波动时期的量化交易系统。它通过监控价格与均线之间的偏离程度,识别市场中可能出现的流动性枯竭情况,从而捕捉市场反转机会。策略采用了均线组合、波动率跟踪以及动态止损机制,构建了一个完整的交易系统。
策略的核心是通过计算价格与均线偏离度来识别市场异常。具体实现包括: 1. 使用15周期简单移动平均线(SMA)和30周期指数移动平均线(EMA)的组合作为基准价格 2. 计算当前价格与均线组合之间的百分比偏离度 3. 通过89周期的最高值和最低值来确定历史极值 4. 在出现连续3次做多型流动性枯竭时进场做多 5. 设置了三重退出机制:技术反弹、反向流动性枯竭信号以及跟踪止损
动态流动性级联捕捉策略是一个专注于捕捉市场极端情况的量化交易系统。通过科学的指标组合和严格的风险控制,策略能够在市场出现剧烈波动时捕捉交易机会。虽然存在一定的风险,但通过持续优化和完善,策略有望在各种市场环境下保持稳定的表现。
/*backtest
start: 2024-03-12 18:40:00
end: 2024-05-09 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
*/
//@version=5
strategy("Liquidation Cascade Strategy", overlay=true)
// Liquidation Indicator Parameters
var float lastHigh = na
var float lastLow = na
var float lastPriceLow = na
var float lastPriceHigh = na
var bool shortLiq = na
var bool longLiq = na
src = close
maLength1 = 15
maLength2 = 30
ma1 = ta.sma(src, maLength1)
ma2 = ta.ema(src, maLength2)
avgLine = (ma1 + ma2) / 2
distVal = ((src - avgLine) / avgLine) * 100
ph = ta.highest(distVal, 20)
pl = ta.lowest(distVal, 20)
if ph == distVal and ph > 0
lastHigh := distVal
lastPriceHigh := high
if pl == distVal and pl < 0
lastLow := distVal
lastPriceLow := low
shortLiq := not na(lastHigh) and lastHigh == distVal and distVal > 0
longLiq := not na(lastLow) and lastLow == distVal and distVal < 0
// Buy Condition: 3 consecutive long liquidations
buyCondition = ta.valuewhen(longLiq, longLiq, 0) and ta.valuewhen(longLiq, longLiq, 1) and ta.valuewhen(longLiq, longLiq, 2)
if (buyCondition)
strategy.entry("Buy", strategy.long)
// Sell Conditions
var float entryPrice = na
var bool positionOpen = false
// Update entry price
if (buyCondition)
entryPrice := close
positionOpen := true
// 1. Sell on technical bounce (distVal > -1%)
sellCondition1 = distVal > -1 and positionOpen
// 2. Sell on short liquidation
sellCondition2 = shortLiq and positionOpen
// 3. Trailing Stop (2x ATR)
atr = ta.atr(14)
trailingStop = close - 2 * atr
sellCondition3 = close < trailingStop and positionOpen
// Execute sell orders
if (sellCondition1 or sellCondition2 or sellCondition3)
strategy.close("Buy")
positionOpen := false
// Visualization
plot(avgLine, color=color.blue, title="Avg Line")
plot(distVal, color=distVal > 0 ? color.red : color.green, style=plot.style_columns)