En la carga de los recursos... Cargando...

Control interactivo

JavaScript, Python, C++, y las estrategias de MyLanguage se pueden diseñar con controles de interacción. Los controles de interacción de una estrategia se utilizan para enviar comandos interactivos al programa de estrategia en ejecución cuando la estrategia se está ejecutando en el comercio en vivo. ParaJavaScript, Python, yC++En la actualidad, la mayoría de losGetCommand()Función en el código de estrategia para obtener el mensaje generado por el control de interacción.

Interactive Control

Con el código diseñado en la estrategia para manejar mensajes de los controles interactivos, el uso de controles interactivos durante el comercio en vivo puede habilitar (sin limitarse a) funciones, tales como:

  • Cierra la posición estratégica manualmente.
  • Modificar dinámicamente los parámetros de la estrategia para evitar reiniciar la estrategia en vivo.
  • Cambiar la lógica de la estrategia.
  • Activar la impresión de cierta información de depuración, datos, y se utiliza para probar ciertas funciones.

Tipos de controles de interacción

Variable (ejemplo de nombre) Descripción Tipo de producto Valor predeterminado (descripción) Configuración del componente (descripción) Las observaciones
CmdNum Descripción del mando interactivo cmdNum Número El valor predeterminado es opcional y puede dejarse en blanco Se utiliza para establecer los controles de interfaz vinculados al elemento interactivo actual: tipo de componente, valor mínimo, valor máximo, agrupación, etc. Observaciones sobre el control interactivo cmdNum
¿ Qué está pasando? Descripción del mando interactivo cmdBool Boolean (verdadero/falso) Valor predeterminado requerido, encendido o apagado Lo mismo que arriba. Observaciones sobre el control interactivo cmdBool
El sistema de control de velocidad Descripción del mando interactivo cmdStr la cuerda El valor predeterminado es opcional y puede dejarse en blanco Lo mismo que arriba. Observaciones sobre el control interactivo cmdStr
En el caso de los equipos de control, Descripción del mando interactivo cmdCombox seleccionado El valor predeterminado es opcional y puede dejarse en blanco Lo mismo que arriba. Observaciones sobre el control interactivo cmdCombox
En el caso de las Descripción del mando interactivo cmdBtn el botón El control del botón no está ligado al elemento de entrada Lo mismo que arriba. Observaciones sobre el control interactivo cmdBtn

El mensaje enviado a la estrategia después de que se activa el control interactivo (cuadro de comandos): Después de introducir los datos interactivos 123 en el cuadro de entrada de control interactivo cmdNum, haga clic en el botón de control interactivo cmdNum. La función GetCommand() en el programa de estrategia recibirá el mensaje cmdNum:123. Establezca el control del interruptor del control interactivo cmdBool en encendido, y haga clic en el botón del control interactivo cmdBool.GetCommand()La función en el programa de estrategia recibirá el mensaje:cmdBool:true- ¿ Por qué? Después de introducir los datos interactivos:abcEn el cuadro de entrada cmdStr de control interactivo, haga clic en el botón cmdStr de control interactivoGetCommand()La función en el programa de estrategia recibirá el mensaje:cmdStr:abc¿ Qué pasa? Después de seleccionar la segunda opción en el cuadro desplegable del control interactivo cmdCombox, haga clic en el botón del control interactivo cmdCombox.GetCommand()La función en el programa de estrategia recibirá el mensaje:cmdCombox:1, donde 1 representa el índice de la opción seleccionada, la primera opción tiene un índice de 0 y la segunda opción tiene un índice de 1. Haga clic en el botón del control interactivo cmdBtn.GetCommand()La función en el programa de estrategia recibirá el mensaje:cmdBtn.

Configuración de los componentes

La opción Configuración de componentes del control interactivo de la estrategia se utiliza para establecer los controles correspondientes a los 5 tipos de controles interactivos en la plataforma, mejorando la funcionalidad y simplificando el diseño.

