La page suivante décrit les expressions qui peuvent être utilisées dans l'application Wallet. Elle fournit des liens sur la manière de les utiliser et des exemples.
Introduction
Une expression est une chaîne de caractères
qui est évaluée pour obtenir une valeur. La valeur peut être un nombre, une chaîne, un booléen ou un ensemble de valeurs. Les expressions peuvent être utilisées dans différents contextes :
- Dans la fenêtre de la console
- En utilisant la fonction API
eval(
...) - En utilisant l'option de ligne de commande
--eval
- Dans les expressions des colonnes des rapports
- Lors de la mise en place d'alertes boursières
Dans ce contexte, les expressions fonctionnent de la même manière que les formules Excel. Elles peuvent contenir des constantes, des opérateurs, des fonctions et des variables. Les sections suivantes décrivent les fonctions et les variables disponibles.
Dans la plupart des cas, une expression appelle une fonction enregistrée, mais il peut également s'agir d'une constante ou d'une variable. Vous pouvez écrire diverses expressions mathématiques, mais il est important de tenir compte de la priorité des opérateurs. Voici quelques exemples simples :
1+1 == 2
2*3 == 6
2**3 == 8
2**3+1 == 9
(5/4)**3 == 1.953125
MIN(1, 2, 3) == 1
MAX(1, 2, 3) == 3
# ...
Vous pouvez également utiliser @file_path
pour charger une expression à partir d'un fichier et la faire évaluer. Voici quelques exemples :
@C:/Users/John/Documents/expression.expr
Il s'agit donc d'un moyen simple d'éditer et de réutiliser des expressions en dehors de la console d'application. De cette manière, vous pouvez également utiliser votre éditeur de texte préféré pour modifier les expressions.
Table des matières
- Base
- Fonctions de base
- MIN(set)
- MAX(set)
- SUM(set)
- AVG(set)
- COUNT(ensemble)
- INDEX(ensemble, index)
- MAP(ensemble, expression)
- FILTER(ensemble, filtre)
- EVAL(expression)
- REDUCE(ensemble, expression, initial)
- SORT(ensemble, ordre, index)
- ROUND(valeur, précision)
- FLOOR(valeur)
- CEIL(valeur)
- ABS(valeur)
- RANDOM(inférieur, supérieur)
- IF(condition, expression_vrai, expression_faux)
- WHILE(condition, expression)
- Fonctions relatives aux chaînes de caractères
- Fonctions de date
- Fonctions relatives aux actions
- Fonctions graphiques
- Exemples
Base
Constantes
Les constantes suivantes sont disponibles :
true
- la valeur booléennetrue
,false
- la valeur booléennefalse
,null
- la valeur nulle,nan
- la valeur "pas un nombre",inf
- la valeur de l'infini,PI
- la valeur de PI,HALFPI
- la valeur de PI/2,TWOPI
- la valeur de PI*2,SQRT2
- la valeur de sqrt(2),SQRT3
- la valeur de sqrt(3),E
- la valeur de e,LOGN2
- la valeur de log(2),LOGN10
- la valeur de log(10),EPSILON
- la valeur de epsilon,NIL|nil|null
- la valeur nulle.
Il suffit d'écrire le nom de la constante dans l'expression. Par exemple, il suffit d'écrire le nom de la constante dans l'expression :
PI == 3.141592653589793
(PI*2 == TWOPI) == true
true != false
1/0 == inf
Commentaires
Vous pouvez écrire des commentaires dans les expressions. Un commentaire commence par un #
et se termine à la fin de la ligne. Un commentaire commence par un # et se termine à la fin de la ligne :
# This is a comment
1+1 == 2 # This is also a comment
Vous pouvez également utiliser la syntaxe de commentaire //
, mais celle-ci n'est supportée qu'en début de ligne. En voici un exemple :
// This is a comment
1+1 == 2
Notez également que pour des raisons techniques, une expression ne doit pas se terminer par un commentaire. Par exemple, l'expression suivante n'est pas valide :
1+1 == 2
#TODO: Fix this
En effet, un commentaire fonctionne comme une virgule dans une expression, de sorte que terminer par un commentaire revient à terminer par une virgule. L'expression n'est donc pas valide car elle équivaut à une écriture :
5+6,
Virgules
Les virgules sont utilisées pour séparer les valeurs d'un ensemble. Un saut de ligne fonctionne comme une virgule. L'expression est donc invalide car elle équivaut à écrire: :
5+6
7+8
Est équivalent à :
5+6, 7+8
qui renvoie l'ensemble des valeurs :
[11, 15]
Ensembles
Les expressions peuvent être utilisées pour créer des ensembles de valeurs. Un ensemble est une liste de valeurs séparées par des virgules et placées entre crochets. Par exemple, la plupart des fonctions consomment des ensembles de valeurs :
[1, 2, 3] == [1, 2, 3]
[1, 2, 3] != [1, 2, 4]
La plupart des fonctions consomment des ensembles de valeurs. Par exemple : La plupart des fonctions consomment des ensembles de valeurs :
# The SUM(...) function returns a number
SUM([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) == 55
# The COUNT(...) function returns a number
COUNT([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) == 10
# Repeat 1 ten times and sum the values
# REPEAT is a function that returns a set of values
# SUM is a function that consumes a set of values
SUM(REPEAT(1, 10)) == 10
Certaines fonctions, telles que MAP(
...) et FILTER(...)
, renvoient également des ensembles de valeurs.
Variables
Vous pouvez définir des variables dans les expressions. Une variable est un nom qui commence par le signe du dollar $
. Par exemple :
$name = "John"
$age = 30
$result = "My name is " + $name + " and I am " + $age + " years old."
Les variables sont toujours définies globalement. Cela signifie qu'elles sont disponibles dans toutes les expressions. Par exemple : Les variables sont toujours définies de manière globale :
$a = 55
# The variable $a is available in the following expression
$b = $a + 10
Plus tard, à moins que la variable ne soit redéfinie, elle sera toujours disponible :
# The variable $a is still available
$c = $a + 20
Important : il convient de noter que les ensembles stockés dans les variables sont désalloués une fois l'évaluation terminée. Ils ne peuvent donc pas être utilisés dans d'autres sessions d'évaluation d'expressions.
Macros
Il est également important de noter que $1, $2, $3
, etc. sont généralement réservés dans les fonctions. Vous ne devez donc pas les utiliser comme noms de variables globales. Le système attribue généralement des valeurs à ces variables lors de l'appel de fonctions internes. Par exemple, dans la fonction MAP(
...), la variable $1
se voit attribuer la valeur de l'élément courant de l'ensemble en cours d'itération. L'exemple suivant l'illustre :
# Sets some values
$values = [1, 2, 3, 4, 5]
# For each value in the set, multiply it by 2
# The $1 variable is assigned the value of the current item in the set
$multiplied = MAP($values, $1 * 2)
# The result is [2, 4, 6, 8, 10]
$multiplied == [2, 4, 6, 8, 10]
Si l'ensemble d'entrée de MAP(
...) est un ensemble d'ensembles, la variable $1
sera assignée au premier élément de l'ensemble interne. La variable $2
sera affectée au deuxième élément de l'ensemble intérieur, et ainsi de suite. L'exemple suivant illustre ce principe :
# Sets some values [name, age]
$values = [['Marco', 30], ['John', 40], ['Mary', 50]]
# For each value in the set, combine the name and age to form a phrase like "Marco is 30 years old"
$phrases = MAP($values, $1 + " is " + $2 + " years old")
# The result is ["Marco is 30 years old", "John is 40 years old", "Mary is 50 years old"]
$phrases == ["Marco is 30 years old", "John is 40 years old", "Mary is 50 years old"]
Fonctions macro
Les variables peuvent être utilisées pour stocker des valeurs, mais elles peuvent également être utilisées pour stocker des fonctions. Par exemple, lorsque vous invoquez une
# Define a function that returns the sum of two numbers
# Each arguments can be accessed using the $1, $2, $3, etc. variables
$(a, $1 + $2)
# Call the function
$result = a(1, 2)
# The result is 3
$result == 3
Lorsque vous invoquez une
, chaque argument est assigné aux variables $1
, $2
, $3
, etc. La fonction peut donc accéder aux arguments à l'aide de ces variables.
Objets
Les objets sont des ensembles de paires [[clé, valeur], ...]
. Les clés sont généralement des constantes de type chaîne de caractères et les valeurs peuvent être n'importe quelle expression. Étant donné que ce langage d'expression n'utilise que des ensembles, les objets sont représentés comme des ensembles de paires clé/valeur. Par exemple, les objets sont représentés comme des ensembles de paires clé/valeur :
# Map the values to an object, i.e. {name: 'Marco', age: 30}
$object = [['name', 'Marco'], ['age', 30]]
Fonctions de base
La base est couverte ! Passons maintenant aux choses sérieuses. Les sections suivantes décrivent les fonctions de base disponibles dans le langage d'expression.
MIN(ensemble, ...)
set
- Un ensemble de valeurs, c'est-à-dire[1, 2, 3, 4, 5]
...
- Des ensembles de valeurs supplémentaires, par exemple[1, 2, 3], [4, 5, 6]
- Renvoie la valeur minimale de tous les ensembles.
La fonction MIN(
...) est utilisée pour obtenir la valeur minimale d'un ensemble. Le premier argument est l'ensemble de valeurs. Pour plus de commodité, vous pouvez également passer plusieurs arguments au lieu d'un ensemble. Les exemples suivants illustrent l'utilisation de la fonction MIN(
...) :
Exemples
# Get the minimum value in a set
MIN([1, 2, 3, 4, 5]) == 1
# Get the minimum value for all the arguments
MIN(1, 2, 3, 4, 5) == 1
# Get the minimum value with all set arguments
MIN([1, -2, 3], [4, 5, 6]) == -2
Rappelez-vous que vous pouvez passer n'importe quelle expression comme argument. Par exemple :
$(fun, RAND(1, 100))
MIN(REPEAT(fun(), 10))
Renverra la valeur minimale de 10 nombres aléatoires compris entre 1 et 100.
Cas d'utilisation : MIN($holders)
Étant donné VTNR.US
, imaginons que nous voulions trouver le nom du détenteur ayant le moins d'actions totales. Nous pouvons le faire en utilisant la fonction MIN(...)
. L'expression suivante renverra le nom du détenteur ayant le moins d'actions :
$symbol = "VTNR.US"
# Get all institutional holders
$holders = F($symbol, "Holders.Institutions")
# Since the data is mapped as an object array "0": {...}, "1": {...}, etc.
# We need to convert it to a set of values by indexing each object by its key
$holders = MAP($holders, [INDEX($2, 'name'), INDEX($2, 'totalShares')])
# Now we should have something like this: [[State Street Corporation, 12.0769], [BlackRock Inc, 5.1746], [Vanguard Group Inc, 4.8573], ...]
MIN($holders)
Cet exemple utilise des fonctions non couvertes, mais il s'agit simplement d'illustrer l'utilisation de MIN(...) dans un scénario réel. Vous pouvez en apprendre davantage sur ces fonctions ci-dessous : |
- F(...) - Extrait les données fondamentales d'un symbole boursier. - MAP(...) - Met en correspondance un ensemble de valeurs avec un autre ensemble de valeurs. - INDEX(...) - Obtenir la valeur d'une clé dans un ensemble. |
Le résultat est ["State Street Corporation", 12.0769]
au 2023-05-25.
Comment MIN(...)
sait-il comparer le deuxième élément de l'ensemble ? C'est parce que chaque ensemble peut avoir un index défini pour être la valeur de comparaison par défaut. Dans ce cas, lorsque la fonction MAP(...)
est appelée, le second argument est un ensemble de deux éléments. Le premier élément est le nom du détenteur et le second est le nombre total d'actions. Les fonctions MAP
considèrent donc généralement la dernière valeur d'un ensemble comme la valeur de comparaison par défaut. Dans ce cas, la fonction MIN(
...) comparera le nombre total d'actions.
Important : toutes les fonctions n'utilisent pas la dernière valeur d'un ensemble comme valeur de comparaison par défaut. En cas de doute, vérifiez la documentation de la fonction ou définissez le premier argument comme valeur de comparaison par défaut. Par exemple, nous pourrions faire correspondre les valeurs comme suit
[INDEX($2, 'totalShares'), INDEX($2, 'name')]
en inversant l'ordre des valeurs. La fonctionMIN(
...) compare alors le nombre total d'actions.
MAX(ensemble, ...)
set
- Un ensemble de valeurs, c'est-à-dire[1, 2, 3, 4, 5]
...
- Autres ensembles de valeurs, par exemple[1, 2, 3], [4, 5, 6]
- Renvoie la valeur maximale de tous les ensembles.
La fonction MAX(
...) est utilisée pour obtenir la valeur maximale d'un ensemble. Le premier argument est l'ensemble de valeurs. Pour plus de commodité, vous pouvez également passer plusieurs arguments au lieu d'un ensemble. Les exemples suivants illustrent l'utilisation de la fonction MAX(
...) :
Exemples
$values = [1, 2, 3, 4, 5]
# Get the min/max range of values
$minmax = [MIN($values), MAX($values)]
# The result is [1, 5]
$minmax == [1, 5]
Cas d'utilisation : MAX($insider_transactions)
Étant donné les États-Unis
, trouvons la plus grande transaction d'initié. Nous pouvons le faire en utilisant la fonction MAX(
...). L'expression suivante renvoie l'opération d'initié la plus importante :
Fonctions non couvertes :
- F(...) - Extrait les données fondamentales d'un symbole boursier.
- MAP(...) - Met en correspondance un ensemble de valeurs avec un autre ensemble de valeurs.
- INDEX(...) - Obtenir la valeur d'une clé dans un ensemble.
# Symbol to use
$symbol = "U.US"
# Lets get the insider transactions data
$insider_transactions = F($symbol, "InsiderTransactions")
# Map the data so we have the name and the value of the transaction
$insider_transactions = MAP($insider_transactions, [
INDEX($2, 'transactionDate'),
INDEX($2, 'ownerName'),
INDEX($2, 'transactionAmount') * INDEX($2, 'transactionPrice')])
MAX($insider_transactions)
Vous obtiendrez quelque chose comme ceci [2023-03-31, Tomer Bar-Zeev, 2.4255e+06]
à partir de 2023-05-25.
SUM(ensemble, ...)
set
- Un ensemble de valeurs, c'est-à-dire[1, 2, 3, 4, 5]
...
- Des ensembles supplémentaires de valeurs, par exemple[1, 2, 3], [4, 5, 6]
- Renvoie la somme de toutes les valeurs de tous les ensembles.
La fonction SUM(
...) est utilisée pour obtenir la somme des valeurs d'un ensemble. Le premier argument est l'ensemble de valeurs. Pour plus de commodité, vous pouvez également passer plusieurs arguments au lieu d'un ensemble. Les exemples suivants illustrent l'utilisation de la fonction SUM(...)
:
Exemples
# Get the sum of values in a set
SUM([1, 2, 3, 4, 5]) == SUM(1, 2, 3, 4, 5) == 15
Les valeurs non valides sont généralement ignorées. Par exemple, les valeurs non valides sont généralement ignorées :
# nan is not a valid number and will be ignored
SUM([1, 2, 3, nan, 5]) == 11
Cas d'utilisation : SUM($dividendes)
Imaginons que nous voulions faire la somme de tous les dividendes versés chaque année pour MSFT.US
. Nous pouvons le faire en utilisant la fonction SUM(...)
. L'expression suivante renverra la somme de tous les dividendes payés par tous les détenteurs :
Fonctions découvertes :
- F(...) - Extrait les données fondamentales d'un symbole boursier.
- MAP(...) - Met en correspondance un ensemble de valeurs avec un autre ensemble de valeurs.
- INDEX(...) - Obtenir la valeur d'une clé dans un ensemble.
# Symbol to use
$symbol = "MSFT.US"
# Lets get the number of dividends paid by each year
$dividends = MAP(F($symbol, "SplitsDividends.NumberDividendsByYear"), INDEX($2, 'Count'))
# Sum all the dividends
SUM($dividends)
Au 2023-05-25, le résultat est d'environ 78
.
AVG(ensemble, ...)
set
- Un ensemble de valeurs, c'est-à-dire[1, 2, 3, 4, 5]
...
- Des ensembles supplémentaires de valeurs, par exemple[1, 2, 3], [4, 5, 6]
- Renvoie la moyenne de toutes les valeurs de tous les ensembles.
La fonction AVG(...)
est utilisée pour obtenir la moyenne des valeurs d'un ensemble. Le premier argument est l'ensemble de valeurs. Pour plus de commodité, vous pouvez également passer plusieurs arguments au lieu d'un ensemble. Les exemples suivants illustrent l'utilisation de la fonction AVG(...)
:
Exemples
# Get the average of values in a set
AVG([1, 2, 3, 4, 5]) == AVG(1, 2, 3, 4, 5) == 3
Cas d'utilisation : ROUND(AVG($ages))
Imaginons que nous voulions obtenir l'âge moyen de tous les agents de
ZM.US
. Nous pouvons le faire en utilisant la fonction AVG(...)
. L'expression suivante renverra l'âge moyen de tous les officiers :
Fonctions référencées | Description de la fonction |
---|---|
F(...) | Extrait les données fondamentales d'un symbole boursier. |
MAP(...) | Établit une correspondance entre un ensemble de valeurs et un autre ensemble de valeurs. |
FILTER(...) | Filtre un ensemble de valeurs par une expression. |
INDEX(...) | Obtenir la valeur d'une clé dans un ensemble. |
YEAR(...) | Obtenir l'année d'une date. |
NOW() | Obtenir la date du jour. |
ROUND(...) | Arrondit une valeur à une précision donnée. |
# Symbol to use
$symbol = "ZM.US"
# Lets get the officers data
$officers = MAP(F($symbol, "General.Officers"), $2)
# Lets get the age of each officer
$YearBorn = FILTER(MAP($officers, INDEX($3, 1)), $1)
# Lets get the average age
$YEAR = YEAR(NOW())
$ages = MAP($YearBorn, $YEAR - $1)
ROUND(AVG($ages))
Au 2023-05-25, le résultat est d'environ 50
.
COUNT(ensemble)
set
- Un ensemble de valeurs, c'est-à-dire[1, 2, 3, 4, 5]
- Renvoie le nombre de valeurs dans l'ensemble.
La fonction COUNT(
...) est utilisée pour obtenir le nombre de valeurs dans un ensemble. Le premier argument est l'ensemble de valeurs. Les exemples suivants illustrent l'utilisation de la fonction COUNT(...)
:
Exemples
# Get the number of values in a set
COUNT([1, 2, 3, 4, 5]) == 5
# Enumerate 50 ones and get the count, surprisingly it is 50!
COUNT(REPEAT(1, 50)) == 50
Cas d'utilisation : COUNT($secteurs)
Vous êtes en service et on vous demande de compter le nombre de secteurs dans lesquels ARKK.US
a des actions ? C'est très simple :
Fonctions référencées | Description |
---|---|
F(...) | Extrait les données fondamentales d'un symbole boursier. |
MAP(...) | Établit une correspondance entre un ensemble de valeurs et un autre ensemble de valeurs. |
FILTER(...) | Filtre un ensemble de valeurs par une expression. |
INDEX(...) | Obtenir la valeur d'une clé dans un ensemble. |
# Symbol to use
$symbol = "ARKK.US"
# Lets get the sector data
$sectors = MAP(F($symbol, "ETF_Data.Sector_Weights"), [$1, INDEX($2, 'Equity_%')])
# Now lets exclude the sectors that have 0% equity
$sectors = FILTER($sectors, $2 > 0)
# Now lets count the number of sectors
COUNT($sectors)
Au 2023-05-25, le résultat est 6
, le travail est fait !
INDEX(ensemble, index|clé)
set
- L'ensemble des valeurs à indexer.index
- L'index basé sur 0 de la valeur à retourner dans l'ensemble.key
- Le nom de la clé de la valeur à renvoyer dans l'ensemble, dans le cas où l'ensemble est mappé en tant qu'objet.- Renvoie la valeur à l'index ou à la clé spécifié(e).
La fonction INDEX(
...) est utilisée pour obtenir une valeur à partir d'un ensemble. Le premier argument est l'ensemble de valeurs et le second est l'index ou la clé. Si vous souhaitez obtenir la première valeur de l'ensemble, vous pouvez utiliser INDEX($set, 0)
. Si vous souhaitez obtenir la dernière valeur de l'ensemble, vous pouvez utiliser INDEX($set, -1)
. Si vous souhaitez obtenir la valeur d'une clé dans un objet, vous pouvez utiliser INDEX($set, "key")
. Les exemples suivants illustrent l'utilisation de la fonction INDEX(...)
:
Exemples
Index par position
# Get the first value in a set
$values = [1, 2, 3, 4, 5]
# Get the first value
INDEX($values, 0) == 1
# Get the last value
INDEX($values, -1) == 5
# Get the middle value
INDEX($values, FLOOR(COUNT($values) / 2)) == 3
Index par clé
# Declare an object
$obj = [[name, "John"], [age, 30]]
# Get the name
$name = INDEX($obj, "name")
# Get the age
$age = INDEX($obj, "age")
[$name, $age] == ["John", 30]
MAP(set, expression)
set
- L'ensemble des valeurs à mettre en correspondance, c'est-à-dire[1, 2, 3, 4, 5]
.expression
- L'expression à évaluer pour chaque valeur de l'ensemble afin de produire l'ensemble de valeurs mappées, c'est-à-dire$1 * 2
- Renvoie l'ensemble de valeurs mappées.
La fonction MAP(
...) est utilisée pour transformer un ensemble de valeurs en un autre ensemble de valeurs. Le premier argument est l'ensemble de valeurs et le second est l'expression à évaluer pour chaque valeur de l'ensemble. L'expression peut être n'importe quelle expression qui renvoie une valeur. L'expression est évaluée avec les macros$1, $2, $3, ..
. fixées à la valeur de la valeur courante de l'ensemble. Les exemples suivants illustrent l'utilisation de la fonction MAP(
...) :
Exemples
# Map a set of values to another set of values
MAP([1, 2, 3, 4, 5], $1 * 2) == [2, 4, 6, 8, 10]
# Map a set of values to another set of values
MAP([[name, 'Joe'], [age, 30]], $2) == ['Joe', 30]
Cas d'utilisation : MAP(F("AAPL.US", "General.Officers"), INDEX($2, 'Name'))
La fonction MAP(
...) est utilisée dans de nombreux cas de figure lorsqu'il s'agit d'obtenir les données fondamentales d'une action. Par exemple, supposons que nous voulions obtenir les noms de tous les officiers de ZM.US
. Nous pouvons le faire en utilisant la fonction MAP(...)
.
Fonctions référencées | Description de la fonction |
---|---|
F(...) | Extrait les données fondamentales d'un symbole boursier. |
INDEX(...) | Obtenir la valeur d'une clé dans un ensemble. |
# Lets get the names of each officer
MAP(F("AAPL.US", "General.Officers"), INDEX($2, 'Name'))
Au 2023-05-25, le résultat est le suivant :
[Mr. Timothy D. Cook,
Mr. Luca Maestri,
Mr. Jeffrey E. Williams,
Ms. Katherine L. Adams,
Ms. Deirdre O'Brien,
Mr. Chris Kondo,
Mr. James Wilson,
Ms. Mary Demby,
Ms. Nancy Paxton,
Mr. Greg Joswiak]
FILTER(set, filter)
set
- L'ensemble des valeurs à filtrer, c'est-à-dire[1, 2, 3, 4, 5]
filter
- L'expression de filtrage à évaluer pour chaque valeur de l'ensemble afin de produire l'ensemble de valeurs filtrées, c'est-à-dire$1 > 3
$1...$n
- La valeur indexée dans l'élément actuel de l'ensemble.
- Retourne l'ensemble de valeurs filtrées.
La fonction FILTER(
...) est utilisée pour filtrer un ensemble de valeurs. Le premier argument est l'ensemble de valeurs et le second est l'expression de filtrage. L'expression de filtrage est généralement une assertion qui renvoie un résultat vrai ou faux. Si l'assertion est vraie, la valeur est conservée dans l'ensemble. Si l'assertion est fausse, la valeur est retirée de l'ensemble. L'expression de filtre peut être n'importe quelle expression renvoyant une valeur booléenne. Les exemples suivants illustrent l'utilisation de la fonction FILTER(..
.) :
Exemples
// Keep only the values that are greater than 10
FILTER([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], $1 > 5) == [6, 7, 8, 9, 10]
Cas d'utilisation : FILTER($price_change, $2 > 10)
Récupérons toutes les fins de journée où le changement de prix pour GLF.TO
était supérieur à 10%. Nous pouvons le faire en utilisant la fonction FILTER(...)
. L'expression suivante renverra les fins de journée où la variation de prix était supérieure à 10 % :
Fonctions référencées | Description de la fonction |
---|---|
S(...) | Obtenir les données de fin de journée pour un symbole boursier. |
MAP(...) | Met en correspondance un ensemble de valeurs avec un autre ensemble de valeurs. |
DATESTR(...) | Formate une date en chaîne de caractères. |
FILTER(...) | Filtre un ensemble de valeurs par une expression. |
# Symbol to use
$symbol = "GFL.TO"
# Get the end of day data
$eod = S($symbol, open, ALL)
# Remap the data to get the price change
$price_change = MAP($eod, [DATESTR($1), (S($symbol, close, $1) - $2) / $2 * 100])
# Filter the data to get the price change greater than 10%
FILTER($price_change, $2 > 10)
Il s'avère que 2023-05-25 n'est arrivé qu'une seule fois:
[[2020-04-09, 10.2271]]
EVAL(expression)
expression
- L'expression à évaluer, par exemple1 + 2
- Renvoie le résultat de l'expression.
La fonction EVAL(
...) est utilisée pour évaluer une expression. L'expression peut être n'importe quelle expression qui renvoie une valeur. Cette fonction est principalement utile lorsqu'une autre fonction s'attend à ce qu'un argument de fonction soit appliqué en tant qu'expression, ce qui est vraiment méta et rarement utilisé.
Exemples d'application
Supposons que l'on vous donne une chaîne de caractères qui pourrait être une expression, et que vous souhaitiez l'évaluer. Vous pouvez le faire en utilisant la fonction EVAL(...)
. L'expression suivante renvoie le résultat de l'expression :
$outer_world_expression = "1 + 2"
EVAL($outer_world_expression) == 3
REPEAT(expression, count)
expression
- L'expression à évaluer, par exemple1 + 2
$i
- L'indice actuel de l'expression, c'est-à-dire1 + 2 * $i
$COUNT
- Le décompte actuel de l'expression, c'est-à-dire1 + 2 * $COUNT
count
- Le nombre de fois que l'expression doit être répétée- Renvoie l'ensemble des résultats du nombre de fois où
l
'expression a été répétée.
La fonction REPEAT(
...) est utilisée pour répéter une expression un certain nombre de fois. L'expression peut être n'importe quelle expression qui renvoie une valeur. Les exemples suivants illustrent l'utilisation de la fonction REPEAT(...)
:
Exemples
# Repeat the expression 5 times
REPEAT(1 + 2, 5) == [3, 3, 3, 3, 3]
# Repeat the expression 5 times
REPEAT($i, 5) == [0, 1, 2, 3, 4]
REDUCE(ensemble, expression, initial)
set
- L'ensemble des valeurs à réduire, c'est-à-dire[1, 2, 3, 4, 5]
.expression
- L'expression à évaluer pour chaque valeur de l'ensemble afin de produire la valeur réduite, par exemple$1 + $2
$0
- La valeur réduite actuelle.$1...$n
- La valeur indexée dans l'élément actuel de l'ensemble.
initial
- La valeur initiale à utiliser pour la valeur réduite, par exemple5
- Si
initial
n'est pas fourni, la première valeur de l'ensemble est utilisée comme valeur initiale.
- Si
- Renvoie la valeur réduite.
La fonction REDUCE(...)
est utilisée pour réduire un ensemble de valeurs à une seule valeur. Le premier argument est l'ensemble de valeurs, le deuxième argument est l'expression et le troisième argument est la valeur initiale. L'expression est généralement une opération qui renvoie une valeur. L'expression est évaluée pour chaque valeur de l'ensemble afin de produire la valeur réduite. Les exemples suivants illustrent l'utilisation de la fonction REDUCE(...)
:
Exemples
# Sum all the values in the set
REDUCE([1, 2, 3, 4, 5], $0 + $1, 0) == 15
# Automatically apply the second argument function with $0 and $1
REDUCE([1, 2, 3, 4, 5], ADD, 0) == 15
SORT(set[, order, index])
set
- L'ensemble des valeurs à trier, c'est-à-dire[3, 2, 4, 1, 5]
order
- L'ordre de tri de l'ensemble, c'est-à-direASC
ouDESC
ASC
- Permet de trier l'ensemble par ordre croissant.DESC
- Trier l'ensemble par ordre décroissant.
index
- L'index de la valeur de l'ensemble d'éléments à trier, c'est-à-dire1
. Ceci est utile lorsque l'élément est un ensemble d'objets.- Renvoie l'ensemble de valeurs triées.
La fonction SORT(
...) est utilisée pour trier un ensemble de valeurs. Le premier argument est l'ensemble de valeurs, le deuxième argument est l'ordre et le troisième argument est l'index. L'ordre peut être ASC
ou DESC
. L'index est l'index de la valeur de l'ensemble d'éléments à trier. Ceci est utile lorsque l'élément est un ensemble d'objets. Les exemples suivants illustrent l'utilisation de la fonction SORT(...)
:
Exemples
# Sort the set in ascending order
SORT([3, 2, 4, 1, 5], ASC) == [1, 2, 3, 4, 5]
# Sort the set in descending order
SORT([3, 2, 4, 1, 5], DESC) == [5, 4, 3, 2, 1]
# Sort the set in ascending order by the second value in the element set
SORT([[1, 3], [2, 2], [3, 4], [4, 1], [5, 5]], ASC, 1) == [[4, 1], [2, 2], [1, 3], [3, 4], [5, 5]]
ROUND(valeur, précision)
value
- La valeur à arrondir, par exemple1,234
precision
- La précision pour arrondir la valeur en décimales, par exemple2
- Si un nombre positif est fourni, la valeur est arrondie au nombre de décimales spécifié.
- Si un nombre négatif est fourni, la valeur est arrondie à la gauche de la virgule.
- Par exemple,
-1
est arrondi à la dizaine la plus proche,-2
est arrondi à la centaine la plus proche, etc.
- Par exemple,
- Renvoie la valeur arrondie.
La fonction ROUND(...)
est utilisée pour arrondir une valeur à une précision donnée. Le premier argument est la valeur et le second argument est la précision. Les exemples suivants illustrent l'utilisation de la fonction ROUND(...)
:
Exemples
# Round the value to 2 decimal places
ROUND(1.234, 2) == 1.23
# Round the value to 1 decimal place
ROUND(1.234, 1) == 1.2
FLOOR(valeur)
valeur
- La valeur à arrondir vers le bas, par exemple1,234
- Renvoie la valeur arrondie à la valeur inférieure.
La fonction FLOOR(...)
est utilisée pour arrondir une valeur vers le bas. Le premier argument est la valeur. Les exemples suivants illustrent l'utilisation de la fonction FLOOR(
...) :
Exemples
# Round the value down
FLOOR(1.234) == 1
CEIL(valeur)
valeur
- La valeur à arrondir vers le haut, par exemple1,234
- Renvoie la valeur arrondie à l'unité supérieure.
La fonction CEIL(...)
est utilisée pour arrondir une valeur vers le haut. Le premier argument est la valeur. Les exemples suivants illustrent l'utilisation de la fonction CEIL(...)
:
Exemples
# Round the value up
CEIL(1.234) == 2
ABS(valeur)
valeur
- La valeur à convertir en valeur absolue, par exemple-1,234
- Renvoie la valeur absolue.
La fonction ABS(
...) est utilisée pour convertir une valeur en valeur absolue. Le premier argument est la valeur. Les exemples suivants illustrent l'utilisation de la fonction ABS(
...) :
Exemples
# Convert the value to an absolute value
ABS(-1.234) == 1.234
RANDOM(lower, upper)
ou RAND(
...)
lower
- La borne inférieure inclusive du nombre aléatoire, c'est-à-dire0
upper
- La borne supérieure exclusive du nombre aléatoire, c'est-à-dire1
- Renvoie le nombre aléatoire.
La fonction RANDOM(...)
est utilisée pour générer un nombre aléatoire. Le premier argument est la borne inférieure inclusive et le deuxième argument est la borne supérieure exclusive. Les exemples suivants illustrent l'utilisation de la fonction RANDOM(...)
:
Exemples
# Generate a random number between 0 and 1
RAND() >= 0 && RANDOM(0, 1) < 1
# Generate a random number between 0 and 10
RAND(0, 10) >= 0 && RAND(0, 10) < 10
# Generate a random number between 1 and 10
RAND(1, 10) >= 1 && RAND(1, 10) < 10
IF(condition, expression_vraie, expression_faussée)
condition
- La condition à évaluer, c'est-à-dire1 == 1
expression_vraie
- Valeur à renvoyer si la condition est vraie, par exemple1
false_expression
- La valeur à renvoyer si la condition est fausse, c'est-à-dire0
- Renvoie la valeur basée sur la condition.
La fonction IF(
...) est utilisée pour évaluer une condition et renvoyer une valeur en fonction de cette condition. Le premier argument est la condition, le deuxième argument est la valeur à renvoyer si la condition est vraie, et le troisième argument est la valeur à renvoyer si la condition est fausse.
Important : notez que seule l'expression true ou false est évaluée, et non les deux. Ceci est important lorsque l'expression est un appel de fonction qui a des effets secondaires.
Exemples d'utilisation
Les exemples suivants illustrent l'utilisation de la fonction IF(...)
:
# Return 1 if the condition is true, otherwise return 0
IF(1 == 1, 1, 0) == 1
# Return 1 if the condition is false, otherwise return 0
IF(1 == 2, 0, 1) == 1
WHILE(condition, expression)
condition
- La condition à évaluer, c'est-à-direi < 10
expression
- L'expression à évaluer, c'est-à-direi++
.$0
- La valeur de la dernière expression évaluée, c'est-à-direi++
- Renvoie la valeur de la dernière expression évaluée.
La fonction WHILE(...)
est utilisée pour évaluer une expression tant qu'une condition est vraie. Le premier argument est la condition et le second est l'expression. Les exemples suivants illustrent l'utilisation de la fonction WHILE(...)
:
Note : Attention aux boucles infinies !
Exemples
# Return the sum of the numbers from 1 to 10
i = 0
WHILE(i < 10, i = i + $0 + 1) == 15
Fonctions relatives aux chaînes de caractères
LPAD(valeur, pad, longueur)
value
- La valeur à remplir, par exempleHello
pad
- Le pad à utiliser, par exemple"0"
length
- La longueur maximale de la valeur remplie, c'est-à-dire2
- Renvoie la valeur de la chaîne de caractères remplie.
La fonction LPAD(...)
est utilisée pour remplir une valeur avec un tampon un certain nombre de fois. Le premier argument est la valeur, le deuxième argument est le pad et le troisième argument est la longueur maximale de la valeur paddée. Les exemples suivants illustrent l'utilisation de la fonction LPAD(...)
:
Exemples
# Build a date value
$date = DATE(2021, 1, 1)
# Get the month
$month = MONTH($date)
# Pad the month with a 0 so we always display months with 2 digits
LPAD($month, '0', 2) == "01"
RPAD(valeur, pad, longueur)
value
- La valeur à remplir, c'est-à-dire4560
pad
- Le pad à utiliser, c'est-à-dire" ****"
length
- La longueur maximale de la chaîne de caractères, c'est-à-dire20
- Renvoie la valeur de la chaîne de caractères remplie.
La fonction RPAD(...)
est utilisée pour remplir une valeur avec un tampon un certain nombre de fois. Le premier argument est la valeur, le deuxième argument est le pad et le troisième argument est la longueur maximale de la valeur paddée. Les exemples suivants illustrent l'utilisation de la fonction RPAD(...)
:
Exemples
RPAD("4560 ", " ****", 19) == "4560 **** **** ****"
STARTS_WITH(valeur, préfixe)
value
- La valeur à vérifier si elle commence par le préfixe, par exempleHello World
prefix
- Le préfixe avec lequel il faut vérifier si la valeur commence, par exempleHello
.- Retourne
vrai
si la valeur commence par le préfixe, sinonfaux
.
La fonction STARTS_WITH(
...) est utilisée pour vérifier si une valeur commence par un préfixe. Le premier argument est la valeur et le second le préfixe. Les exemples suivants illustrent l'utilisation de la fonction STARTS_WITH(...)
:
Exemples
# Check if the value starts with the prefix
STARTS_WITH("Hello World", "Hello") == true
ENDS_WITH(valeur, suffixe)
value
- La valeur à vérifier si elle se termine par le suffixe, par exempleHello World
suffixe
- Le suffixe avec lequel il faut vérifier si la valeur se termine, par exempleWorld
- Retourne
vrai
si la valeur se termine par le suffixe, sinonfaux
.
La fonction ENDS_WITH(
...) est utilisée pour vérifier si une valeur se termine par un suffixe. Le premier argument est la valeur et le second le suffixe. Les exemples suivants illustrent l'utilisation de la fonction ENDS_WITH(...)
:
Exemples
# Check if the value ends with the suffix
ENDS_WITH("Hello World", "World") == true
FORMAT(format, valeur1, valeur2, ...)
format
- Le format à utiliser, par exemple"{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7} et {8}"
- Chaque paire d'accolades représente une valeur, c'est-à-dire que
{0}
est la première valeur,{1}
est la deuxième valeur, etc. - La fonction
FORMAT
prend en charge jusqu'à 9 valeurs. - Chaque jeton de modèle prend en charge quelques formateurs, comme indiqué ci-dessous
- Chaque paire d'accolades représente une valeur, c'est-à-dire que
valeur...
- Les arguments de value- Renvoie la chaîne de caractères formatée.
Formateurs
Formateur | Description | Exemple |
---|---|---|
{0, hex} |
Formatage d'un entier en hexadécimal | FORMAT("0x{0,hex}", 1234) == "0x1234" |
{1,hex0x} |
Formatage d'un entier en hexadécimal avec le préfixe 0x et utilisation d'un remplissage nul sur 4 octets ou 8 octets pour les entiers de 64 bits | FORMAT("{0,hex0x}", 0x1234) == "0x00001234" |
{2,hex0x2} |
Formatage d'un entier en hexadécimal avec le préfixe 0x et utilisation d'un remplissage nul sur 2 octets | FORMAT("0,hex0x2}", '\n') == "0x0a" |
{3,lowercase} |
Formatage de la chaîne en minuscules | FORMAT("{0,lowercase}", "HELLO") == "hello" |
{4,majuscules} |
Formatage de la chaîne en majuscules | FORMAT("{0,uppercase}", "heLLo") == "HELLO" |
{5,devise} |
Formate le nombre en devise en utilisant le format 9 999 999.00 $. | FORMAT("{0,currency}", 1234567.89) == "1 234 567.89 $" |
{6,st} |
Formate la valeur entière 32 bits en tant que symbole dans la table de chaînes globale. Cela peut être utile pour le débogage. | FORMAT("{0,st}", 666) |
{7,translate} |
Formate la valeur de la chaîne en tant que traduction dans la table globale des chaînes. Cela peut être utile pour le débogage. | FORMAT("{0,translate}", "Hello") |
{8,abbreviate} |
Formate la valeur de la chaîne en tant que chaîne abrégée. Cela peut être utile pour le débogage. | FORMAT("{0,abréger}", 100e6) == "100M" |
{0, arrondi} |
Arrondir la valeur en virgule flottante à l'entier le plus proche | FORMAT("{0,round}", 1234.5678) == "1235" |
{1, since} |
Formate la valeur de la date en tant qu'heure depuis l'heure actuelle en utilisant le format il y a 1 jour, il y a 2 heures, il y a 3 minutes, il y a 4 secondes, etc. | FORMAT("{0,since}", 1234567890) == "il y a 1 jour" |
{2, date} |
Formate la valeur de la date en tant que date en utilisant le format AAAA-MM-JJ | FORMAT("{0,date}", 1234567890) == "2009-02-13" |
La fonction FORMAT(
...) est utilisée pour formater une chaîne de caractères. Le premier argument est le format et le second est la valeur. Les exemples suivants illustrent l'utilisation de la fonction FORMAT(...)
:
Exemples
# Format a string value
FORMAT("Hello {0}", "World") == "Hello World"
$l = "Percent:"
$p = 44.519
FORMAT("{0} {1, 3} %", $l, $p) == "Percent: 44.5 %"
Fonctions de date
NOW()
- Renvoie l'horodatage de la date du jour.
La fonction NOW()
est utilisée pour obtenir l'horodatage de la date courante. Les exemples suivants illustrent l'utilisation de la fonction NOW()
:
DATE(année, mois, jour)
year
- L'année, c'est-à-dire2019
month
- Le mois, c'est-à-dire1
day
- Le jour, c'est-à-dire1
- Renvoie l 'horodatage de la date.
La fonction DATE(
...) est utilisée pour créer un horodatage. Le premier argument est l'année, le deuxième le mois et le troisième le jour. Les exemples suivants illustrent l'utilisation de la fonction DATE(...)
:
Exemples
# Create a date timestamp
DATE(2019, 1, 1) # => 1.54632e+09
DATE(chaîne)
string
- La chaîne de la date, par exemple2019-01-01
- Renvoie l 'horodatage de la date.
La fonction DATE(
...) est utilisée pour créer un horodatage. Le premier argument est la chaîne de caractères de la date. Les exemples suivants illustrent l'utilisation de la fonction DATE(
...) :
Exemples
# Create a date timestamp
DATE("2019-01-01") == DATE(2019, 1, 1) # => true
DATESTR(date)
date
- L'horodatage- Renvoie la chaîne de date sous la forme
AAAA-MM-JJ
.
La fonction DATESTR(
...) est utilisée pour créer une chaîne de dates. Le premier argument est l'horodatage de la date. Les exemples suivants illustrent l'utilisation de la fonction DATESTR(
...) :
Exemples
# Create a date string
DATESTR(DATE(2019, 1, 1)) == "2019-01-01"
YEAR(date)
date
- L'horodatage de la date- Renvoie l'année.
MONTH(date)
date
- L'horodatage de la date- Renvoie le mois.
DAY(date)
date
- L'horodatage de la date- Renvoie le jour.
Fonctions relatives aux actions
Les fonctions relatives aux actions sont utilisées pour obtenir des données relatives aux actions, telles que le prix d'une action à une certaine date, ou des données plus complexes, telles que la moyenne mobile d'une action sur une certaine période, etc.
Pour chacune des fonctions de stock, vous trouverez des exemples simples ainsi que la manière de les utiliser de manière plus complexe, par exemple pour une expression personnalisée de colonne de rapport.
Expressions de colonne
Lorsque vous écrivez une expression de colonne, vous pouvez vous appuyer sur quelques variables disponibles. Les variables suivantes sont disponibles dans une expression de colonne :
$REPORT
- Le nom du rapport (par exemple,Mon rapport
)$TITLE
- Le titre du rapport (par exemple,Mon rapport
)$COLUMN
- Le nom de la colonne (c.-à-d.Ma colonne
)$FORMAT
- Le format de la colonne (par exemple0.00
)0
: NON DÉFINI1
: DEFAULT2
: TEXTE3
: SYMBOLE4
: NOMBRE5
: DEVISE6
: POURCENTAGE7
: DATE8
: BOOLEAN
Les colonnes d'expression sont une fonction puissante qui vous permet de créer vos propres colonnes personnalisées. Vous pouvez utiliser n'importe quelle fonction intégrée ou créer vos propres fonctions personnalisées. Les exemples suivants illustrent l'utilisation des colonnes d'expression :
S(symbole, champ[, date])
, STOCK(...) OR EOD(
...)
Alias :
STOCK(...) OU EOD(...)
symbol
- Le symbole de l'action, par exempleAAPL.US
field
- Le champ à obtenir à partir du symbole de l'action, c'est-à-dire leprix
date
- La date à partir de laquelle le champ doit être obtenu, par exemple2017-01-01
- Vous pouvez également utiliser
ALL
pour queS(...)
renvoie un tableau de toutes les valeurs du champ à toutes les dates.
- Vous pouvez également utiliser
- Renvoie la valeur du champ ou un tableau de valeurs sous la forme
[[date, valeur], ...].
La fonction S(...)
est utilisée pour obtenir une valeur à partir d'un symbole boursier. Le premier argument est le nom du symbole et le deuxième argument est le nom du champ. Le troisième argument est facultatif et correspond à la date à partir de laquelle le champ doit être obtenu. Vous pouvez également utiliser ALL
comme date spéciale pour obtenir un tableau de toutes les valeurs du champ à toutes les dates.
Stock - Champs pris en charge
Champ | Description |
---|---|
open |
prix d'ouverture de l'action |
haut |
prix le plus élevé de l'action |
bas |
cours le plus bas de l'action |
haut |
prix le plus élevé de l'action |
prix |
prix actuel de l'action |
clôture |
cours de clôture de l'action |
date |
date du prix actuel des données en temps réel |
gmt |
décalage GMT du prix actuel à partir des données en temps réel |
volume |
volume du prix actuel à partir des données en temps réel |
hier |
prix de clôture de la veille |
changement |
variation en $ entre l'ouverture et la fermeture |
change_p |
variation en % de l'ouverture à la clôture (la valeur est déjà multipliée par 100) |
change_p_high |
variation en % du plus haut au plus bas (la valeur est déjà multipliée par 100) |
change_3d |
variation en % entre le niveau d'il y a 3 jours et le niveau de clôture |
change_5d |
variation en % entre le jour précédent et le jour de clôture |
change_1w |
variation en % depuis 1 semaine jusqu'à la clôture |
change_2w |
variation en % depuis 2 semaines jusqu'à la clôture |
change_4w |
variation en % depuis 4 semaines (~28 jours) jusqu'à la clôture |
change_1m |
variation en % depuis 1 mois jusqu'à la clôture |
change_2m |
variation en % depuis 2 mois jusqu'à la clôture |
change_3m |
variation en % depuis 3 mois jusqu'à la clôture |
change_6m |
variation en % depuis 6 mois jusqu'à la clôture |
change_1y |
variation en % depuis 1 an jusqu'à la clôture |
change_2y |
variation en % depuis 2 ans jusqu'à la clôture |
change_3y |
variation en % depuis 3 ans jusqu'à la clôture |
change_6y |
variation en % depuis 6 ans jusqu'à la clôture |
change_10y |
variation en % depuis 10 ans jusqu'à la clôture |
change_max |
variation en % entre le prix maximum et la clôture |
wma |
moyenne mobile pondérée |
ema |
moyenne mobile exponentielle |
sma |
moyenne mobile simple |
uband |
bande supérieure des bandes de Bollinger |
mband |
bande moyenne des bandes de Bollinger |
lband |
bande inférieure des bandes de Bollinger |
sar |
SAR parabolique |
pente |
pente de la régression linéaire |
cci |
indice du canal des matières premières |
dividendes |
rendement des dividendes en % (la valeur n' est pas multipliée par 100) |
earning_trend_actual |
tendance réelle des revenus |
earning_trend_estimate |
tendance de gain estimée |
earning_trend_difference |
différence entre l'évolution réelle et l'évolution estimée de la rémunération |
earning_trend_percent |
pourcentage de différence entre l'évolution réelle et l'évolution estimée des revenus |
nom |
nom de l'action |
description |
description de l'action |
pays |
pays de l'action |
secteur |
secteur de l'action |
industrie |
secteur de l'action |
type |
type de l'action |
bêta |
bêta de l'action |
devise |
devise de l'action |
diluted_eps_ttm |
bénéfice dilué par action pour les 12 derniers mois |
dma_200 |
moyenne mobile sur 200 jours |
dma_50 |
moyenne mobile sur 50 jours |
échange |
bourse de l'action |
forward_pe |
ratio cours/bénéfice à terme |
high_52 |
cours le plus élevé de l'action au cours des 52 dernières semaines |
low_52 |
cours le plus bas de l'action au cours des 52 dernières semaines |
market_cap |
capitalisation boursière |
pe |
ratio cours/bénéfice |
peg |
ratio prix/bénéfice sur la croissance |
marge_de_bénéfice |
marge bénéficiaire |
revenu_par_action_ttm |
revenu par action pour les 12 derniers mois |
nombre_d'actions |
nombre d'actions du titre |
short_percent |
pourcentage d'actions à découvert |
short_ratio |
ratio court |
symbole |
ticker/symbole de l'action |
trailing_pe |
ratio cours/bénéfice |
updated_at |
date à laquelle nous disposons des données les plus récentes pour l'action |
url |
URL de l'action |
ws_target |
Prix cible de Wall Street |
Exemples d'utilisation
Les exemples suivants illustrent l'utilisation de la fonction S(
...) :
# Get the current price of AAPL.US
S("AAPL.US", "price")
# Get the price change for the current day of U.US in $
S("U.US", "change")
# Get the price change for the current day of U.US in %
S("U.US", "change_p")
# Get the price change for the current day of U.US in % (value is already multiplied by 100)
S("U.US", "change_p_high")
# Get the moving average for the current day of U.US
S("U.US", "wma")
# Get the exponential moving average for the current day of U.US
S("GFL.TO", "ema")
Expressions de colonnes
Voici quelques exemples d'expressions de colonne que vous pouvez utiliser dans un rapport :
Split : S($TITLE, facteur_prix)
Prêt : ROUND((S($TITLE, close) / ((S($TITLE, dma_200)+S($TITLE, dma_50))/2))) * 100)
DMA : MAX(S($TITLE, dma_50), S($TITLE, dma_200))
S(symbole, champ, date)
Cette variante de la fonction S(...)
est utilisée pour obtenir une valeur d'un symbole boursier pour une date spécifique. Le premier argument est le nom du symbole, le deuxième argument est le nom du champ et le troisième argument est la date. La date peut être une chaîne au format AAAA-MM-JJ
ou un nombre de jours dans le passé. Le nom du champ peut être l'un des suivants :
Exemples
# You can use unix timestamps
S(TSL.TO, wma, 1661497600)
# Or dates in the format "YYYY-MM-DD"
S(PFE.US, close, "2018-01-01")
# The timestamp can always be converted to a date
S(TSL.TO, close, DATESTR(1671497600))
R(rapport, [titre,] champ)
Alias :
REPORT(rapport, [titre,] champ)
rapport
- le nom du rapport, c'est-à-direportefeuille
title
- le titre/symbole de l'action contenue dans le rapport, c'est-à-direAAPL.US
champ
- le nom du champ, c'est-à-dire leprix
.- Vous pouvez également spécifier une liste de champs dans un ensemble, c'est-à-dire
R(portfolio, AAPL.US, [price, change, MY_EXPRESSION, ...])
- Vous pouvez également spécifier une liste de champs dans un ensemble, c'est-à-dire
- Renvoie - la valeur du champ pour le titre spécifié dans le rapport spécifié.
La fonction R(
...) est utilisée pour obtenir une valeur à partir d'un rapport. Le premier argument est le nom du rapport, le deuxième argument est le symbole du titre et le troisième argument est le nom du champ.
Champs des rapports pris en charge
Champ | Description |
---|---|
vendu |
true si l'action a été vendue, false sinon |
actif |
true si l'action est toujours active, false sinon |
qty |
quantité possédée pour ce titre |
buy |
coût d'achat moyen pour ce titre |
jour |
variation journalière pour ce titre en fonction de la quantité possédée |
prix_total_achat |
prix d'achat total pour ce titre |
buy_total_quantity |
quantité totale achetée pour ce titre |
sell_total_price |
prix de vente total pour ce titre |
quantité_totale_de_vente |
quantité totale vendue pour ce titre |
buy_total_price_rated |
prix d'achat total pour ce titre dans la devise du rapport |
sell_total_price_rated |
prix de vente total pour ce titre dans la devise du rapport |
prix_moyen |
prix moyen pour ce titre (ce prix est dans la devise du titre) |
average_quantity |
quantité moyenne possédée pour ce titre |
prix_demande moyen |
prix moyen demandé pour ce titre |
taux de change moyen |
taux de change moyen pour ce titre |
date_min |
date minimale pour ce titre |
date_max |
date maximale pour ce titre |
date_average |
date moyenne pour ce titre |
days_held |
nombre de jours de détention pour ce titre pondéré par la quantité de chaque transaction |
titre |
symbole du titre pour ce titre |
ps |
ratio de tendance de prédiction pour ce titre |
ask |
prix d'achat pour ce titre |
taux de change du jour |
taux de change pour ce titre |
gain |
gain pour ce titre dans la devise du rapport |
gain_p |
gain pour ce titre en % |
total_dividendes |
total des dividendes pour ce titre |
valeur_totale |
valeur totale de ce titre dans la devise du rapport |
total_investment |
investissement total pour ce titre dans la devise du rapport |
Exemples
# Get the close price for TSLA.US in the report "300K"
R("300K", "TSLA.US", "close")
# Get how much dividends were paid for TNT-UN.TO in the report "300K"
R('300K', 'TNT-UN.TO', total_dividends)
# Returns true or false if the stock was completely sold
R('300K', 'GFL.TO', sold)
Liste de toutes les transactions pour un titre
Vous pouvez également utiliser le champ " transactions
spéciales" pour obtenir une liste de toutes les transactions relatives à un titre. Cette fonction est utile si vous souhaitez effectuer des calculs personnalisés sur les transactions. Le champ transactions
renvoie une liste de listes au format suivant :
R('300K', PFE.NEO, transactions)
Résultat :
[[2022-05-30, 1.65389e+09, buy, 200, 25.8],
[2022-06-09, 1.65475e+09, buy, 40, 25.6],
[2022-06-20, 1.6557e+09, buy, 60, 22.73],
[2023-01-05, 1.67289e+09, buy, 40, 23.7],
[2023-01-10, 1.67333e+09, buy, 40, 22.96],
[2023-01-11, 1.67341e+09, buy, 40, 22.53],
[2023-01-12, 1.6735e+09, buy, 40, 22.48],
[2023-03-07, 1.67817e+09, buy, 60, 19.26],
[2023-03-08, 1.67825e+09, buy, 50, 19.06],
[2023-03-09, 1.67834e+09, buy, 50, 18.96],
[2023-04-12, 1.68128e+09, buy, 50, 19.77],
[2023-04-18, 1.68179e+09, buy, 50, 19.36]]
Trouver le prix moyen des transactions qui ont un gain par rapport au prix d'aujourd'hui.
# Working title
$title='PFE.NEO'
# Get the current price
$current = S($title, close)
# Get all transactions for the title
$transactions = R('300K', $title, transactions)
# Filter the transactions to only keep the ones that have a gain
$transactions = FILTER($transactions, ($5 < $current) && ($3 == 'buy'))
# Get the average price of the transactions
$average = IF(COUNT($transactions) > 0, AVG(MAP($transactions, $5)), nan)
Expressions des colonnes
Récent : R($REPORT, $TITLE, date_max)
Ask II : R($REPORT, $TITLE, ask) * (1 + (1 - ((S($TITLE, close) / ((S($TITLE, dma_200)+S($TITLE, dma_50))/2)))))))
Dividendes : R($REPORT, $TITLE, buy_total_price) - R($REPORT, $TITLE, buy_total_adjusted_price)
GPrice : $current = S($TITLE, close),$transactions = FILTER(R($REPORT, $TITLE, transactions), ($5 < $current) && ($3 == 'buy')), IF(COUNT($transactions) > 0, AVG(MAP($transactions, $5)), nan)
F(symbole, champ)
Alias :
FONDAMENTAUX(symbole, champ)
symbole
- Le nom du symbole, par exempleTSLA.US
field
- Le nom du champ, par exempleTechnicals.Beta
- Retourne : La valeur du champ pour le symbole
La fonction F(
...) est utilisée pour obtenir une valeur fondamentale à partir d'un symbole. Le premier argument est le nom du symbole et le second est le nom du champ. Le nom du champ peut être à peu près n'importe quoi renvoyé par le point de terminaison /api/fundamentals
.
FIELDS(titre, api)
Afin de découvrir les champs disponibles pour un symbole, vous pouvez utiliser la fonction FIELDS :
FIELDS("U.US", 'fundamentals')
Vous obtiendrez quelque chose comme ceci :
[General.Code,
General.Type,
General.Name,
General.Exchange,
General.CurrencyCode,
General.CurrencyName,
General.CurrencySymbol,
...
Technicals.Beta,
...
SplitsDividends.PayoutRatio,
...]
Ensuite, lorsque vous avez une idée du champ que vous souhaitez utiliser, vous pouvez utiliser la fonction F(...)
pour obtenir la valeur du champ :
Exemples
# Get the stock beta
F(TSLA.US, "Technicals.Beta") #=> 2.0705
# Get the stock industry
F(TSLA.US, "General.Industry") #=> Auto Manufacturers
Expressions de colonnes
Bêta : ROUND(F($TITLE, "Technicals.Beta") * 100)
RECHERCHE(texte)
text
- L'expression textuelle à évaluer pour obtenir les résultats de la recherche- Résultats : Une liste de symboles correspondant à l'expression de recherche
La fonction SEARCH(...)
est utilisée pour rechercher des symboles. L'argument est une expression textuelle qui sera évaluée pour obtenir les résultats de la recherche.
Exemples de recherche
SEARCH("boat country:canada")
En fonction des marchés que vous avez indexés, vous obtiendrez quelque chose comme ceci :
[ADW-A.TO,
ADW-B.TO,
ADWPF.US,
BOAT.V,
BRMI.TO,
DOO.TO,
DOOO.US,
WCM-A.TO]
Ceci dit, vous pouvez vous rendre compte que, mélangé à d'autres fonctions, vous pouvez effectuer des recherches assez puissantes et les mélanger à d'autres fonctions.
# Get all the canadian companies that have the word "game" indexed
$game_companies = SEARCH("game country:canada")
# Map their current dma_200
$dma_200 = MAP($game_companies, [$1, S($1, dma_200)])
# This request can take a while to execute, so we cache the result
$dma_200 = FILTER($dma_200, $2 > 0.05)
Une fois la recherche terminée, vous obtiendrez quelque chose comme ceci :
[[AMPDF.US, 0.0825],
[APETF.US, 0.0598],
[AXV.V, 0.2],
...
]
Fonctions graphiques
Les fonctions graphiques sont utiles lorsque vous souhaitez créer une expérience utilisateur personnalisée. Supposons que vous ayez une expression qui produit une liste de symboles, vous pouvez utiliser la fonction TABLE(
...) pour créer une fenêtre de dialogue de tableau qui affichera les résultats.
TABLE(titre, ensemble, colonnes)
title
- Le titre du tableau, par exempleMon tableau
set
- L'ensemble des valeurs à afficher dans le tableau, par exempleSEARCH("boat country:canada")
columns
- Les colonnes à afficher dans le tableau, par exemple[expression, format, options...].
- Retourne : Renvoie le jeu d'entrée, mais à la fin, il affiche également une fenêtre de dialogue de tableau une fois que l'expression est évaluée. Dans la plupart des cas, vous n'utiliserez donc pas la valeur de retour.
La fonction TABLE(
...) est utilisée pour afficher une fenêtre de dialogue de tableau. Le premier argument est le titre du tableau, le deuxième argument est l'ensemble des valeurs à afficher dans le tableau et le troisième argument est les colonnes à afficher dans le tableau.
Exemples
Présenter dans un tableau les composants d'un *.INDX donné
$index = "IXIC.INDX" # Work with the following index
# Get index name
$name = F($index, "General.Name")
# Get index components
$components = F($index, "Components")
# Map components to [code, name, sector, industry]
$components = MAP($components,
[INDEX($2, 0, 1) + '.' + INDEX($2, 1, 1),
INDEX($2, 2, 1),
INDEX($2, 3, 1),
INDEX($2, 4, 1)])
# Load index components table
TABLE($name, $components,
['Symbol', $1, 'symbol'],
['Name', $2],
['Sector', $3],
['Industry', $4])
Si vous collez cette expression dans la console, vous obtiendrez quelque chose comme ceci :
Je vous vois venir, vous voulez trier le tableau par secteur, pas de problème, il suffit de cliquer sur l'en-tête de la colonne.
Il y a trop de colonnes, supprimons les colonnes secteur et industrie.
Vous pouvez également exporter le tableau vers un fichier CSV.
PLOT(titre, x_set, y_set, options)
title
- Le titre du graphique, par exempleMy Plot (Mon graphique
)x_set
- L'ensemble des valeurs à afficher sur l'axe des xy_set
- L'ensemble des valeurs à afficher sur l'axe des yoptions
- Options personnalisées pour le graphique- renvoie : Renvoie l'ensemble d'entrées, mais à la fin, il affiche également une fenêtre de dialogue de tracé une fois que l'expression est évaluée. Dans la plupart des cas, vous n'utiliserez donc pas la valeur de retour.
La fonction PLOT(...)
est utilisée pour afficher une fenêtre de dialogue de tracé. Le premier argument est le titre du graphique, le deuxième argument est l'ensemble des valeurs à afficher sur l'axe des x, le troisième argument est l'ensemble des valeurs à afficher sur l'axe des y et le quatrième argument est les options pour le graphique.
Il est important de noter que les ensembles x
et y
doivent avoir la même taille.
Options
Voici une liste des options disponibles :
xtime
- Si la valeur estvraie
, l'axe des x sera affiché sous la forme d'une série temporelle.
Exemples
Supposons que nous voulions représenter les estimations du bénéfice par action des derniers trimestres pour Bombardier Inc. (BBD-B.TO).
$stock = "BBD-B.TO" # Work with the following stock
# Get stock name
$name = F($stock, "General.Name")
# Get stock EPS estimates
$earnings = MAP(F($stock, "Earnings.History"), [INDEX($2, 'reportDate'), INDEX($2, 'epsEstimate')])
# Remove the null values
$earnings = FILTER($earnings, $2 != nil)
# Plot the earnings estimates, we transform the date to a timestamp
PLOT($name + ' - Earning estimates', MAP($earnings, DATE($1)), MAP($earnings, $2), "xtime")
Si vous collez cette expression dans la console, vous obtiendrez quelque chose comme ceci :
Vous devriez également voir apparaître une fenêtre de dialogue de tracé.
Si vous aimez ce que vous voyez, vous pouvez appuyer sur F11 pour capturer le tracé et l'enregistrer au format PNG.
Console
La plupart des exemples qui suivent peuvent être collés directement dans la console de l'application. Pour ouvrir la console, appuyez sur F10 ou cliquez sur l'élément de menu Fenêtre/Console . Une fois l'expression collée, appuyez sur Eval pour l'exécuter. Lorsque vous voyez des sections de code avec #--- $VAR=valeur #--- cela signifie généralement que vous pouvez adapter ces variables à vos besoins. |
![]() |
Exemples
- Mise en page des composants INDX
- Le titre du rapport de mise en page partage l'information
- Les titres des rapports de présentation modifient les pentes
- Titre du rapport de mise en page sur les bénéfices
- Titre du rapport de présentation dates du prochain rapport sur les bénéfices
- Mise en page des données des résultats de recherche
- Rapport graphique dividendes par an
- Titres du rapport sur la valeur des bénéfices annuels