Die Ressourcen sind geladen. Beförderung...

Sonstige Struktur

HttpQuery-Optionen

Diese JSON-Struktur wird verwendet, um die Parameter der HttpQuery-Funktion und der HttpQuery_Go-Funktion zum Senden der Http-Anfrage zu konfigurieren.

Anforderungsmethode, z. B.:GET, POST, usw. Methode String Anforderungs-Body. Zum Beispiel kann in einer POST-Anfrage der Körper Formulardaten, JSON, Text usw. enthalten. Körper String Kennzeichnung der Zeichenmengen. Zum Beispiel ist die Kennzeichnung von Textdaten im Textkörper wie folgt anzugeben:"UTF-8"- Ich weiß. Charset String Ein Cookie ist ein kleines Stück Daten, das zur Speicherung und zum Austausch von Zustandsinformationen zwischen einem Client (in der Regel einem Browser) und einem Server verwendet wird. Keks String Verwendet zur Simulation des Browserabdrucks. Profil String Wenn auf true gesetzt, gibt der HttpQuery-Funktionsaufruf die komplette Antwortnachricht zurück. Debug Boole Die Anforderungshäupterinformationen bestehen in Form von Schlüssel-Wert-Paaren (JSON-Struktur) und werden zur Übertragung verschiedener Informationen wie Inhaltstyp, Authentifizierungsinformationen, Cache-Kontrolle usw. verwendet. Überschriften JSON-Daten Einstellung von 1000 bedeutet eine Auszeit von 1 Sekunde. Zeitverzögerung Zahl

Beispiel für die Verwendung:

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)
}

Die HTTP-Nachricht, die gesendet wird, wenn der obige Code ausgeführt wird:

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

Das ist eine sehr schwierige Aufgabe.

HttpQuery-Return

Diese JSON-Struktur ist die Datenstruktur, die von der HttpQuery-Funktion im Debug-Modus zurückgegeben wird, wenn das Debug-Feld in deroptionsStrukturparameter stimmt.

HTTP-Statuscode Statuscode Zahl Anfordern Sie Headerinformationen. Überschrift JSON-Daten Informationen über Cookies. Cookies Reihenfolge Die vollständigen Pfadinformationen des Antrags. Spuren JSON-Daten Nachrichtenlänge Längen Zahl Inhalt der Nachricht. Körper String

Ein Beispiel für die zurückgegebene JSON-Datenstruktur ist:

{
    "StatusCode": 302,
    "Header": {
        "Content-Type": ["text/html"],
        // ...
    },
    "Cookies": [{
        // ...
    }],
    "Trace": {},
    "Length": 154,
    "Body": "..."
}

Das ist eine sehr schwierige Aufgabe.

LogStatus-Tabelle

Diese JSON-Struktur wird zur Konfiguration des in der Strategie-Statusleiste angezeigten Tabelleninhalts verwendet.

Wird verwendet, um den Typ der Benutzeroberfläche und der zu analysierenden und anzuzeigenden Steuerelemente festzulegen.table- Ich weiß. Typ String Verwendet, um den Titel der Statusleiste zu setzen. Titel String Verwendet, um die Spaltenbezeichnungen der Statusleiste zu setzen. Das erste Element des Arrays ist der Titel der ersten Spalte und so weiter. Kälber Reihenfolge Das erste Element des Reihenarrays (zweidimensionales Array) ist ebenfalls eine Arraystruktur. Die Länge dieser Arraystruktur sollte mit der Anzahl der Tabellenspalten (die Elemente in der Arraystruktur entsprechen den Tabellenspaltennamen einzeln) übereinstimmen, d. h. die erste Datenzeile in der Tabelle. Zeilen Reihenfolge

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) + "`")
}

Ich bin nicht derjenige, der dich anspricht.

LogStatus-btnTypeOne

Diese JSON-Struktur wird zur Konfiguration der Tastenkontrolle in der Statusleiste verwendet. Die Tastenkontrolle JSON-Struktur kann in die Statusleiste JSON-Struktur eingebettet werden. Diese Struktur ist eine alte Version-Struktur, und die Plattform ist immer noch kompatibel. Es wird empfohlen, die neueste Version der Tasten-JSON-Struktur zu verwenden. Beispiel für die Konstruktion eines Statusleiste-Buttons (nach Auslösung und Klicken des Buttons enthält das Pop-up-Boxen eine einzige Eingabe-Steuerung, die über das Eingabefeld konstruiert wird):