5 tipos de componentes soportados por controles interactivos:

  • Control interactivo numérico Tipos de componentes compatibles: control de caja de entrada (por defecto), control del selector de tiempo y control de barra de entrada deslizante.
  • Controls interactivos booleanos (verdadero/falso) Solo se admiten controles de interruptor (por defecto).
  • Control interactivo de cadena Tipos de componentes compatibles: control de caja de entrada (por defecto), control de caja de texto, control de selector de tiempo, control de selector de color, moneda y código de negociación.
  • Control interactivo seleccionado Tipos de componentes compatibles: control de cajas desplegables (por defecto), control de controladores de segmentos, moneda y código de negociación.
  • Control interactivo con botón Solo hay un control de botón (default) y no hay control de entrada.

Los controles interactivos también se pueden agrupar, al igual que la configuración de parámetros de la interfaz.

  • El grupo En el cuadro de entrada Grupo de la configuración del componente, puede ingresar un nombre para una etiqueta para agrupar varios controles de interacción de estrategia en una etiqueta de grupo (reemplazando la antigua función Grupo de control de interacción de la plataforma).

Controles interactivos en la barra de estado

Además de diseñar controles interactivos en la columna Interacción de la estrategia, también es posible diseñar controles interactivos en la columna Estado de la estrategia.LogStatussección de funciones de la Guía de sintaxis- ¿ Por qué? Los controles de botón en la barra de estado se pueden clasificar como:

  • Control de botón común Un ejemplo de una estructura de datos es:

    {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
    
  • Control de botón con entrada de datos Utilice elinputpropiedad para establecer las opciones de control de entrada, con un ejemplo de estructura de datos:

    {"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}]
            }
        },
    }
    
  • Control de botón con un conjunto de datos de entrada Utilice elgrouppropiedad para establecer las opciones de un grupo de controles de entrada, con un ejemplo de estructura de datos:

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

Codificar estos botones de control de datos JSON en una cadena JSON, a continuación, envolverlo con`Tomemos el lenguaje JavaScript como ejemplo:

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

Estos controles de botón también se pueden escribir en los formularios de la barra de estado, por favor consulteGuía de sintaxispara ejemplos detallados.

La estructura de lainputEn el caso de las pruebas de detección, el campo de ensayo es consistente con la estructura de un solo control en elgroupLa siguiente es una descripción detallada:

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

Configuración del componentesettingscada campo se describe con detalle:

  • settings.required: Si esta opción es necesaria.
  • settings.disabledSi desactivar.
  • settings.min: válido cuando:type=number, indicando el valor mínimo o la longitud mínima de la cuerda.
  • settings.max: válido cuando:type=number, indicando el valor máximo o la longitud máxima de la cuerda.
  • settings.step: type=number, válido cuandorender=slider, indica la longitud del paso.
  • settings.multiple: type=selectedes válido, lo que indica que se admiten múltiples selecciones.
  • settings.customizable: type=selectedSi se selecciona la opción recién editada, se utiliza el nombre de la opción en lugar del valor representado por la opción cuando se activa la interacción.
  • settings.options: válido cuando:type=selected, indicando el formato de los datos de la opción del selector:["option 1", "option 2"], [{'name':'xxx','value':0}, {'name':'xxx','value':1}].
  • settings.render: Tipo de componente de renderizado. ¿Cuándo?type=number, settings.renderno está fijado (cuadro de entrada de número predeterminado), opcional:slider(línea de deslizamiento),date(el selector de tiempo devuelve la marca de tiempo). ¿Cuándo?type=string, settings.renderno está configurado (cuadro de entrada de una sola línea predeterminado).textarea(entrada de varias líneas),date(el selector de tiempo devuelve yyyy-MM-dd hh:mm:ss),color(El selector de colores devuelve #FF00FF). ¿Cuándo?type=selected, settings.renderno está configurado (cuadro desplegable predeterminado), opcional:segment(selector de segmentos).type=booleanActualmente sólo tiene una casilla de verificación predeterminada.

Apoya la configuración bilingüe, por ejemplo:'选项 | options'El sistema de control único en el ámbito lingüístico se adaptará al entorno lingüístico actual.groupcampo como ejemplo, el ejemplo completo es:

{
    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}]
    }
}
Parámetros de la estrategia Negociación de opciones