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

Autres Structure

Options de requête Http

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.

HttpQuery-retour

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 leoptionsLe 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.

Tableau LogStatus

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.tableJe 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.

Les données de l'enquête

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 parinputougroup.

Pour les commandes de boutons, le réglage fixe est le suivant:buttonJe 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 lainputchamp:

{
    "name": "Number of opening positions", 
    "type": "number", 
    "defValue": 1,
    "description": "test",                  
}

Description de chaque champ dans la structure JSON ci-dessus:

  • Nom Le titre du contrôle dans la boîte pop-up qui apparaît après le bouton de la barre d'état déclenche une opération de clic.
  • Définition Description du contrôle dans la fenêtre contextuelle qui s'affiche après que le bouton de la barre d'état a déclenché une opération de clic.
  • type Le type de contrôle dans la boîte pop-up qui apparaît après le bouton de la barre d'état déclenche une opération de clic. Les valeurs possibles du champ de type sont les suivantes:
    1. "number": commande numérique d'entrée.
    2. "string": commande d'entrée de chaîne.
    3. "selected"Le contrôle de la boîte déroulante.
    4. "boolean"Commutateur de commande.
  • défiValue La valeur par défaut du contrôle dans la fenêtre contextuelle qui apparaît après le bouton de la barre d'état déclenche une opération de clic. S'il s'agit d'un contrôle de type boîte déroulante (sélectionné), le champ defValue est utilisé pour définir les options de boîte déroulante."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:

  • les options Le contrôle de la boîte déroulante dans la page déclenchée par le bouton de contrôle de la barre d'état peut utiliser le champ d'options pour définir des options.{text: "description", value: "value"}Utilisez le champ defValue pour définir l'option par défaut, qui peut être une sélection multiple.
  • multiples Lorsque ce champ est réglé sur true, plusieurs sélections dans la fenêtre déroulante sont prises en charge.

l'entrée JSON Leinputle 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.groupetinputLes éléments de la fonction de commande sont les suivants:groupont la même structure de données que leinputVeuillez vous référer à la description pertinente du champinput field.

groupe séquence

Un exemple declassvaleur 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 dugroupchamp avec leinputchamp:

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.

LogStatus-btnTypeTwo est le numéro de connexion

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 parinputougroup.

Pour les commandes de boutons, le réglage fixe est le suivant:buttonJe 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: [option 1, option 2], [{name:xxx,value:0}, {name:xxx,value:1}]. paramètres.render: type de composant de rendu. Lorsque type=numéro, settings.render n'est pas défini (boîte de saisie de numéro par défaut), optionnel: curseur (barre de curseur), date (le sélecteur d'heure renvoie l'horodatage). Lorsque type=string, settings.render n'est pas défini (boîte d'entrée par défaut à une ligne), optionnel: textarea (entrée à plusieurs lignes), date (le sélecteur d'heure renvoie yyyy-MM-dd hh:mm:ss), couleur (le sélecteur de couleur renvoie #FF00FF). Lorsque type= est sélectionné, les paramètres.render ne sont pas définis (boîte déroulante par défaut), optionnel: segment (sélecteur de segment). Lorsque type=boolean, il n'y a actuellement qu'une case à cocher par défaut.

l'entrée JSON Leinputle 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.groupetinputLes éléments de la fonction de commande sont les suivants:groupont la même structure de données que leinputVeuillez 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.

Options de graphique

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}

Options de la carte KLine

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.

Résultats de l'analyse

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.

Retour de la boucle d'événement

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.

Retour DBExec

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.

Thread.join-return

Cette JSON est la structure de données renvoyée par la fonction membrejoin()de l'annéeThreadobjet, qui enregistre certaines informations sur les threads concurrents dans leJavaScriptLa stratégie linguistiqueThreadobjet 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 laThreadobjet 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}
Financement Variables intégrées