{
    "type": "button", 
    "cmd": "open", 
    "name": "opening a position", 
    "input": {
        "name": "number of opening positions", 
        "type": "number", 
        "defValue": 1
    }
}

Die Steuerelemente im Pop-up-Feld, die durch Klicken auf die Statusleiste ausgelöst werden, werden durchinputodergroup.

Bei Tastensteuerungen ist die feste Einstellung:button- Ich weiß. Typ String Einstellungen des Tastentyps Klasse String Der Text auf der Tastensteuerung, das heißt der Tastenname. Name String Der interaktive Befehlsinhalt, der an die Strategie gesendet wird, wenn die Tastensteuerung einen Klick auslöst. cmd String Beschreibung der Tastensteuerung. Die Beschreibung wird angezeigt, wenn die Maus auf die Taste in der Statusleiste gesetzt wird. Beschreibung String Setzt die Taste auf deaktiviert (true) / aktiviert (false). Behindert Boole Bei der Konstruktion einer Statusleiste-Taste für die Interaktion wird auch die Dateneingabe unterstützt.GetCommand()Funktion.inputElement in die JSON-Datenstruktur des Buttons im Statusleiste, um das Eingabeauftrag in dem Popup-Boxen zu konfigurieren, das bei Auslösung des Buttons angezeigt wird. Zum Beispiel, um den Wert derinputFeld:

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

Beschreibung jedes Felds in der obigen JSON-Struktur:

  • Name Der Titel des Steuerelements im Pop-up-Fenster, der nach dem Statusleiste-Button erscheint, löst einen Klick aus.
  • Beschreibung Beschreibung des Steuerelements im Pop-up-Fenster, das nach Auslösung eines Klicks durch die Statusleiste angezeigt wird.
  • Typ Der Typ des Steuerelements im Pop-up-Feld, das nach dem Statusleiste-Button angezeigt wird, löst einen Klick aus. Die möglichen Werte des Typfeldes sind wie folgt:
    1. "number": numerische Eingabe.
    2. "string": Steuerelemente für die String-Eingabe.
    3. "selected"- Ein Drop-Down-Controller.
    4. "boolean"Schalten Sie die Steuerung ein.
  • defWert Der Standardwert des Steuerelements im Pop-up-Fenster, der nach dem Statusleiste-Button angezeigt wird, löst eine Klickoperation aus. Wenn es sich um ein Dropdown-Box-Kontrolltyp handelt (gewählt), wird das Feld defValue verwendet, um die Dropdown-Box-Optionen festzulegen."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}, wird die Textbeschreibung der Dropdown-Fensteroptionen auf A, B, C gesetzt.

Für die Felder, die durch die Dropdown-Box-Typsteuerung erweitert werden:

  • Optionen Die Dropdown-Box-Steuerung in der Seite, die durch die Statusleiste-Buttonsteuerung ausgelöst wird, kann das Optionsfeld verwenden, um Optionen festzulegen.{text: "description", value: "value"}Verwenden Sie das Feld defValue, um die Standardoption festzulegen, die mehrere Auswahlen sein kann.
  • Mehrfach Wenn dieses Feld auf true gesetzt ist, werden mehrere Auswahlmöglichkeiten im Dropdown-Feld unterstützt.

Eingabe JSON-Daten DieinputFeld konfiguriert ein Steuerelement im Pop-up-Box, die nach dem Klick auf die Statusleiste-Taste ausgelöst wird, erscheint.groupundinputDie Elemente ingroupdie gleiche Datenstruktur haben wie dieinputSiehe die entsprechende Beschreibung desinput field.

Gruppe Reihenfolge

Ein Beispiel fürclassWert der JSON-Struktur einer Taste in der Statusleiste:

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) + "`")
}

Beispiel für die Verwendung dergroupFeld mit derinputFeld:

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)
    }
}

Ich bin nicht derjenige, der dich anspricht.

LogStatus-btnTypeTwo

