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

Otros Estructura

Opciones de HttpQuery

Esta estructura JSON se utiliza para configurar los parámetros de la función HttpQuery y la función HttpQuery_Go para enviar la solicitud Http.

Método de solicitud, por ejemplo:GET, POST, etc. Método la cuerda Por ejemplo, en una solicitud POST, el cuerpo puede contener datos de formulario, JSON, texto, etc. cuerpo la cuerda Por ejemplo, especifique la codificación de los datos de texto en el cuerpo como:"UTF-8"¿ Qué pasa? el juego de caracteres la cuerda Una cookie es una pequeña pieza de datos utilizada para almacenar e intercambiar información de estado entre un cliente (generalmente un navegador) y un servidor. galletas la cuerda Se usa para simular las huellas digitales del navegador. el perfil la cuerda Cuando se establece en verdad, la llamada de la función HttpQuery devuelve el mensaje de respuesta completo. Descomposición Boole La información del encabezado de la solicitud existe en forma de pares clave-valor (estructura JSON) y se utiliza para transmitir información diversa, como tipo de contenido, información de autenticación, control de caché, etc. las cabeceras JSON Configuración de tiempo de espera. Configuración 1000 significa un tiempo de espera de 1 segundo. tiempo de espera Número

Ejemplo de uso:

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

El mensaje http enviado cuando se ejecuta el código anterior:

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

En el caso de las aplicaciones que se utilicen para la búsqueda de datos, el número de páginas que se utilicen para la búsqueda de datos es el número de páginas que se utilicen para la búsqueda de datos.

HttpQuery-returns (Regreso de la búsqueda)

Esta estructura JSON es la estructura de datos devuelta por la función HttpQuery en el modo de depuración cuando el campo de depuración en eloptionsEl parámetro de estructura es verdadero.

Código de estado http El código de estado Número Solicitar información de la cabecera. Encabezado JSON (en inglés) Información sobre las cookies. Las galletas el conjunto La información completa de la ruta de la solicitud. El rastro JSON (en inglés) Duración del mensaje Duración Número Contenido del mensaje. Cuerpo la cuerda

Un ejemplo de la estructura de datos JSON devuelta es:

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

En el caso de las aplicaciones que se utilicen para la búsqueda de datos, el número de páginas que se utilicen para la búsqueda de datos es el número de páginas que se utilicen para la búsqueda de datos.

Tabla de registro de estado

Esta estructura JSON se utiliza para configurar el contenido de la tabla que se muestra en la barra de estado de la estrategia.

Se utiliza para establecer el tipo de interfaz de usuario y los controles que se analizarán y mostrarán.table¿ Qué pasa? tipo la cuerda Se utiliza para establecer el título de la tabla de la barra de estado. Título la cuerda Se utiliza para establecer los títulos de las columnas de la tabla de la barra de estado. las colinas el conjunto Se utiliza para establecer los datos de fila de la tabla de la barra de estado. El primer elemento de la matriz de filas (matriz bidimensional) también es una estructura de matriz. La longitud de esta estructura de matriz debe ser consistente con el número de columnas de la tabla (los elementos de la estructura de matriz corresponden a los nombres de columnas de la tabla uno por uno), es decir, la primera fila de datos de la tabla. las filas el conjunto

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

¿Por qué no lo haces?

LogStatus-btnTypeOne (Registro del estado de trabajo)

Esta estructura JSON se utiliza para configurar el control de botón en la barra de estado. La estructura JSON de control de botón se puede incrustar en la estructura JSON de la tabla de barra de estado. Esta estructura es una estructura de versión antigua, y la plataforma sigue siendo compatible. Se recomienda usar la última versión de la estructura JSON del botón. Ejemplo de construcción de un control del botón de la barra de estado (después de que el botón se activa y se hace clic, el cuadro emergente contiene un solo control de entrada, que se construye a través del campo de entrada):

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

Los controles en el cuadro emergente activados al hacer clic en el botón de la barra de estado se establecen a través deinputo biengroup.

