Logo
🇺🇸  en🇧🇷  pt-br🇪🇸  es🇫🇷  fr🇯🇵  ja🇨🇳  zh
EUR (€)
  • Portefeuille
  • Algo Trading
  • Docs
  • API
  • Réduire
  • Plateforme
  • Symboles
  • Portefeuille
  • Algo Trading
  • Résultats
DocumentationSymbolesSymboles Yahoo FinanceModificateurs de symbolesSymboles brésiliensBacktest de portefeuilleAlgo TradingRésultats du backtest

Algo Trading

L'outil Algo Trading exécute un algorithme de trading que vous écrivez en JavaScript. Le code reçoit les données de marché une date à la fois, envoie des ordres d'achat et de vente, et obtient les mêmes résultats que l'outil Portefeuille.

Champs :

  • Symboles - Les actifs que l'algorithme peut négocier. Utilisez n'importe quel type de symbole, jusqu'à 10.
  • Solde - Les liquidités initiales, dans la devise sélectionnée en haut de la page.
  • Période - Les dates de début et de fin de la simulation.
  • Effet de levier - Lorsqu'il est activé, autorise la vente à découvert : l'algorithme peut vendre des actifs qu'il ne détient pas, dans les limites de marge ci-dessous. Le produit d'une vente à découvert n'est pas ajouté aux liquidités. À utiliser avec prudence, car cela augmente à la fois les rendements potentiels et les risques.
  • Marge initiale - Un pourcentage (50% par défaut) qui limite les nouvelles positions courtes : la valeur courte totale peut aller jusqu'à (liquidités + positions longues) / Marge initiale. Par exemple, 50% autorise des positions courtes jusqu'à 2 fois les liquidités plus les positions longues.
  • Marge minimale - Un pourcentage (30% par défaut) de la valeur courte qui doit rester disponible comme marge. Si la marge descend en dessous, la simulation s'arrête avec une erreur. Il n'y a pas d'appel de marge automatique.
  • Code - Le code JavaScript de l'algorithme (voir ci-dessous).

Code (AlgoWorkspace) :

Le code s'exécute comme le corps d'une fonction async, avec this lié à l'AlgoWorkspace. Enregistrez les écouteurs d'événements, puis appelez start() à la fin du code pour lancer la simulation. Le code doit avoir exactement un écouteur data, et chaque écouteur doit appeler next() quand il a terminé.

Événements disponibles :

  • this.on('start', async (next, timeseries) => { ... }) - S'exécute une fois avant la première date. timeseries contient toutes les données de prix, indexées par date (Record<string, AssetDataFlat[]>). this.assets et this.portfolio ne sont pas encore définis.
  • this.on('data', async (next) => { ... }) - S'exécute une fois pour chaque date avec des données. Les ordres sont exécutés après l'appel de next() par l'écouteur, au prix de cette date.
  • this.on('end', async (next, result) => { ... }) - S'exécute après la dernière date, avec le résultat final. result.summary.alpha et beta sont des Promises.
  • this.on('error', async (next, errors) => { ... }) - S'exécute lorsque des ordres d'une date sont annulés, ex : liquidités ou marge insuffisantes. errors est un string[]. Une exception dans votre code arrête la simulation et apparaît dans l'onglet Avertissements.

Propriétés et méthodes :

  • this.date - La date actuelle.
  • this.assets - Les prix de la date actuelle (AssetDataFlat[] : assetCode, date, value, currency). Seuls les symboles avec des données à cette date sont inclus.
  • this.portfolio - Une copie du portefeuille actuel (cash, assets, total, longValue, shortValue, totalProfit, realizedProfit, margin). La modifier n'a aucun effet, utilisez les méthodes ci-dessous.
  • this.index - Le numéro de la date actuelle, de 1 à this.length.
  • this.length - Le nombre de dates avec des données.
  • this.inputs - Les entrées de la simulation.
  • this.state - Un objet pour stocker vos propres données entre les événements.
  • this.buy(assetCode: string, quantity: number): void - Envoie un ordre d'achat. La quantité doit être un nombre fini différent de zéro.
  • this.sell(assetCode: string, quantity: number): void - Envoie un ordre de vente. Vendre plus que la position ouvre une position courte, si l'Effet de levier est activé.
  • this.print(...msgs: any[]): void - Ajoute un message, avec la date actuelle, à l'onglet Messages.
  • this.depositCash(amount: number): void - Ajoute des liquidités au portefeuille.
  • this.loadScript(url: string): Promise<number> - Charge une bibliothèque JavaScript externe. Les scripts chargés sont supprimés après l'exécution.
  • this.download(obj: any, name?: string): Promise<void> - Télécharge obj sous forme de fichier JSON nommé name.json (invest-tester.json par défaut).

Le code par défaut de la page Algo Trading est un exemple complet. Il charge une bibliothèque, passe des ordres aléatoires et effectue des dépôts mensuels.

InvestTester | Créé par Tpessia
support@investtester.com