Diese JSON-Struktur wird zur Konfiguration der Tastensteuerung in der Statusleiste verwendet. Beispiel für die Konstruktion eines Statusleiste-Buttons (nach Auslösung und Anklicken des Buttons enthält das Popup-Box mehrere Eingabe-Steuerelemente, die über das Gruppenfeld konstruiert werden):

{
    "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,
        }
    }],
}

Die Steuerelemente im Pop-up-Feld, die durch Klicken auf die Statusleiste ausgelöst werden, werden durchinputodergroup.

Bei Tastensteuerungen ist die feste Einstellung:button- Ich weiß. Typ String Der Text auf der Tastensteuerung, das heißt der Tastenname. Name String Der interaktive Befehlsinhalt, der an die Strategie gesendet wird, wenn die Tastensteuerung einen Klick auslöst. cmd String Bei der Konstruktion einer Statusleiste-Taste für die Interaktion wird auch die Dateneingabe unterstützt.GetCommand()Funktion.inputElement in die JSON-Datenstruktur des Buttons im Statusleiste, um das Eingabeauftrag in dem Popup-Boxen zu konfigurieren, das bei Auslösung des Buttons angezeigt wird. Im Vergleich zur alten Version der Eingabestruktur hat die neue Version einige neue Felder und Änderungen:

{
    "type": "selected",
    "name": "test",         
    "label": "topic",       
    "description": "desc",  
    "default": 1,
    "filter": "a>1",
    "group": "group1",
    "settings": { ... },    // Component configuration
}

Beschreibung und Erläuterung jedes Felds in der obigen JSON-Struktur:

  • Typ Steuerungstyp (Pflichtfeld) unterstützt folgende Einstellungen:"number"numerische Eingabebox,"string"String-Eingabebox,"selected"eine Drop-down-Box,"boolean"Schalten Sie die Steuerung um.

  • Name Wenn die aktuelle JSON-Struktur der Feldwert des Eingabefeldes ist, ist Name, wenn das Etikettfeld nicht eingestellt ist, der Steuertitel im Popup-Feld, das nach dem Klicken auf die Statusleiste angezeigt wird. Wenn die aktuelle JSON-Struktur ein Element im Feldwert (Array-Struktur) des Gruppenfeldes ist, wird Name nicht als Steuerungsbezeichnung verwendet. Das Name-Feld wird verwendet, um den Feldnamen des Steuereingabeinhalts anzugeben. Zum Beispiel wird ein Auszug aus dem Gruppenfeld als Illustration verwendet:

    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"}]
            }
        ]
    }
    

    Wenn die Statusleiste eine Interaktion auslöst, erscheint ein Pop-up-Box mit 4 Steuerelementen, die alle Dropdown-Box-Steuerelementen sind.cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}- Ich weiß. Der Name-Wert in der JSON-Struktur wird als Feldname der zurückgegebenen interaktiven Informationen verwendet, z. B.: comboBox1, comboBox2 usw.

  • Etikett Wird verwendet, um den Titel der Steuerung festzulegen.

  • Beschreibung Beschreibung des Steuerelements: Wenn die aktuelle JSON-Struktur ein Element im Feldwert (Array-Struktur) des Gruppenfeldes ist und das Etikettfeld nicht eingestellt ist, ist die Beschreibung der Steuertitel im Pop-up-Feld, der nach dem Klicken auf die Statusleiste angezeigt wird.

  • Standard Der Standardwert der Steuerung.

  • Filter Auswählvorrichtung, verwendet zum Verbergen von Steuerelementen. Wenn dieses Feld nicht eingestellt wird, wird kein Filtern (Anzeigen von Steuerelementen) durchgeführt; wenn dieses Feld eingestellt ist, erfolgt kein Filtern (Anzeigen von Steuerelementen), wenn der Ausdruck wahr ist. Wenn der Ausdruck falsch ist, erfolgt ein Filtern (kein Anzeigen von Steuerelementen)

  • Gruppe Verwendet zur Steuerung der Gruppierung von Kontrollen, die gefaltet werden können.

  • Einstellungen Komponentenkonfiguration, die Steuerung verfügt über eine Vielzahl von Benutzeroberflächenoptionen, verwenden Sie diese Option, um bestimmte Einstellungen vorzunehmen.

    settings:{
        multiple:true,
        customizable:true,
        options:[{name:'xxx|yyy',value:0}]
    }
    

    Einstellungen: Einstellungen erforderlich: Ob erforderlich. Einstellungen.deaktiviert: Deaktivieren. settings.min: Gültig, wenn type=number, der Mindestwert oder die Mindestlänge einer Zeichenfolge angibt. settings.max: Gültig, wenn type=number, wobei der maximale Wert oder die maximale Länge einer Zeichenfolge angegeben wird. Einstellungen.Schritt: Gültig bei type=number und render=slider, wobei die Schrittlänge angegeben wird. settings.multiple: Gültig, wenn type= ausgewählt ist, was anzeigt, dass mehrere Auswahlmöglichkeiten unterstützt werden. settings.customizable: Es ist gültig, wenn type= ausgewählt ist, was anzeigt, dass die Anpassung unterstützt wird; Benutzer können direkt neue Optionen in der Dropdown-Fenstersteuerung bearbeiten und hinzufügen. Wenn die neu bearbeitete Option ausgewählt ist, wird der Name der Option anstelle des Wertes verwendet, der durch die Option dargestellt wird, wenn die Interaktion ausgelöst wird. Einstellungen.Optionen: Gültig, wenn type= ausgewählt ist, wobei das Datenformat der Auswahloption angegeben wird: [option 1, option 2], [{name:xxx,value:0}, {name:xxx,value:1}]. Einstellungen.Render: Typ der Renderkomponente. Wenn type=number, settings.render nicht eingestellt ist (Standardnummer-Eingabefeld), optional: Schieberegler (Schieberegler), Datum (Zeitauswahlgerät gibt den Zeitstempel zurück). Wenn type=string, settings.render nicht eingestellt ist (Standard-Einzelzeilen-Eingabefeld), optional: Textbereich (Mehrzeilen-Eingabe), Datum (Zeit-Selektor gibt yyyy-MM-dd hh:mm:ss zurück), Farbe (Farb-Selektor gibt #FF00FF zurück). Wenn type= ausgewählt ist, ist settings.render nicht eingestellt (Standard-Rolldown-Feld), optional: segment (Segment-Selektor). Wenn type=boolean, gibt es derzeit nur ein Standard-Checkfeld.

Eingabe JSON-Daten DieinputFeld konfiguriert ein Steuerelement im Pop-up-Box, die nach dem Klick auf die Statusleiste-Taste ausgelöst wird, erscheint.groupundinputDie Elemente ingroupdie gleiche Datenstruktur haben wie dieinputFeldwert. Bitte beachten Sie die obige Beschreibung desinput field.

Gruppe Reihenfolge

Unterstützung von zweisprachigen Einstellungen:

{
    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}]
    }
}

