Les ressources ont été chargées... Je charge...

Contrôle interactif

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.

Interactive Control

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:

  • Fermez manuellement la position stratégique.
  • Modifier dynamiquement les paramètres de la stratégie pour éviter de redémarrer la stratégie en direct.
  • Changez la logique stratégique.
  • Déclenche l'impression de certaines informations de débogage, données, et est utilisé pour tester certaines fonctions.

Types de contrôles d'interaction

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 123 dans la zone d'entrée de commande interactive cmdNum, cliquez sur le bouton de commande interactive cmdNum. La fonction GetCommand() dans le programme de stratégie recevra le message cmdNum:123. Réglez la commande de commutateur de la commande interactive cmdBool sur activé, et cliquez sur le bouton de la commande interactive cmdBool.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:abcDans 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:abcJe 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.

Configuration des composants

L'option Configuration des composants de la commande interactive de la stratégie est utilisée pour définir les commandes correspondant aux 5 types de commandes interactives sur la plateforme, améliorant ainsi la fonctionnalité et simplifiant la conception.

5 types de composants supportés par des commandes interactives:

  • Contrôle numérique interactif Types de composants pris en charge: commande de la boîte de saisie (par défaut), commande du sélecteur de temps et commande de la barre d'entrée coulissante.
  • Contrôles interactifs booléens (vrai/faux) Seules les commandes de commutateur sont prises en charge (par défaut).
  • Contrôle interactif par chaîne Types de composants pris en charge: contrôle de la boîte d'entrée (par défaut), contrôle de la boîte de texte, contrôle du sélecteur d'heure, contrôle du sélecteur de couleur, monnaie et code de trading.
  • Contrôle interactif sélectionné Types de composants pris en charge: contrôle de la boîte déroulante (par défaut), contrôle du contrôleur de segment, devise et code de négociation.
  • Contrôle interactif par bouton Il n'y a qu'un bouton de commande (par défaut) et aucun contrôle d'entrée.

Les commandes interactives peuvent également être regroupées, tout comme les paramètres d'interface.

  • Groupement Dans la zone d'entrée Group de la configuration du composant, vous pouvez entrer un nom pour une étiquette pour regrouper plusieurs contrôles d'interaction de stratégie dans une étiquette de groupe (remplaçant l'ancienne fonction Interaction Control Grouping de la plateforme).

Contrôles interactifs dans la barre d'état

En plus de concevoir des commandes interactives dans la colonne Strategy Interaction, il est également possible de concevoir des commandes interactives dans la colonne Strategy Status.LogStatussection fonction du Guide de syntaxe- Je ne sais pas. Les commandes de bouton dans la barre d'état peuvent être classées comme suit:

  • 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 leinputattribut permettant de définir les options de commande des entrées, 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 legroupattribut 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 lainputLe champ est cohérent avec la structure d'un seul contrôle dans legroupVoici 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 composantssettingschaque champ est décrit en détail:

  • settings.required: Si cette option est requise.
  • settings.disabledSi 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=selectedest valide, ce qui indique que des sélections multiples sont prises en charge.
  • settings.customizable: type=selectedest 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.rendern'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.rendern'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.rendern'est pas réglé (boîte déroulante par défaut), facultatif:segment(sélecteur de segment).type=booleanpré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.groupchamp 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