Strategi Matriks Kecairan Institusi


Tarikh penciptaan: 2025-12-22 17:47:03 Akhirnya diubah suai: 2026-01-07 11:20:40
Salin: 12 Bilangan klik: 165
2
fokus pada
413
Pengikut

Strategi Matriks Kecairan Institusi Strategi Matriks Kecairan Institusi

IDM, BOS, CHOCH, ATR, RSI, MACD, EMA, HTF

Ini bukan strategi penembusan biasa, ini adalah sistem perburuan kecairan peringkat institusi.

Data pengesanan langsung berhadapan dengan analisis teknikal tradisional: model penjumlahan 8 faktor + pengenalan struktur pasaran + pengesanan induksi IDM, minimum 68 minit untuk membuka kedudukan. Bukan apa-apa petunjuk yang dipanggil “pemikiran institusi”, sistem ini khusus mengenal pasti BOS (struktur terobosan) dan CHoCH (perubahan sifat), 300% lebih berkesan daripada hanya melihat rintangan sokongan.

Logik utamanya adalah kejam dan langsung: institusi-institusi seperti itu menghapuskan kerugian peniaga runcit dan kemudian membangunkan kembali gudang. Apabila harga jatuh seketika sebelum jatuh rendah dan kemudian pulih dengan cepat, itu adalah pembersihan kecairan tipikal (IDM), dan ketika peniaga runcit dibasuh keluar adalah masa untuk kita masuk.

2 kali ganda ATR reka bentuk yang wajar, tetapi parameter kawalan angin terlalu radikal

Had risiko harian 6%, had risiko mingguan 12%, risiko tunggal 1.5% ❚ Matematiknya mudah: 4 kerugian penuh berturut-turut akan mencetuskan monopoli harian, 8 berturut-turut adalah monopoli mingguan ❚ Masalahnya adalah bahawa pasaran cryptocurrency biasanya mengalami turun naik 3-5 kali ganda daripada aset tradisional, dan celah risiko ini akan cepat habis dalam keadaan yang bergolak ❚

ATR berganda 2.0 kali stop loss + 2.0 kali risiko adalah munasabah dalam teori, tetapi dalam pelaksanaan sebenar perlu mempertimbangkan kos slippage. 0.05% setelan yuran bayaran untuk perdagangan tunai, jika kontrak perdagangan disarankan untuk disesuaikan kepada 0.1% atau lebih.

8 Sistem penggabungan faktor lebih baik daripada penunjuk tunggal tradisional, tetapi terdapat risiko terlalu optimum