Ich bin nicht derjenige, der dich anspricht.

Chart-Optionen

Diese JSON wird verwendet, um die Chartkonfigurationsinformationen der benutzerdefinierten Zeichnungsfunktion festzulegenChart(). Die verwendete Diagrammbibliothek ist Highcharts. Hier sind nur wenige grundlegende Konfigurationsfelder aufgeführt.

Plattform-Erweiterungsfeld. Setzen Sie auf wahr, um Highstocks-Charts zu verwenden; Setzen Sie auf falsch, um Highcharts-Charts zu verwenden.

__isBestand String

{
    layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
    height: 300,      // Specify height
}

Verlängerung JSON-Daten Titel der Tabelle Titel String X-Achsenkonfiguration. xAchse JSON-Daten Y-Achsenkonfiguration. yAchse JSON-Daten Datenreihe für Diagramme. Reihe JSON-Daten

Ein einfaches Zeichnungsbeispiel:

// 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)
    }
}

Ich habe dich nicht gesehen.

KLineChart-Optionen

Diese JSON wird verwendet, um die Chartkonfigurationsinformationen der benutzerdefinierten Zeichnungsfunktion festzulegenKLineChartHier sind nur einige wenige grundlegende Konfigurationsfelder aufgeführt.

Ob auf der Hauptkarte zu zeichnen. Überlagerung Boole X-Achsenkonfiguration. xAchse JSON-Daten Y-Achsenkonfiguration. yAchse JSON-Daten Lustkartenkonfiguration. Kerze JSON-Daten

SieheSonderartikel über das Zeichnen von Diagrammen mit der KLineChart-Funktion.

