Stratégie de trading quantitative à haute fréquence : système de gestion de position dynamique adaptatif basé sur des signaux révolutionnaires


Date de création: 2024-12-12 14:59:28 Dernière modification: 2024-12-12 14:59:28
Copier: 1 Nombre de clics: 437
1
Suivre
1617
Abonnés

Stratégie de trading quantitative à haute fréquence : système de gestion de position dynamique adaptatif basé sur des signaux révolutionnaires

Aperçu

La stratégie est un système de trading quantifié à haute fréquence qui se concentre sur la capture d’opportunités de rupture de prix pendant les heures de négociation à Londres et aux États-Unis. Elle permet de réaliser des gains de trading stables grâce à des heures de négociation personnalisées (les “ Kill Zones “), une gestion dynamique des positions et une gestion précise des ordres.

Principe de stratégie

La stratégie fonctionne principalement selon les principes clés suivants:

  1. Sélection des périodes: la stratégie se concentre sur les périodes de négociation à Londres et aux États-Unis, qui sont généralement plus fluides et volatiles.
  2. Signal de rupture: identifier les opportunités de rupture potentielles en analysant la relation entre le prix de clôture et le prix d’ouverture actuels et en les comparant aux hauts et aux bas de la période précédente.
  3. Position dynamique: taille de la position pour chaque transaction calculée en fonction de l’intérêt, du pourcentage de risque et de la distance de stop-loss du compte.
  4. Gestion des commandes: un mécanisme d’annulation automatique est mis en place pour éviter les risques potentiels liés aux commandes expirées.
  5. Résultat/risque: permet au trader de définir le résultat/risque en fonction de ses préférences personnelles en matière de risque.

Avantages stratégiques

  1. Gestion précise du temps: en personnalisant les périodes de transaction, assurez-vous que les transactions sont effectuées aux heures les plus fluides.
  2. Gestion intelligente des positions: calculer dynamiquement la taille des positions et contrôler efficacement le seuil de risque de chaque transaction.
  3. La configuration des paramètres est flexible: les traders peuvent ajuster les paramètres en fonction de leurs besoins personnels.
  4. Contrôle des risques: un mécanisme de contrôle des risques multiple, comme les arrêts de perte, les arrêts de vente et les annulations de commandes en retard.
  5. Le niveau d’automatisation est élevé: l’ensemble du processus, de la génération de signaux à la gestion des commandes, est entièrement automatisé, réduisant l’intervention humaine.

Risque stratégique

  1. Risque de fluctuation du marché: un signal de rupture erroné peut être déclenché pendant une période de forte volatilité.
  2. Risque de dérapage: les dérapages dans les transactions à haute fréquence peuvent affecter la performance de la stratégie.
  3. Risque de fausse rupture: le marché peut subir une fausse rupture entraînant des pertes de transactions.
  4. Risque de liquidité: la mobilité insuffisante à un moment donné peut affecter l’exécution des commandes.

Orientation de l’optimisation de la stratégie

  1. Introduction d’un filtre de volatilité: optimiser le moment d’entrée en bourse en analysant les fluctuations du marché.
  2. Augmentation du filtrage des tendances: en combinaison avec des indicateurs de tendances à plus long terme pour une meilleure précision de la direction des transactions.
  3. Optimisation de la fenêtre de temps: réglage de la période de transaction en fonction de l’analyse des données historiques.
  4. Amélioration de la gestion des positions: envisagez d’ajouter un mécanisme d’ajustement dynamique des positions basé sur la volatilité.

Résumer

Cette stratégie utilise une approche intégrée de gestion de plusieurs dimensions telles que le temps, le prix et la position pour construire un système complet de négociation à haute fréquence. Son avantage central réside dans la saisie précise du moment de la négociation et un mécanisme de gestion du risque parfait, mais il faut également que le trader surveille de près les changements de l’environnement du marché et ajuste les paramètres en temps opportun.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("ENIGMA ENDGAME Strategy", overlay=true, margin_long=100, margin_short=100)

// Description: 
// The ENIGMA ENDGAME strategy leverages price action breakouts within specific kill zones (London and US sessions) to capture profitable opportunities. 
// The strategy uses dynamic position sizing based on account equity, precise entry logic via buy-stop and sell-stop orders, and robust risk management to achieve consistent profitability. 
// Features include:
// - Customizable kill zones for session-specific trading.
// - Risk management with dynamic position sizing based on user-defined percentages.
// - Multiple entry opportunities with lookback-based high/low tracking.
// - Automatic pending order cancellation to avoid stale trades.
// - Adjustable risk-reward ratios for optimal profit-taking.

