
Strategi ini adalah sistem dagangan kuantitatif yang direka khas untuk menangkap masa-masa turun naik yang melampau di pasaran. Ia memantau tahap penyimpangan antara harga dan garis rata-rata, mengenal pasti kemungkinan kehabisan kecairan di pasaran, dan dengan itu menangkap peluang untuk membalikkan pasaran.
Strategi ini berpusat pada pengesanan harga dan rata-rata deviasi untuk mengenal pasti kecacatan pasaran.
Strategi tangkapan kecairan bertaraf dinamik adalah sistem perdagangan kuantitatif yang memberi tumpuan kepada menangkap keadaan pasaran yang melampau. Melalui kombinasi indikator saintifik dan kawalan risiko yang ketat, strategi dapat menangkap peluang perdagangan ketika pasaran mengalami turun naik yang kuat. Walaupun terdapat risiko tertentu, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran melalui pengoptimuman dan penyempurnaan yang berterusan.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Liquidation Cascade Strategy", overlay=true)
// Paramètres de l'indicateur de liquidation
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, 89)
pl = ta.lowest(distVal, 89)
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
// Condition d'achat : 3 liquidations longues consécutives
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)
// Conditions de vente
var float entryPrice = na
var bool positionOpen = false
// Mise à jour du prix d'entrée
if (buyCondition)
entryPrice := close
positionOpen := true
// 1. Vente sur rebond technique (distVal > -1%)
sellCondition1 = distVal > -1 and positionOpen
// 2. Vente sur liquidation courte
sellCondition2 = shortLiq and positionOpen
// 3. Trailing Stop (2x ATR)
atr = ta.atr(14)
trailingStop = close - 2 * atr
sellCondition3 = close < trailingStop and positionOpen
// Exécution des ventes
if (sellCondition1 or sellCondition2 or sellCondition3)
strategy.close("Buy")
positionOpen := false
// Visualisation
plot(avgLine, color=color.blue, title="Avg Line")
plot(distVal, color=distVal > 0 ? color.red : color.green, style=plot.style_columns)