Système de suivi des signaux de trading quantitatifs et d'optimisation de la stratégie de sortie diversifiée


Date de création: 2024-12-13 11:39:06 Dernière modification: 2024-12-13 11:39:06
Copier: 2 Nombre de clics: 367
1
Suivre
1617
Abonnés

Système de suivi des signaux de trading quantitatifs et d’optimisation de la stratégie de sortie diversifiée

Aperçu

La stratégie est un système de trading quantitatif basé sur des signaux LuxAlgo® et des indicateurs de superposition. Il ouvre des positions multiples en capturant des conditions d’alerte personnalisées et en combinant plusieurs signaux de sortie pour gérer la tenue. Le système est conçu de manière modulaire et prend en charge une combinaison de conditions de sortie multiples, y compris le suivi des pertes intelligentes, la confirmation du renversement de tendance et les pertes en pourcentage traditionnelles.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. Système de signaux d’entrée: déclenche un signal d’entrée à plusieurs têtes via des conditions d’alerte LuxAlgo® personnalisées.
  2. Gestion de la mise: la fonction de mise en place peut être activée de manière sélective pour augmenter la position sur la base des positions existantes.
  3. Le mécanisme de retrait à plusieurs niveaux:
    • Stop-loss de suivi intelligent: le lien entre la surveillance des prix et les lignes de suivi intelligentes
    • Confirmation de la tendance à l’extérieur: signaux de confirmation de la tête vide pour les versions de base et améliorées
    • Signaux de sortie intégrés: utilisation des conditions de sortie multiples de la bande d’indicateur
    • Stop traditionnel: prise en charge des paramètres de stop fixes basés sur le pourcentage
  4. Gestion de la fenêtre de temps: offre une fonctionnalité de réglage de la date de retour flexible.

Avantages stratégiques

  1. Gestion systématique des risques: contrôle efficace des risques de baisse par un mécanisme de sortie à plusieurs niveaux.
  2. Gestion de position flexible: prise en charge de plusieurs stratégies de prise et de retrait de position, adaptée à la dynamique du marché.
  3. Haute personnalisation: les utilisateurs peuvent combiner différentes conditions de retrait pour créer un système de transaction personnalisé.
  4. La conception modulaire: les modules fonctionnels sont relativement indépendants pour faciliter la maintenance et l’optimisation.
  5. Prise en charge complète du retour: fournit des paramètres de retour détaillés et prend en charge la vérification des données historiques.

Risque stratégique

  1. Risque de dépendance au signal: la stratégie dépend fortement de la qualité du signal de l’indicateur LuxAlgo®.
  2. Risque d’adaptation au marché: les performances des stratégies peuvent varier considérablement selon le marché.
  3. Risque de sensibilité des paramètres: la combinaison de plusieurs conditions d’exit peut entraîner une sortie prématurée ou une occasion manquée.
  4. Risques liés à la liquidité: lorsque la liquidité du marché est insuffisante, cela peut affecter l’efficacité de l’exécution des entrées et des sorties.
  5. Risques de réalisation technique: il est nécessaire d’assurer la stabilité des indicateurs et des stratégies afin d’éviter les pannes techniques.

Orientation de l’optimisation de la stratégie

  1. Optimisation du système de signalisation:
    • Introduction de plus d’indicateurs techniques pour la détection des signaux
    • Développement de mécanismes d’ajustement de seuil de signal adaptatifs
  2. Le contrôle des risques est renforcé:
    • Le mécanisme d’arrêt de la volatilité additive
    • Développer un système de gestion de position dynamique
  3. Optimisation des performances:
    • Optimiser l’efficacité du calcul et réduire la consommation de ressources
    • Amélioration de la logique de traitement des signaux et réduction des délais
  4. Fonctionnalités étendues:
    • Ajout d’outils d’analyse de l’environnement du marché
    • Développer un cadre d’optimisation des paramètres plus flexible

Résumer

La stratégie offre une solution complète pour le trading quantitatif en combinant des signaux de haute qualité et un système de gestion des risques à plusieurs niveaux de LuxAlgo®. Sa conception modulaire et ses options de configuration flexibles lui confèrent une bonne adaptabilité et une grande extensibilité. Bien que certains risques inhérents existent, la performance globale de la stratégie peut être améliorée de manière significative par une optimisation et une amélioration continues.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Chart0bserver
// This strategy is NOT from the LuxAlgo® developers.  We created this to compliment their hard work.  No association with LuxAlgo® is intended nor implied.

// Please visit https://chart.observer to test your Tradingview Strategies in our paper-trading sandbox environment. Webhook your alerts to our API.
// Past performance does not ensure future results.  This strategy provided with absolutely no warranty and is for educational purposes only

// The goal of this strategy is to enter a long position using the Custom Alert condition feature of LuxAlgo® Signals & Overlays™ indicator
// To trigger an exit from the long position, use one or more of the common exit signals which the Signals & Overlays™ indicator provides.
// You will need to connect those signals to this strategy in the dialog box.  
// We're calling this a "piggyback" strategy because the LuxAlgo® Signals & Overlays indicator must be present, and remain on the chart.
// The Signals and Overlays™ indicator is invite-only, and requires a paid subscription from LuxAlgo® - https://luxalgo.com/?rfsn=8404759.b37a73