Para los controles de botón, la configuración fija es:button¿ Qué pasa? tipo la cuerda Configuración del tipo de botón clase la cuerda El texto en el control del botón, es decir, el nombre del botón. nombre la cuerda El contenido interactivo del comando enviado a la estrategia cuando el control del botón activa una operación de clic. el cmd la cuerda La descripción del botón de control. La descripción se muestra cuando el ratón se coloca sobre el botón en la barra de estado. Descripción la cuerda Establece el botón en deshabilitado (verdadero) / habilitado (falso). con discapacidad Boole Cuando se construye un botón de la barra de estado para la interacción, también se admite la entrada de datos.GetCommand()la función.inputelemento a la estructura de datos JSON del control del botón en la barra de estado para configurar el control de entrada en el cuadro emergente que se muestra cuando se activa el botón. Por ejemplo, para establecer el valor de lainputel campo:

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

Descripción de cada campo en la estructura JSON anterior:

  • nombre El título del control en el cuadro emergente que aparece después del botón de la barra de estado desencadena una operación de clic.
  • Descripción Descripción del control en el cuadro emergente que aparece después de que el botón de la barra de estado activa una operación de clic.
  • tipo El tipo de control en el cuadro emergente que aparece después del botón de la barra de estado desencadena una operación de clic. Los valores posibles del campo tipo son los siguientes:
    1. "number"Control de entrada numérico.
    2. "string"El control de entrada de la cadena.
    3. "selected"El control de la caja desplegable.
    4. "boolean"El control del interruptor.
  • DefValue (Valor de la respuesta) El valor predeterminado del control en el cuadro emergente que aparece después del botón de la barra de estado activa una operación de clic. Si se trata de un control de tipo de cuadro desplegable (seleccionado), el campo defValue se utiliza para establecer las opciones del cuadro desplegable. Por ejemplo:"input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}, la descripción de texto de las opciones del cuadro desplegable se establece en A, B, C.

Para los campos ampliados por el control de tipo de la casilla desplegable:

  • opciones El control de la caja desplegable en la página activado por el control del botón de la barra de estado puede usar el campo de opciones para establecer opciones.{text: "description", value: "value"}Utilice el campo defValue para establecer la opción predeterminada, que puede ser de múltiples selecciones.
  • múltiple Cuando este campo está establecido en verdad, se admite la selección múltiple en el cuadro desplegable.

entrada JSON (en inglés) Elinputcampo configura un control en el cuadro emergente que aparece después de que el botón de la barra de estado se activa haciendo clic.groupyinputLa función principal de este sistema es la configuración de un grupo de controles.grouptener la misma estructura de datos que elinputvalor del campo.input field.

grupo el conjunto

Un ejemplo declassvalor de la estructura JSON de un botón en la barra de estado:

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

Ejemplo de uso de lagroupcampo con elinputel campo:

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

¿Por qué no lo haces?

LogStatus-btnTipo Dos

Esta estructura JSON se utiliza para configurar el control de botón en la barra de estado. La estructura JSON de control de botón se puede incrustar en la estructura JSON de la tabla de barra de estado. Ejemplo de construcción de un control del botón de la barra de estado (después de que el botón se activa y se hace clic, el cuadro emergente contiene múltiples controles de entrada, que se construyen a través del campo de grupo):

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

Los controles en el cuadro emergente activados al hacer clic en el botón de la barra de estado se establecen a través deinputo biengroup.

Para los controles de botón, la configuración fija es:button¿ Qué pasa? tipo la cuerda El texto en el control del botón, es decir, el nombre del botón. nombre la cuerda El contenido interactivo del comando enviado a la estrategia cuando el control del botón activa una operación de clic. el cmd la cuerda Cuando se construye un botón de la barra de estado para la interacción, también se admite la entrada de datos.GetCommand()la función.inputelemento a la estructura de datos JSON del control del botón en la barra de estado para configurar el control de entrada en el cuadro emergente que se muestra cuando se activa el botón. En comparación con la versión anterior de la estructura de entrada, la nueva versión tiene algunos campos y cambios nuevos:

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

