Les ressources ont été chargées... Je charge...

Stratégie de rupture de l'écart de juste valeur sur plusieurs délais avec test historique

Auteur:ChaoZhang est là., Date: 2025-01-17 14h45min
Les étiquettes:FVGBOSHTFRRSL

 Multi-timeframe Fair Value Gap Breakout Strategy with Historical Backtest

Vue d'ensemble de la stratégie

Cette stratégie est un système de trading complet qui combine l'analyse multi-temporelle, l'écart de juste valeur (FVG) et la rupture de la structure (BOS). Elle identifie les entrées de trading potentielles en détectant les ruptures de structure sur des délais plus élevés tout en recherchant des opportunités d'écart de juste valeur sur des délais plus courts.

Principes de stratégie

La logique de base est basée sur trois piliers principaux: Premièrement, elle utilise un délai plus long (défaut 1 heure ou plus) pour identifier la rupture de la structure (BOS), qui fournit le cadre fondamental pour la direction du trading. Deuxièmement, elle recherche des écarts de juste valeur (FVG) sur des délais plus courts, indiquant des déséquilibres potentiels entre l'offre et la demande dans ces zones. Enfin, elle combine ces conditions avec la position actuelle des prix pour déclencher des signaux de trading lorsque le prix est à des emplacements favorables.

Les avantages de la stratégie

  1. Analyse multidimensionnelle: Combine l'analyse de plusieurs délais pour améliorer la fiabilité du signal.
  2. Gestion complète des risques: les paramètres intégrés de risque-récompense et les mécanismes de contrôle des arrêts de perte assurent une gestion claire des risques pour chaque transaction.
  3. Réaction visuelle: la stratégie fournit une rétroaction visuelle claire, y compris l'affichage des boîtes FVG et les indicateurs potentiels d'opportunités commerciales.
  4. Haute adaptabilité: grâce à l'ajustement des paramètres, la stratégie peut s'adapter aux différentes conditions du marché et aux différents styles de négociation.

Risques stratégiques

  1. Risque de fausse rupture: les marchés peuvent présenter de fausses ruptures conduisant à des signaux de négociation incorrects.
  2. Retard du signal: en raison de l'utilisation de données sur des délais plus longs, il peut y avoir un retard du signal. Il est recommandé de combiner avec d'autres indicateurs techniques pour la confirmation.
  3. Risque de volatilité du marché: pendant les périodes de forte volatilité, la formation de FVG peut ne pas être stable.

Directions d'optimisation de la stratégie

  1. Filtrage des signaux: ajouter un mécanisme de confirmation du volume pour confirmer les signaux uniquement lorsque le volume est pris en charge.
  2. Paramètres dynamiques: ajuster dynamiquement le ratio risque-rendement et le facteur stop-loss en fonction de la volatilité du marché.
  3. Filtrage des tendances: ajouter des indicateurs d'identification des tendances pour ne prendre que des positions dans la direction de la tendance.
  4. Filtrage du temps: Ajouter des filtres de session de négociation pour éviter de négocier pendant les périodes de marché défavorables.

Résumé

Cette stratégie construit un système de négociation complet grâce à l'utilisation complète de l'analyse multi-temporelle, des ruptures de la structure des prix et des écarts de juste valeur. Ses forces résident dans son approche d'analyse multidimensionnelle et ses mécanismes complets de gestion des risques, mais les traders doivent toujours optimiser les paramètres et contrôler les risques en fonction des conditions réelles du marché.


/*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)


Relationnée

Plus de