JavaScript
, Python
, C++
, et les stratégies MyLanguage peuvent être conçues avec des commandes d'interaction. Les commandes d'interaction d'une stratégie sont utilisées pour envoyer des commandes interactives au programme de stratégie en cours d'exécution lorsque la stratégie est en cours d'exécution dans le trading en direct.
PourJavaScript
, Python
, etC++
Les stratégies de type de langageGetCommand()
fonction dans le code de stratégie pour obtenir le message généré par la commande d'interaction.
Avec un code conçu dans la stratégie pour gérer les messages des commandes interactives, l'utilisation de commandes interactives pendant la négociation en direct peut permettre (sans s'y limiter) des fonctions telles que:
Variable (exemple de nom) | Définition | Le type | Valeur par défaut (description) | Configuration du composant (description) | Les commentaires |
---|---|---|---|---|---|
Numéro de code | Description de la commande interactive cmdNum | Numéro | La valeur par défaut est facultative et peut être laissée vide | Utilisé pour définir les commandes d'interface liées à l'élément interactif en cours: type de composant, valeur minimale, valeur maximale, regroupement, etc. | Remarques sur la commande interactive cmdNum |
CmdBool | Description de la commande interactive cmdBool | Boolean (vrai/faux) | Valeur par défaut requise, allumée ou désactivée | Comme ci-dessus | Remarques sur le contrôle interactif cmdBool |
CmdStr | Description de la commande interactive cmdStr | une chaîne | La valeur par défaut est facultative et peut être laissée vide | Comme ci-dessus | Remarques sur la commande interactive cmdStr |
CmdCombox | Description de la commande interactive cmdCombox | sélectionné | La valeur par défaut est facultative et peut être laissée vide | Comme ci-dessus | Remarques sur le contrôleur interactif cmdCombox |
CmdBtn | Description de la commande interactive cmdBtn | le bouton | La commande de bouton n'est pas liée à l'élément d'entrée | Comme ci-dessus | Remarques sur la commande interactive cmdBtn |
Le message envoyé à la stratégie après le déclenchement de la commande interactive (chaîne):
Après avoir entré les données interactives GetCommand()
La fonction dans le programme de stratégie recevra le message:cmdBool:true
- Je ne sais pas.
Après saisie des données interactives:abc
Dans la zone d'entrée de contrôle interactif cmdStr, cliquez sur le bouton de contrôle interactif cmdStr.GetCommand()
La fonction dans le programme de stratégie recevra le message:cmdStr:abc
Je suis désolée.
Après avoir sélectionné la deuxième option dans la fenêtre déroulante du contrôleur interactif cmdCombox, cliquez sur le bouton du contrôleur interactif cmdCombox.GetCommand()
La fonction dans le programme de stratégie recevra le message:cmdCombox:1
, où 1 représente l'indice de l'option sélectionnée, la première option a un indice de 0 et la deuxième option a un indice de 1.
Cliquez sur le bouton de commande interactive cmdBtn.GetCommand()
La fonction dans le programme de stratégie recevra le message:cmdBtn
.
L'option
5 types de composants supportés par des commandes interactives:
Les commandes interactives peuvent également être regroupées, tout comme les paramètres d'interface.
En plus de concevoir des commandes interactives dans la colonne LogStatus
section fonction du
Contrôles de boutons communs Un exemple de structure de données est:
{"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
Contrôle des boutons avec entrée de données
Utilisez leinput
propriété permettant de définir les options de commande d'entrée, avec une structure de données par exemple:
{"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}
{
"type": "button",
"cmd": "test1",
"name": "test1",
"input": {
"type": "selected",
"name": "selected",
"label": "drop-down box",
"description": "description",
"default": 100,
"settings": {
"multiple": true,
"customizable": true,
"options":[{"name": "A", "value": 100}, {"name": "B", "value": 200}]
}
},
}
Contrôle par bouton avec un ensemble de données d'entrée
Utilisez legroup
propriété permettant de définir les options pour un groupe de commandes d'entrée, avec une structure de données par exemple:
{
"type": "button",
"cmd": "open",
"name": "open positions",
"group": [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": True}
]
}
{
"type": "button",
"cmd": "test2",
"name": "test2",
"group": [{
"type": "selected",
"name": "selected",
"label": "drop-down box",
"description": "description",
"default": 200,
"group": "group1",
"settings": {
"multiple": true,
"options":[{"name": "A", "value": 100}, {"name": "B", "value": 200}]
}
}, {
"type": "string",
"name": "string",
"label": "input box",
"description": "description",
"default": "ABC",
"group": "group1"
}],
}
Codifier ces données JSON de contrôle de bouton dans une chaîne JSON, puis l'envelopper avec`
Prenons le langage JavaScript comme exemple:
function main() {
var btn = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
LogStatus("`" + JSON.stringify(btn) + "`")
}
Ces commandes de bouton peuvent également être écrites sur les formulaires de barre d'état, veuillez vous référer àGuide de syntaxepour des exemples détaillés.
La structure de lainput
Le champ est cohérent avec la structure d'un seul contrôle dans legroup
Voici une description détaillée:
{
"type": "selected", // Control type (required field), supports the following settings: number, string, selected, boolean
"name": "test", // Name (required when used in group)
"label": "topic", // Title (required field)
"description": "desc", // Component tips
"default": 1, // Default value; if the settings field is not set in the current JSON structure, defValue is compatible and can be used instead of default
"filter": "a>1", // Selector. If this field is not set, no filtering (controls are displayed). If this field is set, no filtering (controls are displayed) occurs when the expression is true. Filtering occurs when the expression is false (controls are not displayed)
// For the selector, take the expression a>1 in the current example as an example, a refers to the value of the control with name a under the group field in the structure of type=button. This value is used to determine whether to filter.
"group": "group1", // Grouping
"settings": { ... }, // Component configuration
}
Configuration des composantssettings
chaque champ est décrit en détail:
settings.required
: Si cette option est requise.settings.disabled
Si vous devez désactiver.settings.min
: Valide lorsquetype=number
, indiquant la valeur minimale ou la longueur minimale de chaîne.settings.max
: Valide lorsquetype=number
, indiquant la valeur maximale ou la longueur maximale de chaîne.settings.step
: type=number
, valable lorsquerender=slider
, indique la longueur de la marche.settings.multiple
: type=selected
est valide, ce qui indique que des sélections multiples sont prises en charge.settings.customizable
: type=selected
est valide, 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.settings.options
: Valide lorsquetype=selected
, indiquant le format de données de l'option sélecteur:["option 1", "option 2"]
, [{'name':'xxx','value':0}, {'name':'xxx','value':1}]
.settings.render
: Type de composant de rendu.
Quand?type=number
, settings.render
n'est pas réglé (boîte de saisie de numéro par défaut), facultatif:slider
(barre coulissante),date
(le sélecteur d'heure renvoie l'horodatage).
Quand?type=string
, settings.render
n'est pas réglé (boîte de saisie par défaut d'une ligne).textarea
(entrée à plusieurs lignes),date
(le sélecteur d'heure renvoie yyyy-MM-dd hh:mm:ss),color
(le sélecteur de couleur renvoie #FF00FF).
Quand?type=selected
, settings.render
n'est pas réglé (boîte déroulante par défaut), facultatif:segment
(sélecteur de segment).type=boolean
présente actuellement une case à cocher par défaut.Prend en charge les paramètres bilingues, par exemple:'选项 | options'
La mise en place d'un système de contrôle unique dans le domaine de l'apprentissage des langues sera adaptée à l'environnement linguistique actuel.group
champ comme exemple, l'exemple complet est:
{
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}]
}
}
Paramètres de stratégie
Options de négociation