Ich bin nicht derjenige, der das Problem hat.

SetData-Daten

JSON wird verwendet, um die von derexchange.SetData()Die JSON-Daten sind eine Arraystruktur, in der jedes Element auch ein Array ist, nämlich[time, data].

Der Zeitstempel der Daten, der den Zeitpunkt dieser Daten kennzeichnet. Zeit Zahl Daten ist ein Stück Daten, das einer bestimmten Zeit in den von derexchange.SetData()Die Strategie ist in der Lage, dieexchange.GetData()Funktion erhält die Daten mit dem entsprechenden Zeitstempel entsprechend der aktuellen Zeit.

Daten String, Zahl, bool, Objekt, Array usw.

Ein Beispiel für das Laden von Daten im Backtesting-System und das Abrufen von Daten, wenn der Strategie-Backtest ausgeführt wird:

/*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)
    }
}

Das ist nicht nur ein Spiel, sondern auch ein Spiel.

EventLoop-Rückgabe

Diese JSON ist die Datenstruktur, die von derEventLoop()DieEventLoop()Funktionsmonitore: 1. Jedes von WebSocket lesbare Datenereignis; 2. Aufgabenvollendungsereignisse gleichzeitig mit den Exchange.Go() und HttpQuery_Go() Funktionen; 3. Nachrichtenereignisse, die in Threads gesendet werden, die von derthreading.Thread()Funktion in der JavaScript-Sprachstrategie.

Ereignisfolgenummer. Nachfolgend Zahl Name der Veranstaltung. Ereignis String Ereignis-Thread-ID. Schnüren Zahl Ereignisindex. Index Zahl Nanozeitstempel. Nano Zahl

Verwendenexchange.Go()Funktion, um gleichzeitige Anfragen zu stellen und die Ereignisdatenstruktur, die von derEventLoop() function.

{
    "Seq":1,
    "Event":"Exchange_GetTrades",
    "ThreadId":0,
    "Index":3,
    "Nano":1682068771309583400
}

In dem gleichzeitig ausgeführten Thread der JavaScript-Sprachstrategie (erstellt von derthreading.Thread()Funktion), wenn diepostMessage()Funktion des Thread-Objekts verwendet wird, um eine Nachricht zu senden, dieEventLoop()Die Funktion im Thread, der die Nachricht empfängt, überwacht die folgende Ereignisdatenstruktur:

{
    "Seq":4,
    "Event":"thread",
    "ThreadId":1,
    "Index":0,
    "Nano":1727592066508674000
}

Ich bin nicht derjenige, der dich anspricht.

DBExec-Rückgabe

Diese JSON ist die Datenstruktur, die von derDBExec()Funktion; es wird auch zurückgegeben, wenn eine SQL-Anweisung mit derexec()Verfahren des durch dieDial() function.

Die Spaltennamen der zu abfragenden Daten, ein String-Array. Spalten Reihenfolge Die spezifischen zu abfragenden Daten, bei denen jedes Datenstück einem Spaltennamen entspricht. Der Wert des Wertefeldes ist ein zweidimensionaler Array, bei dem jedes Element ein Array und ein Dateneintrag ist. Werte Reihenfolge

Beispiel für Abfragen in der Datenbank:

{
    "columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
    "values":[
        [1518970320000,100,99.1,90,100,12345.6],
        [1518960320000,100,99.1,90,100,12345.6]
    ]
}

Ich bin nicht derjenige, der dich anspricht.

Thread.join-return

Diese JSON ist die Datenstruktur, die von der Mitgliederfunktion zurückgegeben wirdjoin()derThreadObjekt, das einige Informationen über gleichzeitige Threads in derJavaScriptDie SprachstrategieThreadObjekt bezieht sich auf das Thread-Objekt, das durchthreading.Thread().

- Das ist Thread-ID. Identifizierung Zahl Ob der Faden zum Ende gezwungen wird. beendet Boole Die Laufzeit des Faden in Nanosekunden. abgelaufen Zahl Der Rückgabewert der Threadfunktion. Verzögerung Zahl

Der folgende Code prüft den Timeout-Mechanismus derjoin()Funktion derThreadObjekt und druckt den Wert derjoin() 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}
Finanzierung Eingebettete Variablen