Esta estrategia es un sistema de negociación integral que combina análisis de marcos de tiempo múltiples, brecha de valor justo (FVG) y ruptura de estructura (BOS). Identifica entradas comerciales potenciales mediante la detección de rupturas de estructura en marcos de tiempo más altos mientras busca oportunidades de brecha de valor justo en marcos de tiempo más bajos. La estrategia también incorpora un sistema de gestión de riesgos con configuraciones automatizadas de stop-loss y take-profit.
La lógica básica se basa en tres pilares principales: primero, utiliza un marco de tiempo más alto (por defecto 1 hora o más) para identificar la ruptura de la estructura (BOS), que proporciona el marco fundamental para la dirección de la negociación. Segundo, busca las brechas de valor justo (FVG) en marcos de tiempo más bajos, lo que indica posibles desequilibrios de la oferta y la demanda en esas áreas. Finalmente, combina estas condiciones con la posición actual del precio para desencadenar señales de negociación cuando el precio está en ubicaciones favorables.
Esta estrategia construye un sistema de negociación completo mediante el uso integral del análisis de marcos de tiempo múltiples, las rupturas de la estructura de precios y las brechas en el valor razonable. Sus fortalezas se encuentran en su enfoque de análisis multidimensional y mecanismos integrales de gestión de riesgos, pero los operadores aún necesitan optimizar los parámetros y controlar los riesgos de acuerdo con las condiciones reales del mercado.
/*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)