Die Ressourcen sind geladen. Beförderung...

Interaktive Steuerung

JavaScript, Python, C++Die Interaktionssteuerungen einer Strategie werden verwendet, um interaktive Befehle an das laufende Strategieprogramm zu senden, wenn die Strategie im Live-Handel ausgeführt wird. FürJavaScript, Python, undC++Sie können dieGetCommand()Funktion im Strategiecode, um die von der Interaktionssteuerung generierte Nachricht zu erhalten.

Interactive Control

Mit Code, der in der Strategie für den Umgang mit Nachrichten aus den interaktiven Bedienelementen entwickelt wurde, kann die Verwendung interaktiver Bedienelementen während des Live-Handels (nicht beschränkt auf) Funktionen ermöglichen, z. B.:

  • Schließen Sie manuell die Strategieposition.
  • Strategieparameter dynamisch ändern, um eine Wiederaufnahme des Live-Handels zu vermeiden.
  • Wechseln Sie die Strategie-Logik.
  • Auslöst den Druck bestimmter Debugging-Informationen, Daten und wird verwendet, um bestimmte Funktionen zu testen.

Arten von Interaktionskontrollen

Variable (Name Beispiel) Beschreibung Typ Standardwert (Beschreibung) Komponentenkonfiguration (Beschreibung) Anmerkungen
cmdNummer Beschreibung der interaktiven Steuerung cmdNum Zahl Standardwert ist optional und kann leer gelassen werden Wird verwendet, um die an das aktuelle interaktive Element gebundenen Schnittstellensteuerungen festzulegen: Komponententyp, Mindestwert, Höchstwert, Gruppierung usw. Anmerkungen zur interaktiven Steuerung cmdNum
cmdBool Beschreibung der interaktiven Steuerung cmdBool Boolean (wahr/falsch) Standardwert erforderlich, eingeschaltet oder ausgeschaltet Das gleiche wie oben Anmerkungen zur interaktiven Steuerung cmdBool
cmdStr Beschreibung der interaktiven Steuerung cmdStr String Standardwert ist optional und kann leer gelassen werden Das gleiche wie oben Anmerkungen zur interaktiven Steuerung cmdStr
cmdCombox Beschreibung der interaktiven Steuerung cmdCombox ausgewählt Standardwert ist optional und kann leer gelassen werden Das gleiche wie oben Anmerkungen zur interaktiven Steuerung cmdCombox
cmdBtn Beschreibung der interaktiven Steuerung cmdBtn Schaltfläche Die Tastensteuerung ist nicht an das Eingabeobjekt gebunden Das gleiche wie oben Anmerkungen zur interaktiven Steuerung cmdBtn

Nachricht an die Strategie nach Auslösung der interaktiven Steuerung (String): Nach Eingabe der interaktiven Daten 123 im Eingabefeld cmdNum klicken Sie auf die Schaltfläche cmdNum. Die Funktion GetCommand() im Strategieprogramm erhält die Meldung cmdNum:123. Setzen Sie den Schalter der interaktiven Steuerung cmdBool auf eingeschaltet und klicken Sie auf die Taste der interaktiven Steuerung cmdBool.GetCommand()Funktion im Strategieprogramm wird die Nachricht erhalten:cmdBool:true- Ich weiß. Nach Eingabe der interaktiven Daten:abcIn der Eingabebox cmdStr der interaktiven Steuerung klicken Sie auf die Schaltfläche cmdStr der interaktiven Steuerung.GetCommand()Funktion im Strategieprogramm wird die Nachricht erhalten:cmdStr:abc- Ich weiß. Nach Auswahl der zweiten Option im Dropdown-Fenster der interaktiven Steuerung cmdCombox klicken Sie auf die Taste der interaktiven Steuerung cmdCombox.GetCommand()Funktion im Strategieprogramm wird die Nachricht erhalten:cmdCombox:1, wobei 1 den Index der ausgewählten Option darstellt, hat die erste Option einen Index von 0 und die zweite Option einen Index von 1. Klicken Sie auf die Taste der interaktiven Steuerung cmdBtn.GetCommand()Funktion im Strategieprogramm wird die Nachricht erhalten:cmdBtn.

Komponentenkonfiguration

Die Option Component Configuration der strategischen interaktiven Steuerung wird verwendet, um die für die 5 Arten interaktiver Steuerungen auf der Plattform entsprechenden Steuerungen einzustellen, wodurch die Funktionalität verbessert und das Design vereinfacht wird.