// Define customizable kill zones for London and US sessions
london_start_hour = input.int(2, minval=0, maxval=23, title="London Start Hour (UTC)")
london_end_hour = input.int(5, minval=0, maxval=23, title="London End Hour (UTC)")
us_start_hour = input.int(8, minval=0, maxval=23, title="US Start Hour (UTC)")
us_end_hour = input.int(11, minval=0, maxval=23, title="US End Hour (UTC)")

// Risk management parameters
risk_percentage = input.float(0.1, title="Risk Percentage per Trade (%)", step=0.01)
account_balance = strategy.equity

// Define lookback parameters
lookback_period = 3
cancel_after_bars = input.int(5, title="Cancel Pending Orders After Bars")

// User-defined risk-reward ratio
risk_reward_ratio = input.float(1.0, title="Risk-Reward Ratio", minval=0.1, step=0.1)

// Kill zone function
in_kill_zone = (hour(time) >= london_start_hour and hour(time) < london_end_hour) or (hour(time) >= us_start_hour and hour(time) < us_end_hour)

// Calculate Position Size Based on Risk
calc_position_size(entry_price, stop_loss) =>
    // This function calculates the position size based on the account equity, risk percentage, and stop-loss distance.
    risk = account_balance * (risk_percentage / 100)
    stop_loss_distance = math.abs(entry_price - stop_loss)
    // Validate stop-loss distance
    stop_loss_distance := stop_loss_distance < syminfo.mintick * 10 ? syminfo.mintick * 10 : stop_loss_distance
    position_size = risk / stop_loss_distance
    // Clamp position size
    math.min(position_size, 10000000000.0) // Limit to Pine Script max qty

// Initialize arrays to store high/low levels
var float[] buy_highs = array.new_float(0)
var float[] sell_lows = array.new_float(0)
var int[] pending_orders = array.new_int(0)

// Buy and Sell Arrow Conditions
bullish_arrow = close > open and close > high[1] and in_kill_zone // Triggers buy logic when price action breaks out in the upward direction within a kill zone.
bearish_arrow = close < open and close < low[1] and in_kill_zone // Triggers sell logic when price action breaks out in the downward direction within a kill zone.

// Store Highs and Place Buy-Stops
if bullish_arrow
    array.clear(buy_highs) // Clears previous data to store new highs.
    for i = 1 to lookback_period
        array.push(buy_highs, high[i]) // Tracks highs from the lookback period.
    
    // Place buy-stop orders
    for high_level in buy_highs
        stop_loss = low - syminfo.mintick * 10 // 1 pip below the low
        take_profit = high_level + (high_level - stop_loss) * risk_reward_ratio // Calculate take-profit based on the risk-reward ratio.
        strategy.entry("Buy", strategy.long, stop=high_level, qty=calc_position_size(high_level, stop_loss))
        strategy.exit("Take Profit", "Buy", limit=take_profit, stop=stop_loss)

// Store Lows and Place Sell-Stops
if bearish_arrow
    array.clear(sell_lows) // Clears previous data to store new lows.
    for i = 1 to lookback_period
        array.push(sell_lows, low[i]) // Tracks lows from the lookback period.
    
    // Place sell-stop orders
    for low_level in sell_lows
        stop_loss = high + syminfo.mintick * 10 // 1 pip above the high
        take_profit = low_level - (stop_loss - low_level) * risk_reward_ratio // Calculate take-profit based on the risk-reward ratio.
        strategy.entry("Sell", strategy.short, stop=low_level, qty=calc_position_size(low_level, stop_loss))
        strategy.exit("Take Profit", "Sell", limit=take_profit, stop=stop_loss)

// Cancel Pending Orders After Defined Bars
if array.size(pending_orders) > 0
    for i = 0 to array.size(pending_orders) - 1
        if bar_index - array.get(pending_orders, i) >= cancel_after_bars
            array.remove(pending_orders, i) // Removes outdated pending orders.

// Alerts for debugging
alertcondition(bullish_arrow, title="Buy Alert", message="Buy signal generated.")
alertcondition(bearish_arrow, title="Sell Alert", message="Sell signal generated.")