Эта структура JSON используется для настройки параметров функции HttpQuery и функции HttpQuery_Go для отправки запроса Http.
Метод запроса, например:GET
, POST
, и т.д.
метод
строка
Например, в запросе POST, тело может содержать данные формы, JSON, текст и т.д.
тело
строка
Кодирование набора символов. Например, укажите кодирование текстовых данных в тексте как:"UTF-8"
- Да.
харсет
строка
Файл cookie - это небольшой кусок данных, используемый для хранения и обмена информацией о состоянии между клиентом (обычно браузером) и сервером.
печенье
строка
Используется для имитации отпечатков пальцев браузера.
профиль
строка
При установке на true вызов функции HttpQuery возвращает полное сообщение ответа.
отладка
Буль
Информация заголовка запроса существует в виде пар ключей-значений (структура JSON) и используется для передачи различной информации, такой как тип контента, информация об аутентификации, контроль кэша и т. Д.
заголовки
JSON
Настройка на 1000 означает 1 секунду таймаута.
Тайм-аут
Номер
Пример применения:
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)
}
Сообщение http, отправленное при выполнении вышеуказанного кода:
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}
Эта структура JSON - это структура данных, возвращаемая функцией HttpQuery в режиме отладки, когда поле отладки вoptions
параметр структуры верно.
Код состояния http Код состояния Номер Запросить информацию о заголовке. Заголовок JSON Информация о печенье. Печенье массив Полный путь запроса. Следы JSON Длина сообщения Длина Номер Содержание сообщения. Тело строка
Примером возвращенной структуры данных JSON является:
{
"StatusCode": 302,
"Header": {
"Content-Type": ["text/html"],
// ...
},
"Cookies": [{
// ...
}],
"Trace": {},
"Length": 154,
"Body": "..."
}
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Эта структура JSON используется для настройки содержания таблицы, отображаемой в строке состояния стратегии.
Используется для настройки типа пользовательского интерфейса и элементов управления для анализа и отображения.table
- Да.
тип
строка
Используется для настройки названия таблицы строки состояния.
Заголовок
строка
Используется для настройки заголовков столбцов таблицы строки состояния. Первый элемент массива является заголовком первой колонки и так далее.
Кольцевые
массив
Используется для установки данных строки таблицы строки состояния. Первый элемент массива строк (двухмерный массив) также является структурой массива. Длина этой структуры массива должна соответствовать количеству столбцов таблицы (элементы в структуре массива соответствуют названиям столбцов таблицы один за другим), то есть первой строке данных в таблице.
строки
массив
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) + "`")
}
{@fun/Log/LogStatus ЛогСтатус}
Эта структура JSON используется для настройки управления кнопкой в строке состояния. Структура JSON управления кнопкой может быть встроена в структуру таблицы JSON строки состояния. Эта структура является структурой старой версии, и платформа все еще совместима. Рекомендуется использовать последнюю версию структуры JSON кнопки. Пример построения кнопки управления строкой состояния (после запуска кнопки и нажатия на нее всплывающее окно содержит один входной элемент управления, который построен через поле ввода):
{
"type": "button",
"cmd": "open",
"name": "opening a position",
"input": {
"name": "number of opening positions",
"type": "number",
"defValue": 1
}
}
Устройства в всплывающем окне, активированные кнопкой строки состояния, устанавливаются черезinput
илиgroup
.
Для кнопок управления фиксированная настройка:button
- Да.
тип
строка
Настройки типа кнопки
класс
строка
Текст на кнопке управления, то есть имя кнопки.
Имя
строка
Интерактивное командное содержание, отправляемое в стратегию, когда кнопка управления запускает операцию клика.
CMD
строка
Описание кнопки управления. Описание отображается при нажатии мыши на кнопку в строке состояния.
описание
строка
Устанавливает кнопку на отключенную (правда) / включенную (ложь).
инвалид
Буль
При создании кнопки строки состояния для взаимодействия также поддерживается ввод данных.GetCommand()
Добавьтеinput
элемент в структуру данных JSON кнопки управления в строке состояния для настройки входного управления в всплывающем окне, отображаемом при запуске кнопки.
Например, чтобы установить значениеinput
поле:
{
"name": "Number of opening positions",
"type": "number",
"defValue": 1,
"description": "test",
}
Описание каждого поля в вышеуказанной структуре JSON:
"number"
: числовое управление вводом."string"
: управление вводом строки."selected"
- Контроль выпадающего ящика."boolean"
Переключаем управление."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}
, текстовое описание опций выпадающего окна установлено на A, B, C.Для полей, расширенных контролем типа выпадающего окна:
{text: "description", value: "value"}
Используйте поле defValue для настройки параметров по умолчанию, которые могут быть множественными.ввод
JSON
Вinput
поле настраивает элемент управления в всплывающем окне, который появляется после кнопки строки состояния, которая запускается нажатием.group
иinput
Это то, что он конфигурирует группу элементов управления.group
имеют ту же структуру данных, что иinput
Пожалуйста, обратитесь к соответствующему описанию поляinput
field.
группа массив
Примерclass
значение структуры JSON кнопки в строке состояния:
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) + "`")
}
Пример использованияgroup
Поле сinput
поле:
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)
}
}
{@fun/Log/LogStatus ЛогСтатус}
Эта структура JSON используется для настройки кнопки управления в строке состояния. Пример построения кнопки управления строкой состояния (после запуска кнопки и нажатия на нее всплывающее окно содержит несколько элементов управления ввода, которые построены через поле группы):
{
"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,
}
}],
}
Устройства в всплывающем окне, активированные кнопкой строки состояния, устанавливаются черезinput
илиgroup
.
Для кнопок управления фиксированная настройка:button
- Да.
тип
строка
Текст на кнопке управления, то есть имя кнопки.
Имя
строка
Интерактивное командное содержание, отправляемое в стратегию, когда кнопка управления запускает операцию клика.
CMD
строка
При создании кнопки строки состояния для взаимодействия также поддерживается ввод данных.GetCommand()
Добавьтеinput
элемент в структуру данных JSON кнопки управления в строке состояния для настройки входного управления в всплывающем окне, отображаемом при запуске кнопки.
По сравнению со старой версией структуры ввода, новая версия имеет некоторые новые поля и изменения:
{
"type": "selected",
"name": "test",
"label": "topic",
"description": "desc",
"default": 1,
"filter": "a>1",
"group": "group1",
"settings": { ... }, // Component configuration
}
Описание и объяснение каждого поля в вышеуказанной структуре JSON:
тип
Тип управления (обязательное поле), поддерживает следующие настройки:"number"
цифровая коробка ввода,"string"
коробка ввода строки,"selected"
выпадающий ящик,"boolean"
Переключите управление.
Имя Если текущая структура JSON является значением поля поля ввода, когда поле ярлыка не установлено, name - это название элемента управления в всплывающем окне, который появляется после нажатия кнопки строки состояния. Если текущая структура JSON является элементом в значении поля (структуры массива) поля группы, имя не используется в качестве заголовка управления. Поле имени используется для указания названия поля контента ввода управления. Например, выдержка из поля группы используется в качестве иллюстрации:
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"}]
}
]
}
Согласно этому фрагменту, если кнопка строки состояния запускает взаимодействие, всплывающее окно будет появляться с 4 элементами управления, все из которых являются выпадающими элементами управления. После установки опций для каждого элемента управления и нажатия кнопки "ОК" для отправки сообщения об взаимодействии функция GetCommand в стратегии получитcmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}
- Да.
Значение имени в структуре JSON используется в качестве названия поля возвращенной интерактивной информации, например: comboBox1, comboBox2, и т. д.
маркировка Используется для настройки названия элемента управления.
описание Описание элемента управления. Если текущая структура JSON является элементом в значении поля (структура массива) поля группы, и поле ярлыка не установлено, описание является названием элемента управления в всплывающем окне, который появляется после нажатия кнопки строки состояния.
по умолчанию Значение управления по умолчанию.
фильтр Выборщик, используется для сокрытия элементов управления. Неустановка этого поля означает отсутствие фильтрации (выявление элементов управления); когда это поле установлено, отсутствует фильтрация (выявление элементов управления), когда выражение верно. Когда выражение неверно, происходит фильтрация (отсутствие элементов управления)
группа Используется для управления группировкой элементов управления, которые можно складывать.
настройки Конфигурация компонента, контроллер имеет различные варианты пользовательского интерфейса, используйте эту опцию, чтобы сделать конкретные настройки.
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
настройки:
settings.required: требуется ли это.
settings.disabled: отключить или нет.
settings.min: действителен, когда type=number, указывает минимальное значение или минимальную длину строки.
settings.max: действителен при type=number, указывает максимальное значение или максимальную длину строки.
settings.step: действителен при type=number и render=slider, с указанием длины шага.
settings.multiple: действителен при выборе type=, что указывает на поддержку множественного выбора.
settings.customizable: действителен при выборе type=, что указывает на то, что поддерживается настройка; пользователи могут напрямую редактировать и добавлять новые опции в выпадающем окне управления. Если выбран недавно отредактированный вариант, имя опции используется вместо значения, представленного опцией при запуске взаимодействия.
settings.options: Valid when type=selected, indicating the selector option data format: [
ввод
JSON
Вinput
поле настраивает элемент управления в всплывающем окне, который появляется после кнопки строки состояния, которая запускается нажатием.group
иinput
Это то, что он конфигурирует группу элементов управления.group
имеют ту же структуру данных, что иinput
Пожалуйста, обратитесь к вышеприведенному описаниюinput
field.
группа массив
Поддержка двуязычных настроек:
{
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}]
}
}
{@fun/Log/LogStatus ЛогСтатус}
Этот JSON используется для настройки информации о конфигурации диаграммы функции пользовательского рисункаChart()
. Используемая библиотека графиков - это Highcharts. Здесь перечислены только несколько базовых полей конфигурации.
Поле расширения платформы. Настроен на true для использования графиков Highstocks; настроить на false для использования графиков Highcharts.
__isСток строка
{
layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
height: 300, // Specify height
}
продление JSON Название таблицы Заголовок строка Конфигурация оси Х. xОсь JSON Конфигурация оси Y. yОсь JSON Диаграмма серии данных. серии JSON
Простой пример рисунка:
// 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/Chart Chart} (Смеется)
Этот JSON используется для настройки информации о конфигурации диаграммы функции пользовательского рисункаKLineChart
Здесь перечислены лишь несколько базовых полей конфигурации.
Не нужно ли рисовать на главной карте. покрытие Буль Конфигурация оси Х. xОсь JSON Конфигурация оси Y. yОсь JSON Конфигурация графика свечей. свеча JSON
Пожалуйста, обратитесьСпециальная статья о рисовании графиков с использованием функции KLineChart.
{@fun/Log/KLineChart KLineChart} Я не знаю.
JSON используется для настройки данных для загрузкиexchange.SetData()
Данные JSON - это структура массива, в которой каждый элемент также является массивом, а именно[time, data]
.
Печать времени данных, обозначающая время этих данных.
время
Номер
данные - это часть данных, соответствующая определенному времени в данных, загруженныхexchange.SetData()
Когда стратегия работает,exchange.GetData()
функция получает данные с соответствующей временной отметкой в соответствии с текущим временем.
данные строка, число, bool, объект, массив и т.д.
Пример загрузки данных в систему обратного тестирования и получения данных при запуске обратного тестирования стратегии:
/*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)
}
}
{@funSetData}, {@funGetData}, что это такое?
Этот JSON - это структура данных, возвращаемаяEventLoop()
Функция.EventLoop()
Мониторы функций: 1. Любое читаемое событие данных WebSocket; 2. События завершения задачи одновременно с функциями exchange.Go() и HttpQuery_Go(); 3. События сообщения, отправленные в потоках, созданныхthreading.Thread()
функция в стратегии языка JavaScript.
Номер последовательности событий. Второе Номер Название события. Событие строка Идентификатор нитки события. Прокрутка Номер Индекс событий. Индекс Номер Наночасовая метка. Нано Номер
Используйтеexchange.Go()
Функция для одновременных запросов и структуры данных событий, возвращенныхEventLoop()
function.
{
"Seq":1,
"Event":"Exchange_GetTrades",
"ThreadId":0,
"Index":3,
"Nano":1682068771309583400
}
В одновременно выполняемой нитью стратегии языка JavaScript (созданнойthreading.Thread()
В то время какpostMessage()
функция объекта потока используется для отправки сообщения,EventLoop()
функция в нитке, принимающей сообщение, будет отслеживать следующую структуру данных событий:
{
"Seq":4,
"Event":"thread",
"ThreadId":1,
"Index":0,
"Nano":1727592066508674000
}
{@fun/Global/EventLoop]
Этот JSON - это структура данных, возвращаемаяDBExec()
функция; он также возвращается при выполнении SQL-указания с использованиемexec()
метод объекта, созданногоDial()
function.
Имена столбцов данных, которые должны быть запрошены, строка массива. колонки массив Указанные данные должны быть запрошены, где каждый элемент данных соответствует названию столбца. Значение поля значений является двумерным массивом, где каждый элемент является массивом и записью данных. ценности массив
Пример запроса данных в базе данных:
{
"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
"values":[
[1518970320000,100,99.1,90,100,12345.6],
[1518960320000,100,99.1,90,100,12345.6]
]
}
{@fun/Global/DBExec DBExec}, {@fun/Global/Dial Dial}
Этот JSON - это структура данных, возвращаемая функцией членовjoin()
В соответствии сThread
объект, который сохраняет некоторую информацию о одновременных потоков вJavaScript
языковой стратегии.Thread
объект относится к объекту нитки, который создаетсяthreading.Thread()
.
Идентификация нитей. Идентификатор Номер Если нить вынуждена заканчиваться. прекращено Буль Время работы нитки в наносекундах. истек Номер Возвращаемое значение функции потока. от Номер
Следующий код проверяет механизм тайм-аутаjoin()
ФункцияThread
Объект и распечатывает значение возвращенияjoin()
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}
Финансирование
Встроенные переменные