Descripción y explicación de cada campo en la estructura JSON anterior:

  • tipo Tipo de mando (campo obligatorio), admite los siguientes ajustes:"number"caja de entrada numérica,"string"caja de entrada de cadenas,"selected"caja desplegable,"boolean"Cambiar el control.

  • nombre Si la estructura JSON actual es el valor del campo del campo de entrada, cuando el campo de etiqueta no está establecido, el nombre es el título del control en el cuadro emergente que aparece después de hacer clic en el botón de la barra de estado. Si la estructura JSON actual es un elemento en el valor de campo (estructura de matriz) del campo de grupo, el nombre no se usa como el título del control. El campo de nombre se utiliza para indicar el nombre del campo del contenido de entrada del control. Por ejemplo, se utiliza un extracto del campo de grupo como ilustración:

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

    Según este fragmento, si el botón de la barra de estado activa una interacción, aparecerá un cuadro emergente con 4 controles, todos ellos controles de caja desplegable.cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}¿ Qué pasa? El valor de nombre en la estructura JSON se utiliza como el nombre del campo de la información interactiva devuelta, por ejemplo: comboBox1, comboBox2, etc.

  • etiqueta Se utiliza para establecer el título del control.

  • Descripción Descripción del control. Si la estructura JSON actual es un elemento en el valor de campo (estructura de matriz) del campo de grupo, y el campo de etiqueta no está establecido, la descripción es el título del control en el cuadro emergente que aparece después de hacer clic en el botón de la barra de estado.

  • por defecto El valor predeterminado del control.

  • filtro Selector, utilizado para ocultar controles. No establecer este campo significa que no se filtrará (se mostrarán los controles); cuando este campo está establecido, no se filtrará (se mostrarán los controles) cuando la expresión sea verdadera. Cuando la expresión sea falsa, se filtrará (no se mostrarán los controles)

  • grupo Se utiliza para controlar la agrupación de controles, que pueden doblarse.

  • ajustes Configuración de componentes, el control tiene una variedad de opciones de interfaz de usuario, utilice esta opción para hacer ajustes específicos.

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

    Configuración: Configuración.requerido: Si es necesario. configuración.disabled: Si deshabilitar. settings.min: válido cuando tipo=número, indicando el valor mínimo o la longitud mínima de una cadena. settings.max: válido cuando tipo=número, indicando el valor máximo o la longitud máxima de una cadena. configuración.paso: válido cuando tipo=número y renderización=deslizador, indicando la longitud del paso. settings.multiple: válido cuando se selecciona type=, lo que indica que se admite la selección múltiple. settings.customizable: es válido cuando se selecciona type=, lo que indica que se admite la personalización; los usuarios pueden editar y agregar nuevas opciones directamente en el control del cuadro desplegable. Si se selecciona la opción recién editada, se usa el nombre de la opción en lugar del valor representado por la opción cuando se activa la interacción. configuración.opciones: válido cuando se selecciona tipo=, indicando el formato de datos de la opción del selector: [opción 1, opción 2], [{nombre:xxx,valor:0}, {nombre:xxx,valor:1}]. configuración.renderización: Tipo de componente de renderización. Cuando el tipo=número, configuración.renderización no está configurado (cuadro de entrada de número predeterminado), opcional: control deslizante (barra deslizante), fecha (el selector de tiempo devuelve la marca de tiempo). Cuando type=string, no está configurado (cuadro de entrada predeterminado de una sola línea), opcional: área de texto (entrada de varias líneas), fecha (selector de tiempo devuelve yyyy-MM-dd hh:mm:ss), color (selector de color devuelve #FF00FF). Cuando se selecciona tipo=, no se establece configuración.renderización (cuadro desplegable predeterminado), opcional: segmento (selector de segmentos). Cuando el tipo = booleano, actualmente sólo hay una casilla de verificación predeterminada.

entrada JSON (en inglés) Elinputcampo configura un control en el cuadro emergente que aparece después de que el botón de la barra de estado se activa haciendo clic.groupyinputLa función principal de este sistema es la configuración de un grupo de controles.grouptener la misma estructura de datos que elinputvalor del campo.input field.

grupo el conjunto

Soporte de configuración bilingüe:

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

¿Por qué no lo haces?

Opciones de gráfico

Este JSON se utiliza para configurar la información de configuración del gráfico de la función de dibujo personalizadoChart(). La biblioteca de gráficos utilizada es Highcharts. Sólo unos pocos campos de configuración básica se enumeran aquí.

Campo de extensión de la plataforma. Configurar como verdadero para usar gráficos de Highstocks; configurar como falso para usar gráficos de Highcharts.

__isEl stock la cuerda

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

extensión JSON (en inglés) Título del gráfico Título la cuerda Configuración del eje X. xEje JSON (en inglés) Configuración del eje Y. eje y JSON (en inglés) Serie de datos del gráfico. serie JSON (en inglés)

Un ejemplo de dibujo 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)
    }
}

