Strategie für eine institutionelle Liquiditätsmatrix


Erstellungsdatum: 2025-12-22 17:47:03 zuletzt geändert: 2026-01-07 11:20:40
Kopie: 12 Klicks: 165
2
konzentrieren Sie sich auf
413
Anhänger

Strategie für eine institutionelle Liquiditätsmatrix Strategie für eine institutionelle Liquiditätsmatrix

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

Dies ist keine gewöhnliche Durchbruchstrategie, sondern ein institutionelles System zur Fluiditätsbeschaffung.

Die Rückmeldedaten stellen die herkömmliche technische Analyse direkt in Frage: 8-Faktor-Sammelmodell + Marktstrukturerkennung + IDM-Induktion, mindestens 68 Minuten, um eine Position zu eröffnen. Nicht jeder Indikator wird “Organisationsdenken” genannt. Dieses System spezialisiert sich auf die Identifizierung von BOS (Strukturbruch) und CHoCH (Veränderung der Eigenschaften) und ist 300% effizienter als die einfache Betrachtung des Widerstands der Unterstützung.

Die Kernlogik ist brutal und direkt: Die Institutionen räumen die Verluste der Einzelhändler aus und bauen die Lager umgekehrt auf. Wenn die Preise kurz vor dem Niedergang niedrig sind und dann schnell wieder zurückkehren, dann ist das ein typischer Liquiditätsraub (IDM), und der Moment, in dem die Einzelhändler ausgespült werden, ist unsere Eintrittszeit.

Die 2-fache ATR-Stopp-Design ist vernünftig, aber die Windparameter sind zu radikal eingestellt

Die Mathematik ist einfach: 4 aufeinanderfolgende Full-Position-Verluste lösen eine Tagesmonopole aus, 8 aufeinanderfolgende sind Wochenmonopole. Das Problem ist, dass die Kryptowährungsmärkte in der Regel 3-5 mal so volatil sind wie herkömmliche Vermögenswerte, und diese Risikobereitschaft wird in einem wackligen Umfeld schnell verbraucht.

Die ATR-Multiplikatoren 2.0-fache Stop-Loss + 2.0-fache Risikobilanz sind theoretisch vertretbar, aber die tatsächliche Ausführung erfordert die Berücksichtigung von Slip-Point-Kosten. Eine Vergütung von 0,05% ist für den Cash-Trading geeignet, wenn es sich um einen Vertrag handelt, wird empfohlen, diese auf 0,1% oder mehr anzupassen.

8 Zusammenfassende Systeme sind besser als herkömmliche Einzelindikatoren, aber es besteht die Gefahr einer Überoptimierung

RSI ((14) + MACD ((12,26,9) + EMA ((200) + Umsatz + Marktstruktur + Zeitfenster + Volatilität + Hochzeitframe bestätigt. Jeder Faktor ist gleich gewichtet ((jeweils 1 Punkt), ein Minimum von 6 Punkten bedeutet, dass 75% der Faktoren gleichzeitig erfüllt werden müssen.

Diese Konstruktion funktioniert sehr gut bei Trendbewegungen, aber es gibt nur wenige Signale bei Schwankungen am Horizont. Die historische Rückschau zeigt, dass diese Strategie besser für den hochschwankenden Kryptowährungsmarkt geeignet ist, da die Signalfrequenz des traditionellen Aktienmarktes deutlich reduziert wird.

Die Identifizierung von Marktstrukturen ist eine gute Sache, aber die IDM-Detektionslogik muss optimiert werden

Die BOS- und CHoCH-Erkennung basiert auf 5 Pivot-Punkten, die in einem Zeitrahmen von über 1 Stunde stabil sind. Die IDM-Erkennung wird jedoch nur mit 3 K-Strecken ermittelt, was zu falschen Signalen in Hochfrequenz-Rausch-Umgebungen führt.

Es wird empfohlen, die IDM-Detektionsphase auf 5-7 K-Linien anzupassen und die Übertragungsbestätigungsbedingungen zu erhöhen. Die aktuelle Version wird nicht für den Zeitrahmen unterhalb der 15-Minuten-Chart empfohlen, da der Signal-Noise-Verhältnis zu niedrig ist.

Die tödliche Schwachstelle des Risikomanagements: Mangel an Relevanzkontrollen

Die Strategie erlaubt es, mehrere Sorten mit hoher Relevanz gleichzeitig zu besitzen, was bei Systemrisiko-Ereignissen zu einer Vermehrung der Risikogruppe führt. Die Relevanzkühlzeit von 3 K-Linien ist völlig unzureichend und es wird empfohlen, sie auf 20-50 K-Linien anzupassen.

Die maximale Rücknahme von 10% ist vernünftig, aber es fehlt ein dynamischer Anpassungsmechanismus. In einem Bullenmarkt kann eine angemessene Lockerung auf 15% und in einem Bärenmarkt sollte eine Verschärfung auf 5-7% erfolgen. Die derzeitigen Fixparameter-Designs können nicht an unterschiedliche Marktbedingungen angepasst werden.

Geltungsbereich: Institutionelle Handlungen im Rahmen von Trends

Optimaler Umfeld: Kryptowährungsmainstream ((BTC/ETH), 1- bis 4-Stunden-Zeitrahmen, Trend eindeutig. Erwartete jährliche Renditen können in einem Bullenmarkt von 30 bis 50% betragen, aber in einem Bärenmarkt können 15 bis 25% Rückzug zu erwarten.

Nicht geeignet für Szenarien: Schaukelmarkt, Umgebung mit geringer Volatilität, Hochfrequenz-Handel unter 15 Minuten. Traditionelle Aktienmärkte sind aufgrund der geringen Volatilität sehr stark von der Signalfrequenz abgeschnitten und es ist nicht empfehlenswert, die Parameter direkt einzusetzen.

Handlungsempfehlungen: Reduzieren Sie die Risikoparameter und erhöhen Sie die Filterbedingungen

  1. Reduzierung des Einzelschutzes von 1,5% auf 1,0% und der Tagesrisikobegrenzung von 6% auf 4%
  2. Erhöhung der ATR-Schwankungsrate-Filterung: nur bei ATR > 20-Tages-Mittelwert
  3. Hinzugefügt wird ein Trendfilter auf Großebene: Nur wenn die Kurve EMA200 in die gleiche Richtung verläuft
  4. Optimierung der IDM-Untersuchung: Erhöhung der Transaktionsmenge erhöht die Bestätigungsbedingungen

Denken Sie daran, dass die historische Rückführung keine Vorhersage für zukünftige Erträge ist. Die Strategie unterscheidet sich stark von den verschiedenen Marktbedingungen und erfordert strenge Risikomanagement und regelmäßige Parameteroptimierung.

Strategiequellcode
/*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)