//@version=6
strategy("Simple Backtester for LuxAlgo® Signals & Overlays™", "Simple Backtester for LuxAlgo® S&O ", true, pyramiding=3, default_qty_type = 'percent_of_equity', calc_on_every_tick = true, process_orders_on_close=false, calc_on_order_fills=true, default_qty_value = 33, initial_capital = 10000, currency = currency.USD, commission_type = format.percent, commission_value = 0.10 )

// Initialize a flag to track order placement
var bool order_placed = false

// Reset the flag at the start of each new bar
if (not na(bar_index) and bar_index != bar_index[1])
    order_placed := false

// === Inputs which the user needs to change in the configuration dialog to point to the corresponding LuxAlgo alerts === //
// === The Signals & Overlays indicator must be present on the chart in order for this to work === //
la_EntryAlert = input.source(close, "LuxAlgo® Custom Alert signal", "Replace 'close' with your LuxAlgo® entry signal. For example, try using their Custom Alert.", display=display.none, group="Enter Long Position")
useAddOnTrades = input.bool(false, "Add to your long position on LuxAlgo® signals", display=display.none, group="Add-On Trade Signal for Longs")
la_AddOnAlert = input.source(close, "Add to open longs with this signal", "Replace 'close' with your desired Add-On Trade Signal", display=display.none, group="Add-On Trade Signal for Longs")
la_SmartTrail = input.source(close, "LuxAlgo® Smart Trail", "Replace close with LuxAlgo® Smart Trail", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BearishConfirm = input.source(close, "LuxAlgo® Any Bearish Confirmation", "Replace close with LuxAlgo® Any Bearish Confirmation", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BearishConfirmPlus = input.source(close, "LuxAlgo® Bearish Confirmation+", "Replace close with LuxAlgo® Bearish Confirmation+", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BuiltInExits = input.source(close, "LuxAlgo® Bullish Exit", "Replace close with LuxAlgo® Bullish Exit", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_TrendCatcherDn = input.source(close, "LuxAlgo® Trend Catcher Down", "Replace close with LuxAlgo® Trend Catcher Down", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")

// === Check boxes alowing the user to select exit criteria from th long position === //
exitOnSmartTrail = input.bool(true, "Exit long trade on Smart Trail Switch Bearish", group="Exit Long Conditions")
exitOnBearishConf = input.bool(false, "Exit on Any Bearish Confirmation", group="Exit Long Conditions")
exitOnBearishConfPlus = input.bool(true, "Exit on Bearish Confirmation+", group="Exit Long Conditions")
exitOnBuiltInExits = input.bool(false, "Exit on Bullish Exits", group="Exit Long Conditions")
exitOnTrendCatcher = input.bool(false, "Exit on Trend Catcher Down", group="Exit Long Conditions")

// === Optional Stop Loss ===//
useStopLoss = input.bool(false, "Use a Stop Loss", group="Optional Stop Loss")
stopLossPercent = input.float(0.25, "Stop Loss %", minval=0.25, step=0.25, group="Optional Stop Loss")

// Use Lux Algo's signals as part of your strategy logic
buyCondition = la_EntryAlert > 0 

if useAddOnTrades and la_AddOnAlert > 0 and strategy.opentrades > 0 and not buyCondition
    buyCondition := true

sellCondition = false
sellComment = ""

if exitOnSmartTrail and ta.crossunder(close, la_SmartTrail)
    sellCondition := true
    sellComment := "Smart Trail"

if exitOnBearishConf and la_BearishConfirm == 1
    sellCondition := true
    sellComment := "Bearish"

if exitOnBearishConfPlus and la_BearishConfirmPlus == 1
    sellCondition := true
    sellComment := "Bearish+"

if exitOnBuiltInExits and la_BuiltInExits == 1
    sellCondition := true
    sellComment := "Bullish Exit"

if exitOnTrendCatcher and la_TrendCatcherDn == 1
    sellCondition := true
    sellComment := "Trnd Over"

// Stop Loss Calculation
stopLossMultiplyer = 1 - (stopLossPercent / 100)
float stopLossPrice = na
if strategy.position_size > 0
    stopLossPrice := strategy.position_avg_price * stopLossMultiplyer

// -----------------------------------------------------------------------------------------------------------//
// Back-testing Date Range code  ----------------------------------------------------------------------------//
// ---------------------------------------------------------------------------------------------------------//
fromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12, group='Back-Testing Date Range')
fromDay = input.int(defval=1, title='From Day', minval=1, maxval=31, group='Back-Testing Date Range')
fromYear = input.int(defval=2024, title='From Year', minval=1970, group='Back-Testing Date Range')
thruMonth = 1 
thruDay = 1 
thruYear = 2112 

// === START/FINISH FUNCTION ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time
    time >= start and time <= finish ? true : false
// End Date range code -----//

if buyCondition and window() and not order_placed
    strategy.entry("Long", strategy.long)
    order_placed := true

if sellCondition and window() and not order_placed
    strategy.close("Long", comment=sellComment)
    order_placed := true

if useStopLoss and window()
    strategy.exit("Stop", "Long", stop=stopLossPrice)