Structure des registres des opérations de marché.
L'identifiant de l'enregistrement de transaction sur le marché ou, si l'interface d'échange ne fournit pas d'identifiant, un horodatage pour le remplir. Identifiant chaîne L'horodatage en millisecondes. Le temps Numéro Prix de la transaction. Le prix Numéro Montant de la transaction. Montant Numéro Le type de commande, voir {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}. Le type Numéro
La fonction exchange.GetTrades( renvoie un tableau de Trade ou un tableau vide.
{@fun/Marché/échange.GetTrades échange.GetTrades}
La structure du marché.
Les données originales renvoyées par l'interface d'échange, aucun attribut de ce type n'est disponible pour le backtesting.
Les informations
objet
LeSymbol
le champ est le code de la variété de négociation défini par la plateforme FMZ.
Symbol
la valeur du champ (à titre d'exemple) est:BTC_USDT
, indiquant la paire de négociation au comptant BTC_USDT.Symbol
la valeur du champ (à titre d'exemple) estBTC_USDT.swap
, qui représente le contrat perpétuel de propriété USDT pour BTC.Symbol
la valeur du champ est (par exemple):BTC_USDT.BTC-240108-40000-C
, qui représente un contrat d'option d'achat de BTC en USDT avec une date d'exercice du 8 janvier 2024 et un prix d'exercice de 40 000.Le symbole chaîne Le prix le plus élevé, ou si l'interface d'échange ne fournit pas un prix le plus élevé de 24 heures, utilisez le prix de vente unique pour remplir. Très haut Numéro Le prix le plus bas, ou si l'interface d'échange ne fournit pas un prix le plus bas de 24 heures, utilisez le prix d'achat pour remplir. Faible Numéro Le moment présent vend à un prix. Vendre Numéro Le moment présent a un prix. Acheter Numéro Le dernier prix de transaction. Le dernier Numéro Prix d'ouverture de la période, si l'interface de change ne fournit pas un prix d'ouverture de la période de 24 heures, le prix courant est utilisé pour remplir. Ouvert Numéro Si l'interface de change ne fournit pas de telles données, elle sera remplie avec les données disponibles dans l'interface de change, par exemple, le montant de la transaction peut être en devises cotées. Le volume Numéro Une horodatage de niveau milliseconde. Le temps Numéro Les positions, la plupart des interfaces d'échange ne fournissent pas ces données et la valeur est 0 lorsque ces données ne sont pas prises en charge. Le secteur privé Numéro
La fonction exchange.GetTicker() renvoie une structure de ticker.
Pour les contrats d'options, leexchange.GetTicker()
L'appel de la fonction est sujet à des erreurs. Parce que la liquidité du marché des contrats d'options est généralement faible, il n'y a souvent pas d'ordres en attente pour le premier achat ou la première vente.Ticker
champ de structureBuy
ouSell
est 0, une alerte d'erreur sera déclenchée.
{@fun/Market/exchange.GetTicker échange.GetTicker}, {@fun/Market/exchange.GetTickers échange.GetTickers} Je vous présente une liste de tous les jeux qui ont été joués.
La structure de la barre K-Line, la structure standard OHLC, est utilisée pour tracer des lignes K et des indicateurs pour le calcul et l'analyse.
Marque d'heure au niveau des millisecondes, pour une structure d'enregistrement dont la valeur de l'attribut Time est l'horodatage de début de la période de cette barre de ligne K. Le temps Numéro Le prix d'ouverture. Ouvert Numéro Le prix le plus élevé. Très haut Numéro Le prix le plus bas. Faible Numéro Prix de clôture. À proximité. Numéro valeur de position, la plupart des interfaces d'échange ne fournissent pas ces données, la valeur est 0 lorsque ces données ne sont pas prises en charge. Le secteur privé Numéro En principe, le montant de la transaction au comptant est exprimé en monnaie de base et le montant de la transaction contractuelle en nombre de contrats. Si l'interface d'échange ne fournit pas de telles données, elle sera remplie avec les données existantes de l'interface d'échange, par exemple, le montant de la transaction en devises. Le volume Numéro
La fonction exchange.GetRecords() renvoie une matrice d'enregistrements ou une matrice vide. Chaque structure d'enregistrement représente une barre de ligne K, c'est-à-dire une barre de ligne K.
{@fun/Marché/échange.GetRecords échange.GetRecords}
La structure de l'ordre.
Les données d'origine de la réponse de l'interface d'échange, aucun attribut de ce type n'est disponible pour le backtesting.
Les informations
objet
LeSymbol
le champ est le code du produit de négociation défini par la plateforme FMZ et son format est conforme à laSymbol
le champ de la structure {@struct/Ticker Ticker}.
Symbol
la valeur du champ est (par exemple):BTC_USDT
, indiquant la paire de négociation au comptant BTC_USDT.Symbol
la valeur du champ est (par exemple):BTC_USDT.swap
, qui représente le contrat perpétuel standard USDT de BTC.Le symbole
chaîne
Order Id, cet attribut se compose du code de produit de l'échange et de l'identifiant d'ordre d'origine de l'échange, séparés par des virgules en anglais.Id
format de la paire de négociation au comptantETH_USDT
L'ordre d'échange OKX est le suivant:ETH-USDT,1547130415509278720
Je suis désolée.
Identifiant
chaîne
Le prix de l'ordre, notez que cet attribut peut être de 0 ou -1 pour les ordres de marché.
Le prix
Numéro
Le nombre d'ordres passés, notez que cet attribut d'un ordre de marché peut être un montant et non une devise.
Montant
Numéro
Le nombre de transactions, éventuellement marqué par 0 si l'interface d'échange ne fournit pas ces données.
Montant de la transaction
Numéro
Prix moyen de transaction, notez que certains échanges ne fournissent pas ces données. Cet attribut est défini à 0 s'il n'est pas disponible et ne peut être calculé.
Prix moyen
Numéro
Le statut de la commande, voir {@var/ORDER_STATE/ORDER_STATE_PENDING ORDER_STATE_PENDING}, {@var/ORDER_STATE/ORDER_STATE_CLOSED ORDER_STATE_CLOSED}, {@var/ORDER_STATE/ORDER_STATE_CANCELED ORDER_STATE_CANCELED}, {@var/ORDER_STATE/ORDER_STATE_UNKNOWN OR_ORDER_STATE_UNKNOWN}.
Le statut
Numéro
Le type de commande, voir {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}.
Le type
Numéro
Pour la direction d'ouverture et de clôture des ordres de marché, voir {@var/ORDER_OFFSET/ORDER_OFFSET_OPEN ORDER_OFFSET_OPEN}, {@var/ORDER_OFFSET/ORDER_OFFSET_CLOSE ORDER_OFFSET_CLOSE}.
Compte rendu
Numéro
Cet attribut dans les ordres au comptant est""
Dans un ordre de contrat, cet attribut est le code du contrat spécifique.
Type de contrat
chaîne
LeOrder
La structure de commande peut être retournée par leexchange.GetOrder()
etexchange.GetOrders()
Les fonctionsexchange.GetOrders()
fonction renvoie un tableau de laOrder
structure ou un tableau vide. S'il n'y a pas d'ordre inachevé, il renvoie[]
, qui est un tableau vide.Status
propriété de laOrder
La structure d'ordre peut être directement comparée à des constantes telles queORDER_STATE_PENDING
pour déterminer si elles sont égales et ainsi déterminer le statut de la commande.
Pour le mode de position unidirectionnelle, lorsqu'il est impossible de déterminer si l'ordre est un ordre de clôture (de réduction), leOffset
le champ est réglé sur la direction d'ouverture par défaut, c'est-à-direORDER_OFFSET_OPEN
.
{@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange/
Structure des commandes en profondeur de marché.
Le prix. Prix Numéro Le montant. Montant Numéro
La fonction GetDepth (()) renvoie une structure de données dans laquelle les valeurs d'attributs des offres, des demandes sont des tableaux OrderBook.
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/Depth Depth} Je suis désolé, mais je ne peux pas le faire.
Structure de la profondeur du marché.
Le tableau des ordres de vente, c'est-à-dire le tableau du livre des ordres, est trié par prix du plus bas au plus élevé, et la première structure du livre des ordres dans le tableau a le prix le plus bas. Il demande séquence Le tableau des ordres d'achat, c'est-à-dire le tableau du livre des ordres, est trié par prix du plus haut au plus bas, et la première structure du livre des ordres du tableau a le prix le plus élevé. Les offres séquence Une horodatage au niveau des millisecondes. Le temps Numéro
La fonction exchange.GetDepth (()) renvoie une structure de profondeur.
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/OrderBook OrderBook}, {@struct/OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}
La structure des informations relatives au compte.
Les données originales renvoyées par l'interface d'échange, aucun attribut de ce type n'est disponible pour le backtesting.
Les informations
objet
Le nombre de monnaies libellées disponibles, au comptant, si la paire de négociation est BTC_USDT, le solde désigne le nombre de USDT actuellement disponibles. Dans le contrat U-standard, le solde désigne le montant de la marge disponible (USDT, quoteCurrency).
Le solde
Numéro
La valeur des actifs gelés lorsque l'ordre n'est pas exécuté
Le solde est gelé.
Numéro
Le nombre de monnaies disponibles pour le trading, au comptant, si la paire de trading est BTC_USDT, Stocks fait référence au nombre de BTC actuellement disponibles. Stocks fait référence au nombre de marges disponibles (monnaie, monnaie de base) dans un contrat basé sur la monnaie.
Les stocks
Numéro
La valeur des actifs gelés lorsque l'ordre n'est pas exécuté
Les stocks surgelés
Numéro
Seuls les objets d'échange de contrats à terme supportent ce champ.Equity
le champ est le total des fonds propres de la marge du compte à terme dans le cadre du contrat en cours. Si l'interface de change ne fournit pas de données pertinentes, ce champ est égal à 0.
Les fonds propres
Numéro
Ce champ est uniquement pris en charge par les objets d'échange de contrats à terme.UPnL
le champ est la somme desles bénéfices et pertes non réalisésde toutes les positions ouvertes par la marge du compte à terme selon les paramètres du contrat en cours.
L'UPNL Numéro
La fonction exchange.GetAccount () renvoie une structure de compte. Les données dans la structure renvoyée dépendent de la paire de trading actuellement définie, code de contrat.
{@fun/Account/exchange.GetAccount échange.GetAccount} Je ne sais pas si vous êtes d'accord.
La structure des informations relatives aux actifs en devises spécifiques.
Les noms définis par les bourses pour les actifs de crypto-monnaie, qui peuvent varier d'un échange à l'autre pour la même crypto-monnaie, par exempleBTC
peut être appeléXBT
sur certains échanges.
Monnaie
chaîne
Le solde disponible des actifs en devises.
Montant
Numéro
Le nombre d'actifs gelés dans la devise.
Nombre congelé
Numéro
LeFrozenAmount
La partie des actifs en devises peut inclure les actifs verrouillés pour les ordres non exécutés et la partie de la marge verrouillée pour les positions à terme.
{@fun/Account/exchange.GetAssets échange.GetAssets} Je suis désolé, mais je ne peux pas.
Structure des informations relatives aux positions du contrat.
Les données originales renvoyées par l'interface d'échange, aucun attribut de ce type n'est disponible pour le backtesting.
Les informations
objet
LeSymbol
le champ est le code du produit de négociation défini par la plateforme FMZ et son format est conforme à laSymbol
le champ de la structure {@struct/Ticker Ticker}.
Symbol
la valeur du champ est (par exemple):BTC_USDT
, indiquant la paire de négociation au comptant BTC_USDT.Symbol
la valeur du champ est (par exemple):BTC_USDT.swap
, qui représente le contrat perpétuel standard USDT de BTC.Le symbole chaîne Taille de la barre de position, remplie par calcul si l'interface d'échange ne fournit pas ces données, elle peut être inexacte. Niveau de marge Numéro La taille de la position, qui est généralement un entier positif (nombre de numéros de contrat).Notez que les spécifications du contrat telles que les multiplicateurs de contrat, les valeurs, etc. peuvent différer d'un échange à l'autre. Montant Numéro Quantité de blocage de position, nombre de positions temporairement gelées lorsque l'ordre clos n'est pas exécuté. Nombre congelé Numéro Prix moyen de la position, qui est en principe le prix moyen de la position dans son ensemble (ne participe pas au règlement). Le prix Numéro Le bénéfice/perte flottant de la position est en principe le bénéfice/perte non réalisé de la position, si les données ne sont pas fournies par l'interface de change, elles seront remplies par d'autres données de profit/perte de l'interface de change. Résultats Numéro Le type de position, voir {@var/POSITION_DIRECTION/PD_LONG PD_LONG}, {@var/POSITION_DIRECTION/PD_SHORT PD_SHORT}. Le type Numéro Code du contrat, voir la description de la fonction {@fun/Futures/exchange.SetContractType exchange.SetContractType} pour plus de détails. Type de contrat chaîne La marge occupée par la position, remplie de 0, si l'interface d'échange ne fournit pas ces données. Marge Numéro
La fonction exchange.GetPositions( renvoie un tableau de positions ou un tableau vide. Pour les contrats à terme de crypto-monnaie, il est important de noter que le tableau de la structure de position renvoyé par la fonction Exchange.GetPositions(). Pour les attributs FrozenAmount, Profit et Marge dans la structure de données de position, comme les données fournies par l'échange ne sont pas uniformes, l'interface GetPositions(), la définition des données renvoyées par l'objet d'échange peut être différente. Par exemple, certains échanges n'ont pas de données de gel de position dans les données de position, donc la FrozenAmount est 0.
{@fun/Futures/exchange.GetPositions échange.GetPositions}
Structure des informations sur le marché des variétés commercialisées.
Prendre des valeurs telles que"btcusdt"
, leSymbol
Le format et la définition de cet attribut sont différents de ceux de laSymbol
le champ de la structure {@struct/Ticker Ticker}.
Le symbole
chaîne
Prendre des valeurs telles que"BTC"
, leBaseAsset
Le champ indique le nom de la monnaie négociée (c.-à-d.: monnaie de base), qui est uniformément en majuscules.
Actifs de base
chaîne
Prendre des valeurs telles que"USDT"
, leQuoteAsset
Le champ indique le nom de la monnaie libellée (c'est-à-dire: quoteCurrency), qui est uniformément en majuscules.
Cote actif
chaîne
Prendre des valeurs telles que0.01
, leTickSize
le champ enregistre la valeur de la plus petite variation du prix de l'élément négocié à la bourse.
Taille de la puce
Numéro
Prendre des valeurs telles que0.01
, leAmountSize
le champ enregistre la valeur de la variation minimale du volume des ordres passés à la bourse pour cette transaction.
Nombre
Numéro
Prendre des valeurs telles que2
, lePricePrecision
le champ enregistre la précision du prix de l'élément négocié à la bourse, indiquant que le prix est précis à 2 décimales.
PrixPrécision
Numéro
Prendre des valeurs telles que3
, leAmountPrecision
le champ enregistre la précision des ordres passés à la bourse pour la variété négociée, indiquant que les ordres sont exacts à 3 décimales.
MontantPrécision
Numéro
Prendre des valeurs telles que0.001
, leMinQty
le champ enregistre la taille minimale de l'ordre sur l'échange pour cette transaction.
MinQty
Numéro
Prendre des valeurs telles que1000
, leMaxQty
le champ enregistre le nombre maximal d'ordres pouvant être passés sur l'échange pour cette variété de transactions.
Max. quantité
Numéro
Prendre des valeurs telles que5
, leMinNotional
le champ enregistre le montant minimum de l'ordre placé sur la bourse pour cette variété de transactions.
Min Notionnel
Numéro
Prendre des valeurs telles que9999999
, leMaxNotional
le champ enregistre le montant maximal des ordres passés sur la bourse pour cette variété de transactions.
MaximumNotionnel
Numéro
Le champCtVal
Il enregistre la valeur d'un contrat du produit négocié sur la bourse, dans la devise enregistrée dans leCtValCcy
Dans ce domaine, par exemple:CtVal
est de 0,01CtValCcy
est"BTC"
, ce qui signifie qu'un contrat vaut 0,01 BTC.
CtVal
Numéro
Le champCtValCcy
enregistre l'unité de valeur d'un marché. L'unité de valeur d'un marché peut être:BTC
, USD
, ETH
, etc.
CtValCy
Numéro
Le champInfo
Il enregistre les données brutes pour les espèces renvoyées par l'interface d'information de marché de l'échange.
Les informations
objet
La fonction exchange.GetMarkets() renvoie un dictionnaire contenant ceMarket
la structure.
En raison du niveau différent de support pour les données d'information de marché par chaque échange, les champs qui ne sont pas pris en charge par l'échange seront ignorés.Info
field.
{@fun/Market/exchange.GetMarkets échange.GetMarkets} Je ne sais pas si vous êtes d'accord.
La structure de l'information sur le taux de financement du produit de trading. Seuls les contrats perpétuels de crypto-monnaie prennent en charge les taux de financement.
Les données brutes sont renvoyées lorsque l'interface des taux de financement des contrats à terme de crypto-monnaie est appelée.
Les informations
objet
LeSymbol
le champ est le code du produit de négociation défini par la plateforme FMZ.
Le symbole
chaîne
Intervalle de taux de financement, en millisecondes.28800000
désigne un intervalle de 8 heures.
L'intervalle
Numéro
L'heure de début de la période de taux de financement suivante (heure de règlement de cette période), en millisecondes.
Le temps
Numéro
Le taux de financement qui sera utilisé pour le règlement de cette période
Taux
Numéro
Les taux de financement des contrats perpétuels de différentes bourses de contrats à terme ont des méthodes et des mécanismes de calcul différents, et les cycles de règlement sont de 1 heure, 4 heures, 8 heures et un jour.
Le taux de financement actuel des contrats perpétuels sur les bourses à terme a une valeur fixe et une valeur variable calculée en temps réel.
LeRate
le champ est la valeur du taux de financement sans%
. Si vous voulez le convertir en une valeur avec%
, vous pouvez le multiplier par 100 et ajouter le%
à la fin.
{@fun/Futures/exchange.GetFundings échange.GetFundings} Je ne peux pas vous aider.
Cette structure JSON est utilisée pour configurer les paramètres de la fonction HttpQuery et de la fonction HttpQuery_Go pour envoyer la demande Http.
Méthode de demande, par exemple:GET
, POST
, etc.
méthode
chaîne
Par exemple, dans une demande POST, le corps peut contenir des données de formulaire, JSON, texte, etc.
corps
chaîne
Codage des ensembles de caractères. Par exemple, spécifiez le codage des données textuelles dans le corps comme suit:"UTF-8"
Je suis désolée.
charset
chaîne
Un cookie est un petit morceau de données utilisé pour stocker et échanger des informations d'état entre un client (généralement un navigateur) et un serveur.
les cookies
chaîne
Utilisé pour simuler les empreintes digitales du navigateur.
Profil
chaîne
Lorsqu'il est réglé sur true, l'appel de la fonction HttpQuery renvoie le message de réponse complet.
débogage
Boole
Les informations d'en-tête de demande existent sous forme de paires clé-valeur (structure JSON) et sont utilisées pour transmettre diverses informations, telles que le type de contenu, les informations d'authentification, le contrôle du cache, etc.
en-têtes
JSON
Le temps d'arrêt est de 1 seconde.
Le temps mort
Numéro
Exemple d'utilisation:
function main() {
var options = {
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
profile: "chrome_103",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
var ret = HttpQuery("http://127.0.0.1:8080", options)
Log(ret)
}
Le message http envoyé lorsque le code ci-dessus est exécuté:
POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=12345; lang=en
Host: 127.0.0.1:8080
Test-Http-Query: 123
Transfer-Encoding: chunked
User-Agent: Mozilla/5.0 (Macintosh; ...
Accept-Encoding: gzip, deflate, br
e
a=10&b=20&c=30
0
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go} Vous pouvez utiliser le nom de domaine de l'utilisateur.
Cette structure JSON est la structure de données renvoyée par la fonction HttpQuery en mode de débogage lorsque le champ de débogage dans leoptions
Le paramètre de structure est vrai.
Code d'état http Code de l' état Numéro Demandez des informations sur l'en-tête. Titre JSON Informations sur les cookies. Les cookies séquence Les informations complètes sur le chemin de la demande. Trace JSON Longueur du message Longueur Numéro Contenu du message. Corps chaîne
Un exemple de la structure de données JSON retournée est:
{
"StatusCode": 302,
"Header": {
"Content-Type": ["text/html"],
// ...
},
"Cookies": [{
// ...
}],
"Trace": {},
"Length": 154,
"Body": "..."
}
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go} Vous pouvez utiliser le nom de domaine de l'utilisateur.
Cette structure JSON est utilisée pour configurer le contenu de la table affiché dans la barre d'état de la stratégie.
Utilisé pour définir le type d'interface utilisateur et les contrôles à analyser et à afficher.table
Je suis désolée.
type
chaîne
Utilisé pour définir le titre de la barre d'état.
titre
chaîne
Utilisé pour définir les titres des colonnes de la table de la barre d'état. Le premier élément du tableau est le titre de la première colonne, et ainsi de suite.
les cols
séquence
Utilisé pour définir les données de rangée de la table des barres d'état. Le premier élément de la matrice de rangées (matrice bidimensionnelle) est également une structure de tableau. La longueur de cette structure de tableau doit être cohérente avec le nombre de colonnes de la table (les éléments de la structure de tableau correspondent aux noms des colonnes de la table un par un), c'est-à-dire la première ligne de données de la table.
lignes
séquence
function main() {
var tbl = {
type: "table",
title: "title",
cols: ["Column 1", "Column 2", "Column 3"],
rows: [
["Row 1 Column 1", "Row 1 Column 2", "Row 1 Column 3"],
["Row 2 Column 1", "Row 2 Column 2", "Row 2 Column 3"],
["Row 3 Column 1", "Row 3 Column 2", "Row 3 Column 3"],
]
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
Je ne sais pas si je peux le faire.
Cette structure JSON est utilisée pour configurer le contrôle de bouton dans la barre d'état. La structure JSON de contrôle de bouton peut être intégrée dans la structure JSON de la table de barre d'état. Cette structure est une structure d'ancienne version, et la plate-forme est toujours compatible. Il est recommandé d'utiliser la dernière version de la structure JSON du bouton. Exemple de construction d'un bouton de commande de la barre d'état (après avoir déclenché et cliqué sur le bouton, la fenêtre contextuelle contient un seul contrôle d'entrée, qui est construit à travers le champ d'entrée):
{
"type": "button",
"cmd": "open",
"name": "opening a position",
"input": {
"name": "number of opening positions",
"type": "number",
"defValue": 1
}
}
Les commandes dans la fenêtre contextuelle déclenchées en cliquant sur le bouton de la barre d'état sont réglées parinput
ougroup
.
Pour les commandes de boutons, le réglage fixe est le suivant:button
Je suis désolée.
type
chaîne
Paramètres du type de bouton
classe
chaîne
Le texte sur le bouton de commande, c'est à dire le nom du bouton.
Nom
chaîne
Le contenu de la commande interactive envoyé à la stratégie lorsque le bouton de commande déclenche une opération de clic.
CMD
chaîne
La description du bouton de commande. La description est affichée lorsque la souris est placée sur le bouton dans la barre d'état.
Définition
chaîne
Définit le bouton sur désactivé (vrai) / activé (faux).
handicapés
Boole
Lors de la construction d'un bouton de barre d'état pour l'interaction, la saisie de données est également prise en charge.GetCommand()
La fonctioninput
élément à la structure de données JSON de la commande de bouton dans la barre d'état pour configurer la commande d'entrée dans la fenêtre contextuelle affichée lorsque le bouton est déclenché.
Par exemple, pour définir la valeur de lainput
champ:
{
"name": "Number of opening positions",
"type": "number",
"defValue": 1,
"description": "test",
}
Description de chaque champ dans la structure JSON ci-dessus:
"number"
: commande numérique d'entrée."string"
: commande d'entrée de chaîne."selected"
Le contrôle de la boîte déroulante."boolean"
Commutateur de commande."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}
, la description textuelle des options de la boîte déroulante est réglée sur A, B, C.Pour les champs étendus par le contrôle de type de la case déroulante:
{text: "description", value: "value"}
Utilisez le champ defValue pour définir l'option par défaut, qui peut être une sélection multiple.l'entrée
JSON
Leinput
le champ configure un contrôle dans la boîte pop-up qui apparaît après le bouton de la barre d'état est déclenché en cliquant.group
etinput
Les éléments de la fonction de commande sont les suivants:group
ont la même structure de données que leinput
Veuillez vous référer à la description pertinente du champinput
field.
groupe séquence
Un exemple declass
valeur de la structure JSON d'un bouton dans la barre d'état:
function main() {
var table = {
type: "table",
title: "Status bar button style",
cols: ["Default", "Original", "Success", "Information", "Warning", "Danger"],
rows: [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "Default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "Original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "Success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "Information"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "Warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "Danger"}
]
]
}
LogStatus("`" + JSON.stringify(table) + "`")
}
Exemple d'utilisation dugroup
champ avec leinput
champ:
function main() {
// The drop-down box control in the page triggered by the testBtn1 button uses the options field to set options and the defValue field to set the default options. This is different from other examples in this chapter that directly use defValue to set options.
var testBtn1 = {
type: "button",
name: "testBtn1",
cmd: "cmdTestBtn1",
input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
}
/*
Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
it also supports the use of ```{text: "description", value: "value"}``` structure. Use the defValue field to set the default option. The default option can be multiple selection (multiple selection is achieved through an array structure). Multiple selection requires setting the additional field multiple to true.
*/
var testBtn2 = {
type: "button",
name: "testBtn2",
cmd: "cmdTestBtn2",
input: {
name: "testBtn2MultiComboBox",
type: "selected",
description: "Implementing multiple selection in drop-down box",
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
defValue: ["A", "C"],
multiple: true
}
}
// Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
while (true) {
LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(5000)
}
}
Je ne sais pas si je peux le faire.
Cette structure JSON est utilisée pour configurer le bouton de contrôle dans la barre d'état. Exemple de construction d'un bouton de contrôle de la barre d'état (après avoir déclenché et cliqué sur le bouton, la fenêtre contextuelle contient plusieurs commandes d'entrée, qui sont construites à travers le champ de groupe):
{
"type": "button",
"cmd": "open",
"name": "Open a position and place an order",
"group": [{
"type": "selected",
"name": "tradeType",
"label": "order type",
"description": "market order, limit order",
"default": 0,
"group": "trading setup",
"settings": {
"options": ["market order", "limit order"],
"required": true,
}
}, {
"type": "selected",
"name": "direction",
"label": "trading direction",
"description": "buy, sell",
"default": "buy",
"group": "trading setup",
"settings": {
"render": "segment",
"required": true,
"options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
}
}, {
"type": "number",
"name": "price",
"label": "price",
"description": "order price",
"group": "trading setup",
"filter": "tradeType==1",
"settings": {
"required": true,
}
}, {
"type": "number",
"name": "amount",
"label": "order quantity",
"description": "order quantity",
"group": "trading setup",
"settings": {
"required": true,
}
}],
}
Les commandes dans la fenêtre contextuelle déclenchées en cliquant sur le bouton de la barre d'état sont réglées parinput
ougroup
.
Pour les commandes de boutons, le réglage fixe est le suivant:button
Je suis désolée.
type
chaîne
Le texte sur le bouton de commande, c'est à dire le nom du bouton.
Nom
chaîne
Le contenu de la commande interactive envoyé à la stratégie lorsque le bouton de commande déclenche une opération de clic.
CMD
chaîne
Lors de la construction d'un bouton de barre d'état pour l'interaction, la saisie de données est également prise en charge.GetCommand()
La fonctioninput
élément à la structure de données JSON de la commande de bouton dans la barre d'état pour configurer la commande d'entrée dans la fenêtre contextuelle affichée lorsque le bouton est déclenché.
Comparée à l'ancienne version de la structure d'entrée, la nouvelle version comporte quelques nouveaux champs et changements:
{
"type": "selected",
"name": "test",
"label": "topic",
"description": "desc",
"default": 1,
"filter": "a>1",
"group": "group1",
"settings": { ... }, // Component configuration
}
Description et explication de chaque champ dans la structure JSON ci-dessus:
type
Type de commande (champ obligatoire), prend en charge les paramètres suivants:"number"
boîte de saisie numérique,"string"
boîte d'entrée de chaîne,"selected"
boîte déroulante,"boolean"
Commutez le contrôle.
Nom Si la structure JSON actuelle est la valeur du champ du champ d'entrée, lorsque le champ d'étiquette n'est pas défini, le nom est le titre du contrôle dans la fenêtre contextuelle qui apparaît après avoir cliqué sur le bouton de la barre d'état. Si la structure JSON actuelle est un élément de la valeur de champ (structure de tableau) du champ de groupe, le nom n'est pas utilisé comme titre de contrôle. Le champ de nom est utilisé pour indiquer le nom de champ du contenu d'entrée de contrôle. Par exemple, un extrait du champ de groupe est utilisé comme illustration:
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
Selon cet extrait, si le bouton de la barre d'état déclenche une interaction, une boîte contextuelle apparaîtra avec 4 commandes, qui sont toutes des commandes de boîte déroulante. Après avoir défini les options pour chaque contrôle et cliqué sur OK pour envoyer le message d'interaction, la fonction GetCommand dans la stratégie recevracmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}
Je suis désolée.
La valeur de nom dans la structure JSON est utilisée comme nom de champ de l'information interactive renvoyée, par exemple: comboBox1, comboBox2, etc.
étiquette Utilisé pour définir le titre du contrôle.
Définition Description de la commande. Si la structure JSON actuelle est un élément de la valeur de champ (structure de tableau) du champ de groupe, et que le champ d'étiquette n'est pas défini, la description est le titre du contrôle dans la boîte contextuelle qui s'affiche après avoir cliqué sur le bouton de la barre d'état.
par défaut La valeur par défaut du contrôle.
filtre Sélecteur, utilisé pour masquer les commandes. Ne pas définir ce champ signifie pas de filtrage (affichage des commandes); lorsque ce champ est défini, aucun filtrage (affichage des commandes) ne se produit lorsque l'expression est vraie. Lorsque l'expression est fausse, le filtrage se produit (pas d'affichage des commandes)
groupe Utilisé pour contrôler le regroupement des contrôles, qui peuvent être pliés.
réglages Configuration des composants, le contrôle a une variété d'options d'interface utilisateur, utilisez cette option pour effectuer des réglages spécifiques.
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
paramètres:
paramètres.obligatoire: si elle est requise.
paramètres.disabled: Désactiver ou non.
paramètres.min: valide lorsque type=numéro, indiquant la valeur minimale ou la longueur minimale d'une chaîne.
paramètres.max: valide lorsque type=numéro, indiquant la valeur maximale ou la longueur maximale d'une chaîne.
paramètres.step: valide lorsque type=numéro et rendu=slider, indiquant la longueur de l'étape.
paramètres.multiple: valide lorsque type= est sélectionné, indiquant que des sélections multiples sont prises en charge.
settings.customizable: Il est valide lorsque type= est sélectionné, indiquant que la personnalisation est prise en charge; les utilisateurs peuvent directement modifier et ajouter de nouvelles options dans le contrôle de la fenêtre déroulante. Si l'option nouvellement éditée est sélectionnée, le nom de l'option est utilisé à la place de la valeur représentée par l'option lorsque l'interaction est déclenchée.
paramètres.options: valide lorsque type= est sélectionné, indiquant le format de données de l'option sélecteur: [
l'entrée
JSON
Leinput
le champ configure un contrôle dans la boîte pop-up qui apparaît après le bouton de la barre d'état est déclenché en cliquant.group
etinput
Les éléments de la fonction de commande sont les suivants:group
ont la même structure de données que leinput
Veuillez vous référer à la description ci-dessus du champinput
field.
groupe séquence
Prise en charge des paramètres bilingues:
{
type:'selected',
name:'test',
label:'选项|options',
description:'描述|description',
default:0, // Here, the default value is set to 0, which means the value in the option {name:'xxx|yyy',value:0}
filter:'a>1&&a<10',
group:'分组|group',
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
}
Je ne sais pas si je peux le faire.
Ce JSON est utilisé pour définir les informations de configuration du graphique de la fonction de dessin personnaliséChart()
. La bibliothèque de graphiques utilisée est Highcharts. Seuls quelques champs de configuration de base sont listés ici.
Champ d'extension de plateforme: définir sur vrai pour utiliser les graphiques Highstocks; définir sur faux pour utiliser les graphiques Highcharts.
__ est Stocks chaîne
{
layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
height: 300, // Specify height
}
prolongation JSON Titre du graphique titre chaîne Configuration de l'axe X. xAxe JSON Configuration de l'axe Y. yAxe JSON Série de données graphiques. séries JSON
Un exemple de dessin simple:
// This chart is an object in JavaScript language. Before using the Chart function, we need to declare an object variable chart to configure the chart.
var chart = {
// This field marks whether the chart is a general chart. If you are interested, you can change it to false and run it.
__isStock: true,
// Zoom tool
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
// title
title : { text : 'Price difference analysis chart'},
// Select range
rangeSelector: {
buttons: [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
selected: 0,
inputEnabled: false
},
// The horizontal axis of the coordinate axis is: x-axis, and the current setting type is: time
xAxis: { type: 'datetime'},
// The vertical axis of the coordinate axis is: the y-axis, the default value is adjusted according to the data size
yAxis : {
// title
title: {text: 'Price difference'},
// Whether to enable the right vertical axis
opposite: false
},
// Data series, this property saves each data series (line, K-line chart, label, etc.)
series : [
// The index is 0, and the data array stores the data of the index series.
{name : "line1", id : "line 1,buy1Price", data : []},
// The index is 1, dashStyle:'shortdash' is set, that is, a dashed line is set
{name : "line2", id : "line 2,lastPrice", dashStyle : 'shortdash', data : []}
]
}
function main(){
// Call the Chart function to initialize the chart
var ObjChart = Chart(chart)
// Clear
ObjChart.reset()
while(true){
// Get the timestamp of this poll, which is a millisecond timestamp. Used to determine the position of the X-axis written to the chart
var nowTime = new Date().getTime()
// Get market data
var ticker = _C(exchange.GetTicker)
// Get the buy price from the return value of the market data
var buy1Price = ticker.Buy
// Get the last transaction price. In order to prevent the two lines from overlapping, we add 1.
var lastPrice = ticker.Last + 1
// Use the timestamp as the X value and the buy price as the Y value to pass into the data sequence of index 0
ObjChart.add(0, [nowTime, buy1Price])
// Same as above
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
}
}
{@fun/Log/Graphique graphique}
Ce JSON est utilisé pour définir les informations de configuration du graphique de la fonction de dessin personnaliséKLineChart
. Seuls quelques champs de configuration de base sont répertoriés ici.
Si vous devez dessiner sur la carte principale. couverture Boole Configuration de l'axe X. xAxe JSON Configuration de l'axe Y. yAxe JSON Configuration du graphique des chandeliers. bougie JSON
Veuillez vous référerArticle spécial sur le dessin de graphiques à l'aide de la fonction KLineChart.
J'espère que tu as bien fait.
Le JSON est utilisé pour définir les données à charger par leexchange.SetData()
Les données JSON sont une structure de tableau, dans laquelle chaque élément est également un tableau, à savoir[time, data]
.
L'horodatage des données, marquant l'heure de ces données.
le temps
Numéro
les données correspondent à une certaine période dans les données chargées par leexchange.SetData()
La mise en œuvre de la stratégieexchange.GetData()
fonction obtient les données avec l'horodatage correspondant selon l'heure actuelle.
données chaîne, nombre, bool, objet, tableau, etc.
Un exemple de chargement des données dans le système de backtesting et de récupération des données lorsque le backtest de stratégie est en cours d'exécution:
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
while(true) {
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
}
}
Je ne sais pas.
Ce JSON est la structure de données renvoyée par leEventLoop()
La fonctionEventLoop()
les moniteurs de fonctionnalités: 1. tout événement de données lisible par WebSocket; 2. événements de fin de tâche simultanés avec les fonctions exchange.Go() et HttpQuery_Go(); 3. événements de message envoyés dans les threads créés par lethreading.Thread()
fonction dans la stratégie du langage JavaScript.
Numéro de séquence des événements. Les résultats Numéro Nom de l'événement. Événement chaîne Identifiant du fil d'événement. Enfilé Numéro Indice des événements. Indice Numéro Une étiquette d'heure nano. Nano Numéro
Utilisez leexchange.Go()
La fonction pour effectuer des demandes simultanées et la structure des données d'événement renvoyées par leEventLoop()
function.
{
"Seq":1,
"Event":"Exchange_GetTrades",
"ThreadId":0,
"Index":3,
"Nano":1682068771309583400
}
Dans le fil d'exécution simultanée de la stratégie de langage JavaScript (créé par lethreading.Thread()
La fonctionpostMessage()
fonction de l'objet thread est utilisé pour envoyer un message, leEventLoop()
la fonction dans le thread qui reçoit le message surveillera la structure de données d'événement suivante:
{
"Seq":4,
"Event":"thread",
"ThreadId":1,
"Index":0,
"Nano":1727592066508674000
}
J'espère que tu vas bien.
Ce JSON est la structure de données renvoyée par leDBExec()
fonction; il est également retourné lors de l'exécution d'une instruction SQL en utilisant leexec()
méthode de l'objet créé par leDial()
function.
Les noms de colonne des données à interroger, une chaîne de caractères. les colonnes séquence La valeur du champ valeurs est un tableau bidimensionnel, où chaque élément est un tableau et un enregistrement de données. les valeurs séquence
Exemple de requête de données dans la base de données:
{
"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
"values":[
[1518970320000,100,99.1,90,100,12345.6],
[1518960320000,100,99.1,90,100,12345.6]
]
}
Je ne sais pas si je peux le faire.
Cette JSON est la structure de données renvoyée par la fonction membrejoin()
de l'annéeThread
objet, qui enregistre certaines informations sur les threads concurrents dans leJavaScript
La stratégie linguistiqueThread
objet fait référence à l'objet de fil, qui est créé parthreading.Thread()
.
Identifiant du fil. Nom de l'entreprise Numéro Si le fil est forcé de se terminer. terminé Boole Le temps de fonctionnement du fil en nanosecondes. dépassé Numéro La valeur de retour de la fonction thread. Résultats Numéro
Le code suivant teste le mécanisme de temps d'arrêt dujoin()
Le rôle de laThread
objet et imprime la valeur de retour de lajoin()
function.
function testFunc() {
for (var i = 0; i < 5; i++) {
Log(i)
Sleep(300)
}
}
function main() {
var t1 = threading.Thread(testFunc)
Log(t1.join(1000)) // undefined
Log(t1.join()) // {"id":1,"terminated":false,"elapsed":1506864000}
} ```
{@fun/Threads/Thread/join join}
Fonctions intégrées
Variables intégrées