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.
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.
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)