
La estrategia es un sistema comercial integral que combina análisis de múltiples marcos temporales, brechas de valor justo (FVG) y ruptura de estructura (BOS). Identifica posibles entradas comerciales identificando rupturas en la estructura de precios en marcos temporales más altos y buscando la formación de brechas de valor justo en marcos temporales más bajos. La estrategia también integra un sistema de gestión de riesgos, incluyendo el establecimiento automático de objetivos de stop loss y de beneficios.
La lógica central de la estrategia se basa en tres pilares principales: primero, utilizar marcos de tiempo más altos (predeterminado 1 hora o más) para identificar rupturas en la estructura de precios (BOS), que proporciona el marco básico para la dirección comercial. En segundo lugar, busque una brecha de valor razonable (FVG) en marcos temporales más bajos. La formación de una FVG indica que existe un posible desequilibrio entre la oferta y la demanda en el mercado en esta área. Finalmente, estas dos condiciones se combinan con la posición de precio actual para activar una señal comercial cuando el precio está en una posición favorable. El sistema gestiona el riesgo de cada operación a través de la relación riesgo-recompensa y el factor stop-loss.
La estrategia construye un sistema comercial completo combinando análisis de múltiples períodos de tiempo, avances en la estructura de precios y brechas de valor justo. Sus ventajas radican en sus métodos de análisis multidimensional y su mecanismo perfecto de gestión de riesgos, pero los operadores aún necesitan realizar una optimización de parámetros y un control de riesgos adecuados en función de las condiciones reales del mercado. La optimización posterior puede comenzar desde la confirmación de la señal, el ajuste dinámico de parámetros y el filtrado del entorno del mercado para mejorar aún más la estabilidad y confiabilidad de la estrategia.
/*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)