Dynamische Liquidität bestimmt die Marktstruktur und adaptive Handelsstrategien

LZ MSS SL TP ISL
Erstellungsdatum: 2025-03-28 17:13:02 zuletzt geändert: 2025-03-28 17:13:02
Kopie: 2 Klicks: 350
2
konzentrieren Sie sich auf
319
Anhänger

Dynamische Liquidität bestimmt die Marktstruktur und adaptive Handelsstrategien Dynamische Liquidität bestimmt die Marktstruktur und adaptive Handelsstrategien

Überblick

Es handelt sich um eine innovative Handelsstrategie, die eine Kombination aus liquiditätsbezogener Zonenanalyse und interner Marktstrukturdynamiken zur Identifizierung von Eintrittspunkten mit hoher Wahrscheinlichkeit bietet. Die Strategie bietet Händlern eine flexible und präzise Methode zum Markteintritt, indem sie die Interaktion zwischen Preisen und wichtigen Marktniveaus verfolgt und Transaktionen ausgelöst wird, die sich auf die internen Märkte konzentrieren.

Strategieprinzip

Die Kernlogik der Strategie basiert auf zwei wichtigen Komponenten: die Identifizierung von Liquiditätszonen und die Umstellung des Innenmarkts. Die Liquiditätszonen werden dynamisch durch die Analyse lokaler Höhen und Tiefen bestimmt, während die Umstellung des Innenmarkts die Änderung der Marktrichtung basierend auf dem Preis, der das vorherige bullische oder bearische Niveau durchbrochen hat, beurteilt.

Die Strategie hat folgende Kernmerkmale:

  1. Die Logik der Umstellung des Binnenmarkts: Nicht auf die herkömmliche Graphik angewiesen, sondern auf der Grundlage eines Preisbruchs
  2. Liquiditätszonen-Tracking: Dynamische Identifizierung von wichtigen Liquiditätszonen, um den Handel unter schwachen Marktbedingungen zu verhindern
  3. Modellflexibilität: Die drei Handelsmodelle “Both”, “Bullish Only” und “Bearish Only” sind verfügbar
  4. Risikomanagement: Anpassbare Stop-Loss- und Stop-Out-Levels
  5. Zeitbereichssteuerung: Präzise Kontrolle der Transaktionszeiten

Strategische Vorteile

  1. Dynamische Anpassungsfähigkeit: Strategien, die schnell auf Veränderungen der Marktstruktur reagieren
  2. Präzise Eintritt: Erhöhung der Eintrittsgenauigkeit durch Kombination von Liquiditätszonen und Umstellung auf den Binnenmarkt
  3. Gefährdungsfrei: Ein integriertes Stop-and-Stop-System
  4. Flexibilität: Die Wahl des Handelsmodells ist in Abhängigkeit von den Marktbedingungen möglich
  5. Mehrdimensionale Analyse: Preisverhalten, Liquidität und Marktstruktur berücksichtigt

Strategisches Risiko

  1. Schwere Marktschwankungen können dazu führen, dass Stop-Losses ausgelöst werden
  2. Häufige Signale können die Kosten für den Handel erhöhen, wenn die Märkte schwanken
  3. Falsche Parametereinstellungen können die Leistung der Strategie beeinträchtigen
  4. Die Ergebnisse können von den Festplatten abweichen.

Richtung der Strategieoptimierung

  1. Einführung von Machine-Learning-Algorithmen zur Optimierung der Parameteranpassung
  2. Erweiterte Filterbedingungen wie Volumen, Volatilitätsindikatoren
  3. Entwicklung eines Multi-Time-Framework-Verifizierungsmechanismus
  4. Optimierung von Stop-Loss- und Stop-Stop-Algorithmen unter Berücksichtigung der dynamischen Anpassung der Marktfluktuation

Zusammenfassen

Es handelt sich um eine innovative Handelsstrategie, die Liquiditätsanalyse und Marktstrukturdynamiken miteinander verbindet. Die Strategie bietet den Händlern ein leistungsfähiges Handelsinstrument durch flexible interne Marktumrechnungslogiken und präzise Liquiditätsregionalanalyse. Die Schlüssel der Strategie liegt in ihrer Anpassungsfähigkeit und ihren vieldimensionalen Analysefähigkeiten, die eine hohe Ausführungseffizienz unter verschiedenen Marktbedingungen gewährleisten.