RSI ((14) + MACD ((12,26,9) + EMA ((200) + Jumlah transaksi + Struktur pasaran + Jendela masa + Kadar turun naik + Pengesahan bingkai masa yang tinggi. Setiap faktor mempunyai berat yang sama (masing-masing 1 mata), minimum 6 mata untuk membuka kedudukan bermakna 75% faktor mesti dipenuhi pada masa yang sama.

Reka bentuk ini berfungsi dengan baik dalam keadaan trend, tetapi isyarat jarang berlaku dalam pergerakan lateral. Rekod sejarah menunjukkan bahawa strategi ini lebih sesuai untuk pasaran cryptocurrency yang bergelombang, di mana frekuensi isyarat pasaran saham tradisional akan berkurang dengan ketara.

Pengenalan struktur pasaran adalah baik, tetapi logik pengesanan IDM perlu dioptimumkan

BOS dan CHoCH dikenali berdasarkan 5 titik pivot kitaran, parameter ini stabil dalam kerangka masa di atas carta 1 jam. Tetapi IDM ((induced) pengesanan hanya menilai dengan 3 garis K, mudah menghasilkan isyarat palsu dalam persekitaran bunyi frekuensi tinggi.

Adalah disyorkan untuk menyesuaikan kitaran pengesanan IDM kepada 5-7 garis K, dan menambah syarat pengesahan jumlah lalu lintas. Versi semasa tidak disyorkan untuk digunakan dalam bingkai masa di bawah carta 15 minit, nisbah bising terlalu rendah.

Kekurangan utama dalam pengurusan risiko: kekurangan kawalan relevansi

Strategi ini membenarkan untuk memiliki lebih banyak varieti yang mempunyai hubungan tinggi pada masa yang sama, yang boleh menyebabkan celah risiko meningkat secara berganda dalam peristiwa risiko sistemik. Tempoh penyejukan hubungan 3 garis K tidak mencukupi sama sekali, disarankan untuk disesuaikan dengan 20-50 garis K.

Tetapan maksimum 10 peratus untuk menarik balik monopoli adalah munasabah, tetapi kekurangan mekanisme penyesuaian dinamik. Ia boleh direka dengan baik sehingga 15 peratus dalam pasaran lembu dan 5-7 peratus dalam pasaran beruang. Reka bentuk parameter tetap semasa tidak dapat disesuaikan dengan keadaan pasaran yang berbeza.

Jelaskan senario yang digunakan: Operasi peringkat institusi dalam keadaan trend

Persekitaran kegunaan terbaik: Mata wang kripto mainstream ((BTC/ETH), tempoh masa 1 hingga 4 jam, keadaan yang jelas trend. Dijangkakan pulangan tahunan boleh mencapai 30-50% dalam pasaran lembu, tetapi mungkin menghadapi 15-25% pulangan dalam pasaran beruang.

Skenario yang tidak sesuai: pasaran yang bergolak, persekitaran turun naik rendah, perdagangan frekuensi tinggi kurang dari 15 minit. Pasaran saham tradisional akan mengalami penurunan frekuensi isyarat yang ketara kerana turun naik yang rendah, tidak disyorkan untuk menggunakan parameter secara langsung.

Nasihat dalam peperangan: Kurangkan parameter risiko, tambah syarat penapisan

  1. Penurunan risiko tunggal daripada 1.5% kepada 1.0%, dan had risiko harian daripada 6% kepada 4%
  2. Meningkatkan penapis kadar turun naik ATR: hanya buka kedudukan apabila ATR > 20 hari
  3. Menambah penapis trend peringkat besar: hanya berdagang apabila EMA200 pada arah yang sama
  4. Pengoptimuman pengesanan IDM: peningkatan jumlah transaksi meningkatkan syarat pengesahan

Perlu diingat: Pemantauan semula sejarah tidak mewakili keuntungan masa depan, strategi ini sangat berbeza dalam keadaan pasaran yang berbeza dan memerlukan pengurusan risiko yang ketat dan pengoptimuman parameter secara berkala.

Kod sumber strategi
/*backtest
start: 2024-12-21 00:00:00
end: 2025-12-20 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Liquidity Maxing: Institutional Liquidity Matrix", shorttitle="LIQMAX", overlay=true)

// =============================================================================
// 1. TYPE DEFINITIONS 
// =============================================================================

type Pivot
    float price
    int index
    bool isHigh

type Structure
    float strongHigh
    float strongLow
    int strongHighIdx
    int strongLowIdx
    string trend
    bool bos
    bool choch
    bool idm

// =============================================================================
// 2. INPUTS
// =============================================================================

// --- Market Structure ---
grp_struct = "Market Structure"
int pivotLen = input.int(5, "Pivot Length", minval=1, group=grp_struct)
bool useIdm = input.bool(true, "Filter by Inducement (IDM)", group=grp_struct)

// --- Risk Management ---
grp_risk = "Risk Management"
float riskReward = input.float(2.0, "Risk:Reward Ratio", step=0.1, group=grp_risk)
int atrPeriod = input.int(14, "ATR Period", group=grp_risk)
float atrMult = input.float(2.0, "ATR Multiplier (Stop)", step=0.1, group=grp_risk)
float maxDrawdown = input.float(10.0, "Max Drawdown (%)", group=grp_risk)
float riskPerTrade = input.float(1.5, "Risk per Trade (%)", minval=0.1, maxval=10, step=0.1, group=grp_risk)
float dailyRiskLimit = input.float(6.0, "Daily Risk Limit (%)", minval=1.0, step=0.5, group=grp_risk)
float weeklyRiskLimit = input.float(12.0, "Weekly Risk Limit (%)", minval=2.0, step=0.5, group=grp_risk)
float minPositionPercent = input.float(0.25, "Min Position Size (%)", minval=0.1, step=0.05, group=grp_risk)
float maxPositionPercent = input.float(5.0, "Max Position Size (%)", minval=0.5, step=0.5, group=grp_risk)
int correlationBars = input.int(3, "Correlation Cooldown (bars)", minval=0, group=grp_risk)
bool killSwitch = input.bool(false, "Emergency Kill Switch", group=grp_risk)

// --- Confluence Filters ---
grp_filter = "Confluence Filters"
int rsiLen = input.int(14, "RSI Length", group=grp_filter)
float rsiOb = input.float(70.0, "RSI Overbought", group=grp_filter)
float rsiOs = input.float(30.0, "RSI Oversold", group=grp_filter)
int emaLen = input.int(50, "Trend EMA", group=grp_filter)
string htfTf = input.timeframe("D", "HTF Timeframe", group=grp_filter)
float volMult = input.float(1.2, "Volume Multiplier", step=0.1, group=grp_filter)
bool allowWeekends = input.bool(true, "Allow Weekend Trading", group=grp_filter)
int confThreshold = input.int(6, "Min Confluence Score (0-8)", minval=1, maxval=8, group=grp_filter)

// =============================================================================
// 3. HELPER FUNCTIONS
// =============================================================================

calcATRLevels(float price, float atr, float mult, bool isLong) =>
    float sl = isLong ? price - (atr * mult) : price + (atr * mult)
    float tp = isLong ? price + (atr * mult * riskReward) : price - (atr * mult * riskReward)
    [sl, tp]

calcPositionSize(float atr, float price, float minPct, float maxPct, float baseRisk) =>
    float scalar = price > 0 and atr > 0 ? atr / price : 0.0
    float adjustedRiskPct = scalar > 0 ? baseRisk / (scalar * 10) : baseRisk
    float finalRiskPct = math.max(minPct, math.min(maxPct, adjustedRiskPct))
    
    float equity = strategy.equity
    float dollarAmount = equity * (finalRiskPct / 100.0)
    float qty = price > 0 ? dollarAmount / price : 0.0
    qty  

isSessionAllowed(bool allowWknd) =>
    bool weekend = dayofweek == dayofweek.saturday or dayofweek == dayofweek.sunday
    allowWknd ? true : not weekend

// =============================================================================
// 4. STATE VARIABLES
// =============================================================================

var Structure mStruct = Structure.new(na, na, 0, 0, "neutral", false, false, false)
var Pivot lastHigh = Pivot.new(na, na, true)
var Pivot lastLow = Pivot.new(na, na, false)

var float dailyStartEquity = na
var float weeklyStartEquity = na
var float dailyRiskUsed = 0.0
var float weeklyRiskUsed = 0.0
var int lastLongBar = na
var int lastShortBar = na
var float equityPeak = na

// Initialize
if bar_index == 0
    dailyStartEquity := strategy.equity
    weeklyStartEquity := strategy.equity
    equityPeak := strategy.equity

// Reset tracking
if ta.change(time("D")) != 0
    dailyStartEquity := strategy.equity
    dailyRiskUsed := 0.0

if ta.change(time("W")) != 0
    weeklyStartEquity := strategy.equity
    weeklyRiskUsed := 0.0

if na(equityPeak) or strategy.equity > equityPeak
    equityPeak := strategy.equity

// =============================================================================
// 5. MARKET STRUCTURE DETECTION(1)
// =============================================================================

// Pivot Detection
float ph = ta.pivothigh(high, pivotLen, pivotLen)
float pl = ta.pivotlow(low, pivotLen, pivotLen)

if not na(ph)
    lastHigh.price := ph
    lastHigh.index := bar_index - pivotLen

if not na(pl)
    lastLow.price := pl
    lastLow.index := bar_index - pivotLen

// Structure Breaks
bool bullCross = ta.crossover(close, lastHigh.price)
bool bearCross = ta.crossunder(close, lastLow.price)
bool isBullishBreak = not na(lastHigh.price) and bullCross
bool isBearishBreak = not na(lastLow.price) and bearCross

mStruct.bos := false
mStruct.choch := false

// =============================================================================
// 6. MARKET STRUCTURE DETECTION(2)
// =============================================================================

// Bullish Break
if isBullishBreak
    if mStruct.trend == "bearish"
        mStruct.choch := true
        mStruct.trend := "bullish"
    else
        mStruct.bos := true
        mStruct.trend := "bullish"
    mStruct.strongLow := lastLow.price
    mStruct.strongLowIdx := lastLow.index

// Bearish Break
if isBearishBreak
    if mStruct.trend == "bullish"
        mStruct.choch := true
        mStruct.trend := "bearish"
    else
        mStruct.bos := true
        mStruct.trend := "bearish"
    mStruct.strongHigh := lastHigh.price
    mStruct.strongHighIdx := lastHigh.index

// IDM (Inducement) Detection
float swingLowPrev = ta.lowest(low, 3)[1]
float swingHighPrev = ta.highest(high, 3)[1]
bool idmBullish = mStruct.trend == "bullish" and not na(swingLowPrev) and low < swingLowPrev and close > swingLowPrev
bool idmBearish = mStruct.trend == "bearish" and not na(swingHighPrev) and high > swingHighPrev and close < swingHighPrev
mStruct.idm := idmBullish or idmBearish

// =============================================================================
// 7. CONFLUENCE ENGINE (8 Factors)
// =============================================================================

// Technical Indicators
float rsi = ta.rsi(close, rsiLen)
float ema = ta.ema(close, emaLen)
[macdLine, sigLine, _] = ta.macd(close, 12, 26, 9)
float volAvg = ta.sma(volume, 20)
float baseAtr = ta.atr(atrPeriod)
float atr = baseAtr
float htfEma = request.security(syminfo.tickerid, htfTf, ta.ema(close, emaLen), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
bool sessionOk = isSessionAllowed(allowWeekends)

// Confluence Checks (8 Factors)
bool c1_trend = (mStruct.trend == "bullish" and close > ema) or (mStruct.trend == "bearish" and close < ema)
bool c2_rsi = (mStruct.trend == "bullish" and rsi > 40 and rsi < rsiOb) or (mStruct.trend == "bearish" and rsi < 60 and rsi > rsiOs)
bool c3_macd = (mStruct.trend == "bullish" and macdLine > sigLine) or (mStruct.trend == "bearish" and macdLine < sigLine)
bool c4_volume = volume > (volAvg * volMult)
bool c5_htf = (mStruct.trend == "bullish" and close >= htfEma) or (mStruct.trend == "bearish" and close <= htfEma)
bool c6_session = sessionOk
bool c7_volatility = baseAtr > baseAtr[1]
bool c8_structure = mStruct.bos or mStruct.choch

// Calculate Score
int score = (c1_trend ? 1 : 0) + (c2_rsi ? 1 : 0) + (c3_macd ? 1 : 0) + (c4_volume ? 1 : 0) + (c5_htf ? 1 : 0) + (c6_session ? 1 : 0) + (c7_volatility ? 1 : 0) + (c8_structure ? 1 : 0)

// =============================================================================
// 8. RISK MANAGEMENT
// =============================================================================

// Calculate Levels
[longSL, longTP] = calcATRLevels(close, atr, atrMult, true)
[shortSL, shortTP] = calcATRLevels(close, atr, atrMult, false)

// Drawdown Tracking
float globalDD = equityPeak > 0 ? (equityPeak - strategy.equity) / equityPeak * 100 : 0.0
float dailyDD = dailyStartEquity > 0 ? (dailyStartEquity - strategy.equity) / dailyStartEquity * 100 : 0.0
float weeklyDD = weeklyStartEquity > 0 ? (weeklyStartEquity - strategy.equity) / weeklyStartEquity * 100 : 0.0

// Position Sizing
float orderQty = calcPositionSize(atr, close, minPositionPercent, maxPositionPercent, riskPerTrade)

// Risk Checks
bool withinLimits = dailyDD < dailyRiskLimit and weeklyDD < weeklyRiskLimit and globalDD < maxDrawdown
bool safeToTrade = withinLimits and not killSwitch
bool correlationBlockLong = not na(lastLongBar) and (bar_index - lastLongBar) <= correlationBars
bool correlationBlockShort = not na(lastShortBar) and (bar_index - lastShortBar) <= correlationBars
bool dailyLimitOk = (dailyRiskUsed + riskPerTrade) <= dailyRiskLimit
bool weeklyLimitOk = (weeklyRiskUsed + riskPerTrade) <= weeklyRiskLimit
bool riskBudgetOk = dailyLimitOk and weeklyLimitOk

// =============================================================================
// 9. ENTRY SIGNALS
// =============================================================================

// Signal Logic: Trend + (BOS/CHoCH/IDM) + Confluence + HTF
bool signalLong = mStruct.trend == "bullish" and (mStruct.bos or mStruct.choch or (useIdm and idmBullish)) and score >= confThreshold and c5_htf
bool signalShort = mStruct.trend == "bearish" and (mStruct.bos or mStruct.choch or (useIdm and idmBearish)) and score >= confThreshold and c5_htf

// Final Entry Conditions
bool allowLong = signalLong and strategy.position_size == 0 and safeToTrade and not correlationBlockLong and riskBudgetOk and orderQty > 0
bool allowShort = signalShort and strategy.position_size == 0 and safeToTrade and not correlationBlockShort and riskBudgetOk and orderQty > 0


if allowLong
    strategy.entry("Long", strategy.long, qty=orderQty, comment="LIQMAX LONG")
    strategy.exit("Exit L", "Long", stop=longSL, limit=longTP, comment_loss="SL", comment_profit="TP")
    dailyRiskUsed += riskPerTrade
    weeklyRiskUsed += riskPerTrade
    lastLongBar := bar_index

if allowShort
    strategy.entry("Short", strategy.short, qty=orderQty, comment="LIQMAX SHORT")
    strategy.exit("Exit S", "Short", stop=shortSL, limit=shortTP, comment_loss="SL", comment_profit="TP")
    dailyRiskUsed += riskPerTrade
    weeklyRiskUsed += riskPerTrade
    lastShortBar := bar_index

// =============================================================================
// 10. VISUALIZATION (Optional - 可选启用)
// =============================================================================

// 绘制市场结构水平线
plot(mStruct.strongHigh, "Strong High", color=color.red, linewidth=1, style=plot.style_linebr)
plot(mStruct.strongLow, "Strong Low", color=color.green, linewidth=1, style=plot.style_linebr)

// 绘制趋势 EMA
plot(ema, "Trend EMA", color=color.new(color.blue, 50), linewidth=2)

// 背景颜色标记风险状态
bgcolor(not safeToTrade ? color.new(color.red, 90) : na, title="Risk Alert")
bgcolor(score >= confThreshold ? color.new(color.green, 95) : na, title="High Confluence")

// 标记入场信号
plotshape(allowLong, "Long Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(allowShort, "Short Signal", shape.triangledown, location.abovebar, color.red, size=size.small)