
A estratégia é um sistema de negociação abrangente que combina análise de múltiplos prazos, lacunas de valor justo (FVG) e quebra de estrutura (BOS). Ele identifica entradas de negociação potenciais identificando rompimentos na estrutura de preços em prazos mais altos, enquanto procura por lacunas de valor justo que se formam em prazos mais baixos. A estratégia também integra um sistema de gerenciamento de risco, incluindo definição automática de metas de stop-loss e lucro.
A lógica central da estratégia é construída em três pilares principais: primeiro, usar períodos de tempo maiores (padrão de 1 hora ou mais) para identificar rompimentos na estrutura de preços (BOS), o que fornece a estrutura básica para a direção da negociação. Em segundo lugar, procure por um Fair Value Gap (FVG) em prazos menores. A formação de um FVG indica que há um potencial desequilíbrio de oferta e demanda no mercado nessa área. Por fim, essas duas condições são combinadas com a posição atual do preço para acionar um sinal de negociação quando o preço estiver em uma posição favorável. O sistema gerencia o risco de cada negociação por meio da relação risco-recompensa e do fator stop-loss.
A estratégia cria um sistema de negociação completo combinando análise de vários períodos de tempo, avanços na estrutura de preços e lacunas de valor justo. Suas vantagens estão em seus métodos de análise multidimensionais e mecanismo perfeito de gerenciamento de risco, mas os traders ainda precisam realizar a otimização de parâmetros e o controle de risco apropriados com base nas condições reais do mercado. A otimização subsequente pode começar pela confirmação do sinal, ajuste dinâmico de parâmetros e filtragem do ambiente de mercado para melhorar ainda mais a estabilidade e a confiabilidade da estratégia.
/*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)