
La stratégie est un système de trading complet qui combine plusieurs analyses de périodes de temps, des écarts de juste valeur (FVG) et une rupture de structure (BOS). Il identifie les entrées commerciales potentielles en identifiant les ruptures dans la structure des prix sur des périodes plus longues tout en recherchant la formation d’écarts de juste valeur sur des périodes plus courtes. La stratégie intègre également un système de gestion des risques, incluant la définition automatique d’objectifs de stop-loss et de profit.
La logique de base de la stratégie repose sur trois piliers principaux : Premièrement, l’utilisation de délais plus longs (par défaut 1 heure ou plus) pour identifier les cassures dans la structure des prix (BOS), qui fournit le cadre de base pour la direction du trading. Deuxièmement, recherchez un écart de juste valeur (FVG) sur des périodes plus courtes. La formation d’un FVG indique qu’il existe un déséquilibre potentiel entre l’offre et la demande sur le marché dans cette zone. Enfin, ces deux conditions sont combinées à la position de prix actuelle pour déclencher un signal de trading lorsque le prix est dans une position favorable. Le système gère le risque de chaque transaction grâce au ratio risque/récompense et au facteur stop-loss.
La stratégie construit un système de trading complet en combinant une analyse sur plusieurs périodes, des percées dans la structure des prix et des écarts de juste valeur. Ses avantages résident dans ses méthodes d’analyse multidimensionnelles et son mécanisme parfait de gestion des risques, mais les traders doivent toujours effectuer une optimisation des paramètres et un contrôle des risques appropriés en fonction des conditions réelles du marché. L’optimisation ultérieure peut commencer par la confirmation du signal, l’ajustement des paramètres dynamiques et le filtrage de l’environnement du marché pour améliorer encore la stabilité et la fiabilité de la stratégie.
/*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)