5 Arten von Komponenten, die durch interaktive Bedienelemente unterstützt werden:

  • Interaktive Nummernsteuerung Unterstützte Komponentenarten: Eingabefachsteuerung (Standard), Zeitauswahlsteuerung und gleitende Eingabebalke.
  • Boolean (true/false) Interaktive Bedienelemente Nur Schaltersteuerungen werden unterstützt (Standard).
  • Interaktive Steuerelemente Unterstützte Komponentenarten: Eingabefeldsteuerung (Standard), Textfeldsteuerung, Zeitauswahlsteuerung, Farbauswahlsteuerung, Währung und Handelscode.
  • Ausgewählte interaktive Steuerung Unterstützte Komponentenarten: Dropdown-Box-Steuerung (Standard), Segmentcontroller-Steuerung, Währung und Handelscode.
  • Interaktive Buttonsteuerung Es gibt nur eine Tastensteuerung (Standard) und keine Eingabe.

Interaktive Steuerelemente können ebenfalls gruppiert werden, genau wie die Interface-Parameter-Einstellungen.

  • Gruppenbildung Im Eingabefeld Gruppe der Komponentenkonfiguration können Sie einen Namen für ein Label eingeben, um mehrere Strategie-Interaktionssteuerungen in ein Gruppenetikett zu gruppieren (um die alte Funktion Interaktionssteuerungsgruppierung der Plattform zu ersetzen).

Interaktive Bedienelemente in der Statusleiste

Zusätzlich zum Entwurf interaktiver Steuerelemente in der Spalte Strategie Interaktion ist es auch möglich, interaktiven Steuerelementen in der Spalte Strategie Status zu entwerfen.LogStatusFunktionsbereich der Syntax-Anleitung- Ich weiß. Die Buttons der Statusleiste können wie folgt kategorisiert werden:

  • Gemeinsame Tastensteuerungen Ein Beispiel für eine Datenstruktur ist:

    {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
    
  • Tastensteuerung mit Dateneingabe VerwendeninputAttribut zur Festlegung der Eingabe-Steuerungsoptionen mit Beispieldatenstruktur:

    {"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}]
            }
        },
    }
    
  • Tastensteuerung mit einem Satz Eingabedaten VerwendengroupAttribut zur Festlegung der Optionen für eine Gruppe von Eingabeaufgaben mit Beispieldatenstruktur:

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

Codieren Sie diese Knopfsteuerungs-JSON-Daten in eine JSON-String und wickeln Sie sie dann mit`Siehe hier, wie man das in der Statusleiste ausfügt.

function main() {
    var btn = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
    LogStatus("`" + JSON.stringify(btn) + "`")
}

Diese Tastensteuerungen können auch in Statusleiste-Formulare geschrieben werden, sieheSyntaxführerfür detaillierte Beispiele.

Die Struktur derinputDas Feld entspricht der Struktur einer einzigen Kontrolle in dergroupNachstehend eine ausführliche Beschreibung:

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

KomponentenkonfigurationsettingsJedes Feld ist detailliert beschrieben:

  • settings.required: Ob diese Option erforderlich ist.
  • settings.disabledOb sie deaktiviert werden soll.
  • settings.min: Gültig, wenntype=number, der den Mindestwert oder die Mindeststrängenlänge anzeigt.
  • settings.max: Gültig, wenntype=number, der den Höchstwert oder die Höchststrängenlänge anzeigt.
  • settings.step: type=number, gültig, wennrender=slider, zeigt die Stufenlänge an.
  • settings.multiple: type=selectedist gültig, was bedeutet, dass mehrere Auswahlmöglichkeiten unterstützt werden.
  • settings.customizable: type=selectedist gültig, 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.
  • settings.options: Gültig, wenntype=selected, mit Angabe des Datenformats für die Auswahloption:["option 1", "option 2"], [{'name':'xxx','value':0}, {'name':'xxx','value':1}].
  • settings.render: Typ der Rendering-Komponente. Wann?type=number, settings.rendernicht eingestellt ist (Standardnummer-Eingabefeld), optional:slider(Schieberaden)date(Zeitauswahlgerät gibt den Zeitstempel zurück). Wann?type=string, settings.rendernicht eingestellt ist (Standard-Einzeilen-Eingabefeld).textarea(Mehrzeilen-Eingabe)date(Zeitauswahlgerät gibt yyyy-MM-dd hh:mm:ss zurück),color(Kleinschalter gibt #FF00FF zurück). Wann?type=selected, settings.rendernicht eingestellt (Standard-Roll-Down-Box), optional:segment(Segmentwahl).type=booleanhat derzeit nur ein Standardcheckfeld.

Unterstützt zweisprachige Einstellungen, zum Beispiel:'选项 | options'Die Anpassung an das aktuelle Sprachumfeld erfolgt durch eine einheitliche Kontrolle in dergroupFeld als Beispiel, das vollständige Beispiel:

{
    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}]
    }
}
Strategieparameter Handel mit Optionen