Noeuds lifecycle et univers
Les noeuds lifecycle et univers d’AQS exposent le modele de composants AQE dans le graphe visuel de strategie. Ils permettent de garder le comportement de strategie modulaire sans modifier manuellement le src/main.rs genere dans les projets .aqmeta.
Vous pouvez toujours ecrire cette logique inline en Rust. Les noeuds servent a segmenter le code : responsabilites separees, graphe plus clair, fichiers reutilisables et configuration plus simple dans l’editeur.
Types de noeuds
Section intitulée « Types de noeuds »AQS fournit quatre types de noeuds modulaires pour ce workflow :
- On Start Logic cree un composant
OnStartLogic. - On Init Logic cree un composant
OnInitLogic. - On Teardown Logic cree un composant
OnTeardownLogic. - Universe Model cree un composant
UniverseModel.
Les fichiers de logique lifecycle utilisent le suffixe .logic.rs. Les fichiers d’univers utilisent le suffixe .universe.rs.
Utilisation dans les projets generes
Section intitulée « Utilisation dans les projets generes »Quand un projet contient un fichier .aqmeta, AQS possede le graphe et regenere src/main.rs. Ne modifiez pas manuellement le src/main.rs genere pour ces composants. Ajoutez ou modifiez le fichier de composant, puis mettez a jour la configuration du noeud.
Le codegen gere l’enregistrement :
- les noeuds lifecycle deviennent des wrappers lifecycle AQE;
- les noeuds universe model deviennent des wrappers d’univers AQE;
- les arguments de constructeur sont exposes comme proprietes publiques du noeud;
- les champs prives de struct peuvent apparaitre comme proprietes privees ou en lecture seule;
- l’ordre d’execution suit la topologie du graphe quand les noeuds sont chaines.
Timing des noeuds lifecycle
Section intitulée « Timing des noeuds lifecycle »Les noeuds lifecycle ont un reglage de timing :
- Before generated execute le composant avant le corps genere de la methode lifecycle.
- After generated execute le composant apres le corps genere de la methode lifecycle.
Utilisez Before generated pour les prerequis et la validation. Utilisez After generated quand la logique depend de l’enregistrement ou de la configuration generee.
Exemples :
- initialiser
ctx.variables()avant que les modeles alpha le lisent; - valider les variables d’environnement requises avant le demarrage;
- initialiser des metadonnees par symbole apres que l’actif soit connu;
- vider des diagnostics runtime apres le teardown.
Comportement en cas d’echec
Section intitulée « Comportement en cas d’echec »Chaque noeud a un reglage can_fail.
can_fail = falsesignifie qu’un resultat non reussi doit arreter le run.can_fail = truesignifie qu’AQE journalise l’echec et continue.
La logique de demarrage et d’init devrait generalement etre stricte. Le teardown peut souvent echouer sans bloquer le reste du nettoyage.
Universe models dans le graphe
Section intitulée « Universe models dans le graphe »Les noeuds Universe Model retournent des symboles de facon programmatique. Ils sont utiles quand la liste statique d’univers est trop limitee.
Utilisez un noeud Universe Model pour :
- charger une watchlist;
- filtrer des symboles par metadonnees;
- choisir des symboles par date ou regime;
- selectionner des symboles depuis des contraintes de compte, broker ou risque;
- partager la meme logique d’univers entre strategies.
L’univers AQE final est l’union de l’univers statique retourne par la strategie generee et de chaque universe model connecte. Les doublons sont supprimes.
Vous pouvez donc garder un noeud d’univers statique simple et ajouter un noeud Universe Model pour des ajouts dynamiques.
Le code inline reste valide
Section intitulée « Le code inline reste valide »Le workflow par noeuds n’est pas obligatoire. Pour les petites strategies, le Rust inline suffit souvent :
- ajoutez le code de demarrage directement dans
on_start; - ajoutez l’initialisation par actif directement dans
init; - retournez les symboles directement depuis
universe; - ajoutez le nettoyage directement dans
on_teardown.
Utilisez les noeuds quand le code merite son propre fichier, doit etre visible dans le graphe AQS, a besoin de configuration dans le panneau de proprietes ou sera reutilise.
Bonnes pratiques
Section intitulée « Bonnes pratiques »- Gardez les arguments de constructeur pour les reglages utilisateur.
- Placez l’etat runtime dans
ctx.variables()au lieu des champs de struct. - Utilisez les noeuds lifecycle pour la configuration et le nettoyage, pas pour generer des signaux.
- Gardez la generation de signaux dans les modeles alpha.
- Gardez le sizing, la soumission, l’annulation, la cloture et la gestion dans les insight pipes.
- Chainez les noeuds lifecycle quand l’ordre exact compte.
- Retournez des messages
LifecycleResultetUniverseResultclairs afin que les logs et surfaces AQS soient utiles.
Patterns courants
Section intitulée « Patterns courants »Pour le demarrage :
- connectez On Start Logic au port lifecycle de la strategie;
- utilisez Before generated si l’enregistrement genere d’alphas ou pipes en depend;
- initialisez l’etat partage dans
ctx.variables(); - retournez un
LifecycleResultreussi.
Pour l’initialisation par actif :
- connectez On Init Logic au port lifecycle d’init;
- utilisez l’argument
assetpour initialiser l’etat par symbole; - stockez cet etat sous le nom du composant et le symbole.
Pour le teardown :
- connectez On Teardown Logic au port lifecycle de teardown;
- utilisez
can_fail = truesauf si l’echec doit invalider le run; - persistez ou resumez les diagnostics runtime.
Pour la selection d’univers :
- creez un noeud Universe Model;
- implementez
UniverseModel::run(ctx) -> UniverseResult; - retournez uniquement les symboles dont le modele est responsable;
- laissez AQE fusionner ces symboles avec l’univers statique et les autres universe models.
Nous utilisons des cookies et du stockage essentiels pour la connexion, la sécurité du compte, les préférences de thème, cet avis et les métriques internes PostHog nécessaires sur l’utilisation, la qualité de session et la fiabilité. Nous n’utilisons pas de cookies publicitaires.