Strategiequellcode
/*backtest
start: 2024-03-28 00:00:00
end: 2025-03-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Liquidity + Internal Market Shift Strategy", overlay=true)

// ======== Mode Selection ========
mode = input.string("Both", title="Mode", options=["Both", "Bullish Only", "Bearish Only"])

// ======== Stop-Loss and Take-Profit Input (in pips) ========
enableTakeProfit = input.bool(true, title="Enable Custom Take Profit")  // Option to enable/disable take profit
stopLossPips = input.int(10, title="Stop Loss (in pips)", minval=1)  // Stop loss in pips
takeProfitPips = input.int(20, title="Take Profit (in pips)", minval=1)  // Take profit in pips

// ======== Internal Shift Logic ========

// Fixed number of consecutive candles to track (set to 1)
consecutiveBullishCount = 1
consecutiveBearishCount = 1

// Function to check for bullish and bearish candles
isBullish = close > open
isBearish = close < open

// Variables to track consecutive candles and mark lowest/highest
var int bullishCount = 0
var int bearishCount = 0
var float lowestBullishPrice = na
var float highestBearishPrice = na
var float previousBullishPrice = na // For the previous bullish lowest price
var float previousBearishPrice = na // For the previous bearish highest price

// Variables to track last internal shift type (1 = Bullish, -1 = Bearish, 0 = None)
var int lastInternalShift = 0

// Counting consecutive bullish and bearish candles
if isBullish
    bullishCount := bullishCount + 1
    bearishCount := 0
    if bullishCount == 1 or low < lowestBullishPrice
        lowestBullishPrice := low
else if isBearish
    bearishCount := bearishCount + 1
    bullishCount := 0
    if bearishCount == 1 or high > highestBearishPrice
        highestBearishPrice := high
else
    bullishCount := 0
    bearishCount := 0
    lowestBullishPrice := na
    highestBearishPrice := na

// Internal shift conditions
internalShiftBearish = close < previousBullishPrice and close < lowestBullishPrice
internalShiftBullish = close > previousBearishPrice and close > highestBearishPrice

// Condition to alternate internal shifts
allowInternalShiftBearish = internalShiftBearish and lastInternalShift != -1
allowInternalShiftBullish = internalShiftBullish and lastInternalShift != 1

// Tracking shifts
if bullishCount >= consecutiveBullishCount
    previousBullishPrice := lowestBullishPrice

if bearishCount >= consecutiveBearishCount
    previousBearishPrice := highestBearishPrice

// ======== Liquidity Seal-Off Points Logic ========
upperLiquidityLookback = input.int(10, title="Lookback Period for Upper Liquidity Line")
lowerLiquidityLookback = input.int(10, title="Lookback Period for Lower Liquidity Line")

isLocalHigh = high == ta.highest(high, upperLiquidityLookback)
isLocalLow = low == ta.lowest(low, lowerLiquidityLookback)

var bool touchedLowerLiquidityLine = false
var bool touchedUpperLiquidityLine = false

if (low <= ta.lowest(low, lowerLiquidityLookback))
    touchedLowerLiquidityLine := true

if (high >= ta.highest(high, upperLiquidityLookback))
    touchedUpperLiquidityLine := true

var bool lockedBullish = false
var bool lockedBearish = false
var int barSinceLiquidityTouch = na

// ======== Combined Signals ========
bullishSignal = allowInternalShiftBullish and touchedLowerLiquidityLine and not lockedBullish
bearishSignal = allowInternalShiftBearish and touchedUpperLiquidityLine and not lockedBearish

if bullishSignal
    lockedBullish := true
    touchedLowerLiquidityLine := false
    barSinceLiquidityTouch := 0

if bearishSignal
    lockedBearish := true
    touchedUpperLiquidityLine := false
    barSinceLiquidityTouch := 0

if not na(barSinceLiquidityTouch)
    barSinceLiquidityTouch := barSinceLiquidityTouch + 1

if barSinceLiquidityTouch >= 3
    lockedBullish := false
    lockedBearish := false

if touchedLowerLiquidityLine
    lockedBullish := false

if touchedUpperLiquidityLine
    lockedBearish := false

// ======== Plot Combined Signals ========
plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Bullish Signal")
plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Bearish Signal")

plot(isLocalHigh ? high : na, color=color.red, linewidth=2, style=plot.style_stepline, title="Local High Line")
plot(isLocalLow ? low : na, color=color.green, linewidth=2, style=plot.style_stepline, title="Local Low Line")

// ======== Track Entry and Opposing Signals ========
var float entryPrice = na
var int entryTime = na
var string positionSide = ""

// ======== Strategy Execution (Mode Logic) ========
if (mode == "Both")
    // Short Entry Logic (Bearish Signal)
    if (bearishSignal and na(entryPrice))
        strategy.entry("Short", strategy.short)
        entryPrice := close
        entryTime := time
        positionSide := "short"
    
    // Long Entry Logic (Bullish Signal)
    if (bullishSignal and na(entryPrice))
        strategy.entry("Long", strategy.long)
        entryPrice := close
        entryTime := time
        positionSide := "long"

    // Exit Logic: Close on Opposing Signal (after the current signal is triggered)
    if (positionSide == "short" and bullishSignal )
        strategy.close("Short")
        entryPrice := na
        positionSide := ""
    
    if (positionSide == "long" and bearishSignal)
        strategy.close("Long")
        entryPrice := na
        positionSide := ""
    
    // Stop-Loss and Take-Profit Logic (in pips)
    stopLossPriceLong = entryPrice - stopLossPips * syminfo.mintick
    takeProfitPriceLong = entryPrice + takeProfitPips * syminfo.mintick
    stopLossPriceShort = entryPrice + stopLossPips * syminfo.mintick
    takeProfitPriceShort = entryPrice - takeProfitPips * syminfo.mintick
    
    // Long Stop-Loss and Take-Profit Conditions
    if (positionSide == "long" and close <= stopLossPriceLong)
        strategy.close("Long", comment="Stop Loss Triggered")
        entryPrice := na
        positionSide := ""

    if (positionSide == "long" and enableTakeProfit and close >= takeProfitPriceLong)
        strategy.close("Long", comment="Take Profit Triggered")
        entryPrice := na
        positionSide := ""

    // Short Stop-Loss and Take-Profit Conditions
    if (positionSide == "short" and close >= stopLossPriceShort)
        strategy.close("Short", comment="Stop Loss Triggered")
        entryPrice := na
        positionSide := ""

    if (positionSide == "short" and enableTakeProfit and close <= takeProfitPriceShort)
        strategy.close("Short", comment="Take Profit Triggered")
        entryPrice := na
        positionSide := ""

if (mode == "Bullish Only")
    if (bullishSignal and na(entryPrice))
        strategy.entry("Long", strategy.long)
        entryPrice := close
        entryTime := time
        positionSide := "long"
    
    if (positionSide == "long" and bearishSignal)
        strategy.close("Long")
        entryPrice := na
        positionSide := ""

    // Stop-Loss and Take-Profit Logic (in pips)
    stopLossPriceLong = entryPrice - stopLossPips * syminfo.mintick
    takeProfitPriceLong = entryPrice + takeProfitPips * syminfo.mintick
    
    if (positionSide == "long" and close <= stopLossPriceLong)
        strategy.close("Long", comment="Stop Loss Triggered")
        entryPrice := na
        positionSide := ""

    if (positionSide == "long" and enableTakeProfit and close >= takeProfitPriceLong)
        strategy.close("Long", comment="Take Profit Triggered")
        entryPrice := na
        positionSide := ""

if (mode == "Bearish Only")
    if (bearishSignal and na(entryPrice))
        strategy.entry("Short", strategy.short)
        entryPrice := close
        entryTime := time
        positionSide := "short"
    
    if (positionSide == "short" and bullishSignal)
        strategy.close("Short")
        entryPrice := na
        positionSide := ""

    // Stop-Loss and Take-Profit Logic (in pips)
    stopLossPriceShort = entryPrice + stopLossPips * syminfo.mintick
    takeProfitPriceShort = entryPrice - takeProfitPips * syminfo.mintick
    
    if (positionSide == "short" and close >= stopLossPriceShort)
        strategy.close("Short", comment="Stop Loss Triggered")
        entryPrice := na
        positionSide := ""

    if (positionSide == "short" and enableTakeProfit and close <= takeProfitPriceShort)
        strategy.close("Short", comment="Take Profit Triggered")
        entryPrice := na
        positionSide := ""