¿Por qué no lo haces?

Las opciones de KLineChart

Este JSON se utiliza para configurar la información de configuración del gráfico de la función de dibujo personalizadoKLineChartSólo unos pocos campos de configuración básicos se enumeran aquí.

Si dibujar en el gráfico principal. superposición - ¿ Qué? Configuración del eje X. xEje JSON (en inglés) Configuración del eje Y. eje y JSON (en inglés) Configuración del gráfico de velas. la vela JSON (en inglés)

Por favor, haga referencia aArtículo especial sobre el dibujo de gráficos utilizando la función KLineChart.

¿Por qué no lo haces?

Datos de conjunto

El JSON se utiliza para establecer los datos que se cargarán por elexchange.SetData()Los datos JSON son una estructura de matriz, en la que cada elemento es también una matriz, es decir,[time, data].

El sello de tiempo de los datos, que marca el tiempo de estos datos. tiempo Número datos es una pieza de datos que corresponde a un cierto tiempo en los datos cargados por elexchange.SetData()Cuando la estrategia se ejecuta, elexchange.GetData()La función obtiene los datos con la marca de tiempo correspondiente de acuerdo con la hora actual.

datos cadena, número, bool, objeto, matriz, etc.

Ejemplo de carga de datos en el sistema de backtesting y recuperación de datos cuando se ejecuta la estrategia backtest:

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

¿Por qué no lo haces?

EventLoop-retorno

Este JSON es la estructura de datos devuelta por elEventLoop()La funciónEventLoop()Monitores de funciones: 1. Cualquier evento de datos legibles por WebSocket; 2. Eventos de finalización de tareas concurrentes con las funciones exchange.Go() y HttpQuery_Go(); 3. Eventos de mensaje enviados en hilos creados por elthreading.Thread()función en la estrategia del lenguaje JavaScript.

Número de secuencia del evento. Seq. Número Nombre del evento. Evento la cuerda Identificador del hilo del evento. El hilo Número Índice de eventos. Indicador Número El sello de tiempo nano. Nano Número

Utilice elexchange.Go()Función para hacer solicitudes simultáneas y la estructura de datos de eventos devueltos por elEventLoop() function.

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

En el hilo ejecutado simultáneamente de la estrategia del lenguaje JavaScript (creado por elthreading.Thread()En la actualidad, lapostMessage()función del objeto de hilo se utiliza para enviar un mensaje, elEventLoop()La función en el hilo que recibe el mensaje supervisará la siguiente estructura de datos de eventos:

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

¿Por qué no lo haces?

DBExec-retorno

Este JSON es la estructura de datos devuelta por elDBExec()función; también se devuelve cuando se ejecuta una instrucción SQL utilizando elexec()método del objeto creado por elDial() function.

Los nombres de las columnas de los datos a consultar, una matriz de cadenas. las columnas el conjunto El valor del campo de valores es una matriz bidimensional, donde cada elemento es una matriz y un registro de datos. valores el conjunto

Ejemplo de consulta de datos en la base de datos:

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

¿Por qué no lo haces?

Thread.join-return

Este JSON es la estructura de datos devuelta por la función miembrojoin()de lasThreadobjeto, que guarda cierta información sobre los hilos concurrentes en elJavaScriptLa estrategia lingüísticaThreadobjeto se refiere al objeto de hilo, que es creado porthreading.Thread().

Identificación del hilo. el número de Número Si el hilo se ve obligado a terminar. terminado - ¿ Qué? El tiempo de funcionamiento del hilo en nanosegundos. Se ha cumplido Número El valor de retorno de la función de hilo. el Número

El siguiente código prueba el mecanismo de tiempo de espera deljoin()La función de laThreadObjeto y imprime el valor de retorno 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}
Financiamiento Variables incorporadas