Die Ressourcen sind geladen. Beförderung...

Mehrzeitrahmenstrategie für die Ausbreitung der Fair Value Gap mit historischem Backtest

Schriftsteller:ChaoZhang, Datum: 2025-01-17 14:45:10
Tags:FVGBOSHTFRRSL

 Multi-timeframe Fair Value Gap Breakout Strategy with Historical Backtest

Strategieübersicht

Diese Strategie ist ein umfassendes Handelssystem, das Multi-Timeframe-Analyse, Fair Value Gap (FVG) und Break of Structure (BOS) kombiniert. Es identifiziert potenzielle Handelsbeiträge, indem es Struktur-Breakouts in höheren Zeitrahmen erkennt und gleichzeitig nach Chancen für Fair Value Gap in niedrigeren Zeitrahmen sucht. Die Strategie enthält auch ein Risikomanagementsystem mit automatisierten Stop-Loss- und Take-Profit-Einstellungen.

Strategieprinzipien

Die Kernlogik basiert auf drei Hauptpfeilern: Erstens verwendet es einen höheren Zeitrahmen (Standard 1 Stunde oder höher), um den Break of Structure (BOS) zu identifizieren, der den grundlegenden Rahmen für die Handelsrichtung bietet. Zweitens sucht es nach Fair Value Gaps (FVG) in niedrigeren Zeitrahmen, was auf potenzielle Angebots-Nachfrage-Ungleichgewichte in diesen Bereichen hinweist. Schließlich kombiniert es diese Bedingungen mit der aktuellen Preisposition, um Handelssignale auszulösen, wenn der Preis an günstigen Standorten ist. Das System steuert das Risiko durch Risiko-Belohnung-Verhältnisse und Stop-Loss-Faktoren.

Strategische Vorteile

  1. Multidimensionale Analyse: kombiniert mehrere Zeitrahmenanalysen, um die Signalzuverlässigkeit zu verbessern.
  2. Umfassendes Risikomanagement: Eingebundene Risikovergütungseinstellungen und Stop-Loss-Kontrollmechanismen sorgen für ein klares Risikomanagement für jeden Handel.
  3. Visuelles Feedback: Die Strategie liefert ein klares visuelles Feedback, einschließlich der Anzeige von FVG-Boxen und potenziellen Handelsmarkern.
  4. Hohe Anpassungsfähigkeit: Durch die Anpassung der Parameter kann sich die Strategie an verschiedene Marktbedingungen und Handelsstile anpassen.

Strategische Risiken

  1. Falsches Ausbruchrisiko: Die Märkte können falsche Ausbrüche aufweisen, die zu falschen Handelssignalen führen. Die Lösung besteht darin, Signalbestätigungsmechanismen hinzuzufügen.
  2. Signalverzögerung: Aufgrund der Verwendung höherer Zeitrahmendaten kann es zu Signalverzögerungen kommen.
  3. Marktvolatilitätsrisiko: In Zeiten hoher Volatilität ist die FVG-Bildung möglicherweise nicht stabil.

Strategieoptimierungsrichtlinien

  1. Signalfilterung: Zusatz eines Volumenbestätigungsmechanismus, um Signale nur dann zu bestätigen, wenn sie durch Volumen unterstützt werden.
  2. Dynamische Parameter: Die Risiko-Rendite-Ratio und den Stop-Loss-Faktor anhand der Marktvolatilität dynamisch anpassen.
  3. Trendfilterung: Hinzufügen von Trend-Identifikationsindikatoren, um nur in Trendrichtung zu positionieren.
  4. Zeitfilterung: Fügen Sie Filter für Handelssitzungen hinzu, um den Handel in ungünstigen Marktzeiten zu vermeiden.

Zusammenfassung

Diese Strategie baut ein vollständiges Handelssystem durch umfassenden Einsatz von Multi-Timeframe-Analyse, Preisstruktur-Breakouts und Fair Value-Lücken auf. Ihre Stärken liegen in ihrem mehrdimensionalen Analyseansatz und umfassenden Risikomanagementmechanismen, aber Händler müssen immer noch Parameter optimieren und Risiken entsprechend den tatsächlichen Marktbedingungen kontrollieren. Eine weitere Optimierung kann sich auf Signalbestätigung, dynamische Parameteranpassung und Filterung des Marktumfelds konzentrieren, um die Stabilität und Zuverlässigkeit der Strategie weiter zu verbessern.


/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("ICT Strategy with Historical Backtest", overlay=true)

// === Настройки ===
tf = input.timeframe("60", title="Higher Timeframe (1H or above)")  // Таймфрейм для анализа BOS
fvg_length = input(3, title="FVG Lookback Length")                   // Длина для поиска FVG
risk_reward = input(2, title="Risk-Reward Ratio")                    // Риск-вознаграждение
show_fvg_boxes = input(true, title="Show FVG Boxes")                 // Показывать FVG
stop_loss_factor = input.float(1.0, title="Stop Loss Factor")         // Множитель для стоп-лосса

// === Переменные для анализа ===
var float bos_high = na
var float bos_low = na

// Получаем данные с более старшего таймфрейма
htf_high = request.security(syminfo.tickerid, tf, high)
htf_low = request.security(syminfo.tickerid, tf, low)
htf_close = request.security(syminfo.tickerid, tf, close)

// Определение BOS (Break of Structure) на старшем таймфрейме
bos_up = ta.highest(htf_high, fvg_length) > ta.highest(htf_high[1], fvg_length)
bos_down = ta.lowest(htf_low, fvg_length) < ta.lowest(htf_low[1], fvg_length)

// Обновляем уровни BOS
if (bos_up)
    bos_high := ta.highest(htf_high, fvg_length)
if (bos_down)
    bos_low := ta.lowest(htf_low, fvg_length)

// === Определение FVG (Fair Value Gap) ===
fvg_up = low > high[1] and low[1] > high[2]
fvg_down = high < low[1] and high[1] < low[2]

// Визуализация FVG (Fair Value Gap)
// if (show_fvg_boxes)
//     if (fvg_up)
//         box.new(left=bar_index[1], top=high[1], right=bar_index, bottom=low, bgcolor=color.new(color.green, 90), border_color=color.green)
//     if (fvg_down)
//         box.new(left=bar_index[1], top=high, right=bar_index, bottom=low[1], bgcolor=color.new(color.red, 90), border_color=color.red)

// === Логика сделок ===
// Условия для входа в Лонг
long_condition = bos_up and fvg_up and close < bos_high
if (long_condition)
    strategy.entry("Long", strategy.long, stop=low * stop_loss_factor, limit=low + (high - low) * risk_reward)

// Условия для входа в Шорт
short_condition = bos_down and fvg_down and close > bos_low
if (short_condition)
    strategy.entry("Short", strategy.short, stop=high * stop_loss_factor, limit=high - (high - low) * risk_reward)

// === Надписи для прогнозируемых сделок ===
if (long_condition)
    label.new(bar_index, low, text="Potential Long", color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)

if (short_condition)
    label.new(bar_index, high, text="Potential Short", color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)


Verwandt

Mehr