В процессе загрузки ресурсов... загрузка...

Структуры

Торговля

Структура записей о рыночных сделках.

Идентификатор записи рыночных транзакций или, если интерфейс биржи не предоставляет идентификатор, используйте временную метку для заполнения. Идентификатор строка Миллисекундная временная метка. Время Номер Цена сделки. Цена Номер Сумма сделки. Сумма Номер Тип заказа, см. {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}. Тип Номер

Функция exchange.GetTrades( возвращает массив Trade или пустой массив.

{@fun/Market/exchange.GetTrades exchange.GetTrades} - Я не знаю.

Тикер

Структура рынка.

Оригинальные данные возвращаются интерфейсом обмена, такой атрибут не доступен для обратного тестирования. Информация объект ВSymbolполе - код торгового сорта, определенный платформой FMZ.

  • Для объекта спотового обмена форматSymbolЗначение поля (например):BTC_USDT, обозначающая спотовую торговую пару BTC_USDT.
  • Для объекта биржи фьючерсов форматSymbolЗначение поля (например)BTC_USDT.swap, который представляет собой бессрочный договор собственности USDT на BTC.
  • Для фьючерсных биржевых объектов форматSymbolзначение поля (например):BTC_USDT.BTC-240108-40000-C, который представляет собой контракт на покупку опциона BTC в USDT с датой исполнения 8 января 2024 года и ценой исполнения 40 000 долларов.

Символ строка Самая высокая цена, или если интерфейс биржи не предоставляет самую высокую цену за 24 часа, то используйте одну цену продажи для заполнения. Высокий Номер Самая низкая цена, или если интерфейс биржи не предоставляет 24-часовую самую низкую цену, то используйте одну цену для заполнения. Низкий Номер Текущий момент продает по одной цене. Продать Номер Текущий момент стоит одной ценой. Купить Номер Последняя цена сделки. Последний Номер Периодная открытая цена, если обменный интерфейс не предоставляет 24-часовую текущую открытую цену, то для заполнения используется текущая цена. Открыто Номер Сумма недавних транзакций, в принципе, сумма спотовых транзакций представлена в базовой валюте, а сумма контрактных транзакций представлена в количестве контрактов. Если обменный интерфейс не предоставляет таких данных, он будет заполнен данными, доступными в обменном интерфейсе, например, сумма транзакций может быть в котировке. Объем Номер Миллисекундная дата. Время Номер Позиции, большинство интерфейсов обмена не предоставляют эти данные, а значение равняется 0 когда эти данные не поддерживаются. Открытый интерес Номер

Функция exchange.GetTicker( возвращает структуру Ticker. Для опционовexchange.GetTicker()Функция вызова подвержена ошибкам. Поскольку ликвидность рынка опционных контрактов, как правило, слаба, часто нет ожидаемых заказов на первую покупку или первую продажу.Tickerполе структурыBuyилиSellбудет 0, будет задействована команда с ошибкой.

{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTicker exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker exchange.GetTicker}

Запись

Структура K-Line Bar, стандартная структура OHLC, используется для рисования K-линий и индикаторов для расчета и анализа.

Временная метка на уровне миллисекунд, для структуры записи, значение атрибута Time которой является начальной временной меткой периода этой строки K. Время Номер Цена открытия. Открыто Номер Самая высокая цена. Высокий Номер Самая низкая цена. Низкий Номер Цена закрытия. Закрой. Номер Количество позиций, большинство интерфейсов обмена не предоставляют эти данные, значение равняется 0 при отсутствии поддержки этих данных. Открытый интерес Номер Сумма транзакции. В принципе, сумма спотовой транзакции представлена в базовой валюте, а сумма контрактной транзакции - в количестве контрактов. Если обменный интерфейс не предоставляет таких данных, он будет заполнен существующими данными из обменного интерфейса, например, суммой транзакции в котировке. Объем Номер

Функция exchange.GetRecords() возвращает массив записей или пустой массив. Каждая структура записей представляет собой K-линейную строку, т.е. K-линейную строку.

{@fun/Market/exchange.GetRecords exchange.GetRecords} Я не знаю.

Порядок

Структура ордена.

Оригинальные данные ответа интерфейса обмена, такой атрибут не доступен для обратного тестирования. Информация объект ВSymbolполе - это код торгового продукта, определенный платформой FMZ, и его формат соответствуетSymbolполе структуры {@struct/Ticker Ticker}.

  • Для объектов спотового обмена форматSymbolзначение поля (например):BTC_USDT, обозначающая спотовую торговую пару BTC_USDT.
  • Для фьючерсных биржевых объектов форматSymbolзначение поля (например):BTC_USDT.swap, который представляет собой USDT-стандартный вечный контракт BTC.

Символ строка Order Id, этот атрибут состоит из кода продукта биржи и оригинального идентификатора заказа биржи, разделенных английскими запятой.Idформат спотовой торговой парыETH_USDTпорядок обмена OKX:ETH-USDT,1547130415509278720- Да. Идентификатор строка Цена ордера, обратите внимание, что этот атрибут может быть 0 или -1 для рыночных ордеров. Цена Номер Количество размещенных ордеров, обратите внимание, что этот атрибут рыночного ордера может быть суммой, а не валютой. Сумма Номер Количество транзакций, возможно обозначенное цифрой 0, если интерфейс обмена не предоставляет эти данные. Сумма сделки Номер Средняя цена сделки, обратите внимание, что некоторые биржи не предоставляют эти данные. Средняя цена Номер Статус заказа, см. {@var/ORDER_STATE/ORDER_STATE_PENDING ORDER_STATE_PENDING}, {@var/ORDER_STATE/ORDER_STATE_CLOSED ORDER_STATE_CLOSED}, {@var/ORDER_STATE/ORDER_STATE_CANCELED ORDER_STATE_CANCELED}, {@var/ORDER_STATE/ORDER_STATE_UNKNOWN ORDER_STATE_UNKNOWN}. Статус Номер Тип заказа, см. {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}. Тип Номер Для указания направления открытия и закрытия контрактных ордеров см. {@var/ORDER_OFFSET/ORDER_OFFSET_OPEN ORDER_OFFSET_OPEN}, {@var/ORDER_OFFSET/ORDER_OFFSET_CLOSE ORDER_OFFSET_CLOSE}. Компенсация Номер Этот атрибут в спотовых заказах""В заказе контракта этот атрибут является конкретным кодом контракта. Тип контракта строка

ВOrderСтруктура заказа может быть возвращенаexchange.GetOrder()иexchange.GetOrders()Функции.exchange.GetOrders()функция возвращает массивOrderЕсли нет незавершенного порядка, он возвращает[], который является пустым массивом.StatusсобственностьOrderструктуру порядка можно напрямую сравнить с такими константами, какORDER_STATE_PENDINGчтобы определить, являются ли они равными и таким образом определить статус заказа.

Для одностороннего режима позиции, когда невозможно определить, является ли приказ закрытием (уменьшением),Offsetполе настроено на направление открытия по умолчанию, то естьORDER_OFFSET_OPEN.

{@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}

Книга заказов

Структура заказов в глубине рынка.

Цена. Цена Номер Сумма. Сумма Номер

Функция GetDepth( возвращает структуру данных, в которой значения атрибутов Bids, Asks являются массивами OrderBook.

{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/Depth Depth}

Глубина

Структура глубины рынка.

Массив заказов продажи, т.е. массив OrderBook, сортируется по цене от самой низкой до самой высокой, а первая структура OrderBook в массиве имеет самую низкую цену. Спросит массив Массив заказов покупки, т.е. массив OrderBook, сортируется по цене от самой высокой до самой низкой, а первая структура OrderBook в массиве имеет самую высокую цену. Предложения массив Миллисекундная отметка времени. Время Номер

Функция exchange.GetDepth( возвращает структуру Depth.

{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/OrderBook OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}, {@struct/OrderBook}

Счет

Структура информации о счете.

Оригинальные данные возвращаются интерфейсом обмена, такой атрибут не доступен для обратного тестирования. Информация объект Количество доступных деноминированных валют, в спотовом выражении, если торговая пара BTC_USDT, Баланс относится к количеству в настоящее время доступных USDT. В U-стандартном контракте Баланс относится к сумме доступной маржи (USDT, quoteCurrency). Баланс Номер Стоимость замороженных активов при неисполнении поручения. Замороженный баланс Номер Количество доступных торговых валют, на месте, если торговая пара BTC_USDT, Акции относится к количеству в настоящее время доступных BTC. Акции относится к количеству доступной маржи (валюты, базовой валюты) в валютном контракте. Запасы Номер Стоимость замороженных активов при неисполнении поручения. Замороженные запасы Номер Только объекты биржи фьючерсов поддерживают это поле.EquityПоле - это общий собственный капитал маржи фьючерсного счета по текущему контракту.

Собственный капитал Номер Это поле поддерживается только объектами фьючерсного обмена.UPnLполе - это суммаНереализованная прибыль и убытоквсех позиций, открытых маржой фьючерсного счета по текущим контрактным параметрам.

UPnL Номер

Функция exchange.GetAccount() возвращает структуру счета. Данные в возвращенной структуре зависят от в настоящее время установленной торговой пары, кода контракта.

{@fun/Account/exchange.GetAccount exchange.GetAccount} - Я не знаю.

Актив

Структура информации о конкретных валютных активах.

Названия криптовалютных активов, определенные биржей, которые могут варьироваться от биржи к бирже за одну и ту же криптовалюту, например:BTCможет называтьсяXBTна некоторых биржах. Валюта строка Доступный баланс валютных активов. Сумма Номер Количество замороженных активов в валюте. Замороженная сумма Номер

ВFrozenAmountВ состав валютных активов могут входить активы, зафиксированные для неисполненных ордеров, и часть маржи, зафиксированная для фьючерсных позиций.

{@fun/Account/exchange.GetAssets exchange.GetAssets} (Смеется)

Положение

Структура информации о позиции контракта.

Оригинальные данные возвращаются интерфейсом обмена, такой атрибут не доступен для обратного тестирования. Информация объект ВSymbolполе - это код торгового продукта, определенный платформой FMZ, и его формат соответствуетSymbolполе структуры {@struct/Ticker Ticker}.

  • Для объектов спотового обмена форматSymbolзначение поля (например):BTC_USDT, обозначающая спотовую торговую пару BTC_USDT.
  • Для фьючерсных биржевых объектов форматSymbolзначение поля (например):BTC_USDT.swap, который представляет собой USDT-стандартный вечный контракт BTC.

Символ строка Размер строки позиций, заполненный с помощью расчета, если интерфейс обмена не предоставляет эти данные, он может быть неточным. Уровень маржи Номер Размер позиции, обычно положительное целое число (количество номеров контрактов). Сумма Номер Количество замороженных позиций, количество временно замороженных позиций, когда закрытый ордер не выполнен. Замороженная сумма Номер Средняя цена позиции, которая в принципе является средней ценой позиции в целом (не участвует в расчетах). Если данные не предоставляются биржевым интерфейсом, они заполняются средней ценой позиций, доступных на биржевом интерфейсе (участвующих в расчетах). Цена Номер Плавающая прибыль/убыток позиции в принципе является нереализованной прибылью/убытком позиции, если данные не предоставляются биржевым интерфейсом, они будут заполнены другими данными прибыли/убытка биржевого интерфейса. Прибыль Номер Тип позиции, см. {@var/POSITION_DIRECTION/PD_LONG PD_LONG}, {@var/POSITION_DIRECTION/PD_SHORT PD_SHORT}. Тип Номер Контрактный код, см. описание функции {@fun/Futures/exchange.SetContractType exchange.SetContractType} для подробной информации. Тип контракта строка Маржинальная величина, занимаемая позицией, заполненная цифрой 0, если обменный интерфейс не предоставляет эти данные. Маржинальная сумма Номер

Функция exchange.GetPositions( возвращает массив позиций или пустой массив. Для криптовалютных фьючерсов важно отметить, что массив структуры позиции, возвращаемый функцией exchange.GetPositions(). Для атрибутов FrozenAmount, Profit и Margin в структуре данных позиции, поскольку данные, предоставляемые биржей, не являются однородными, интерфейс GetPositions(, определение данных, возвращаемых обменным объектом, может отличаться. Например, у некоторых бирж нет данных о заморозке позиции в данных позиции, поэтому FrozenAmount равен 0. Если вам нужно рассчитать определенные данные, вы можете использовать исходные данные в атрибуте Info для расчета и анализа.

{@fun/Futures/exchange.GetPositions exchange.GetPositions} - Я не знаю.

Рынок

Структура рыночной информации о торговых сортах.

Принимая такие ценности, как"btcusdt",SymbolОбратите внимание, что формат и определение этого атрибута отличаются отSymbolполе структуры {@struct/Ticker Ticker}. Символ строка Принимая такие ценности, как"BTC",BaseAssetполе записывает название торгуемой валюты (т.е. baseCurrency), которое однородно большими буквами. Базовый актив строка Принимая такие ценности, как"USDT",QuoteAssetВ поле записывается название деноминированной валюты (т.е. quoteCurrency), которая однородно представлена с большими буквами. Котировкаактива строка Принимая такие ценности, как0.01,TickSizeполе записывает значение наименьшего изменения цены торгуемой статьи на бирже. Размер кнопки Номер Принимая такие ценности, как0.01,AmountSizeполе записывает значение минимального изменения объема заказов, размещенных на бирже для данной сделки. Сумма Размер Номер Принимая такие ценности, как2,PricePrecisionПоле записывает точность цены торгуемой статьи на бирже, указывая, что цена точна до двух десятичных знаков. ЦенаПрецизия Номер Принимая такие ценности, как3,AmountPrecisionполе записывает точность заказов, размещенных на бирже для торгуемого сорта, указывая на то, что заказы точны до трех десятичных знаков. СуммаПрецизия Номер Принимая такие ценности, как0.001,MinQtyполе записывает минимальный размер ордера на бирже для этой сделки. Минимальное количество Номер Принимая такие ценности, как1000,MaxQtyполе записывает максимальное количество заказов, которые могут быть размещены на бирже для этого вида торговли. Максимальное количество Номер Принимая такие ценности, как5,MinNotionalполе записывает минимальную сумму ордера, размещенного на бирже для этого вида торговли. Минимально Номер Принимая такие ценности, как9999999,MaxNotionalполе записывает максимальный объем заказов, размещенных на бирже для данного вида торговли. Максимум Номер ПолеCtValзаписывает стоимость контракта торгуемого продукта на бирже, в валюте, зарегистрированной вCtValCcyНапример:CtValравен 0,01CtValCcyэто"BTC", что означает, что контракт стоит 0,01 BTC. CtVal Номер ПолеCtValCcyзаписывает единицу стоимости контракта.BTC, USD, ETH, и т.д. - Да, конечно. Номер ПолеInfoзаписывает необработанные данные о видах, возвращаемые интерфейсом рыночной информации биржи. Информация объект

Функция exchange.GetMarkets() возвращает словарь, содержащий этоMarketструктуры. В связи с различным уровнем поддержки данных о рыночной информации каждой биржей, поля, которые не поддерживаются биржей, будут проигнорированы.Info field.

{@fun/Market/exchange.GetMarkets exchange.GetMarkets} - Я не знаю.

Финансирование

Структура информации о ставке финансирования торгового продукта. Только постоянные контракты криптовалют поддерживают ставки финансирования.

Необработанные данные возвращаются при вызове интерфейса валютного фьючерса. Информация объект ВSymbolполе - код торгового продукта, определенный платформой FMZ. Символ строка Интервал ставки финансирования, в миллисекундах.28800000означает 8-часовой интервал. Интервал Номер Временная метка начала следующего периода ставки финансирования (время расчетов этого периода), в миллисекундах. Время Номер Ставка финансирования, которая будет использоваться для расчета этого периода. Уровень Номер

Ставки финансирования по бессрочным контрактам различных фьючерсных бирж имеют различные методы и механизмы расчета, а циклы расчетов составляют 1 час, 4 часа, 8 часов и один день. Текущая ставка финансирования постоянных контрактов на фьючерсных биржах имеет фиксированное значение и плавающее значение, рассчитанное в реальном времени. ВRateполе - это значение ставки финансирования без%. Если вы хотите преобразовать его в значение с%, можно умножить на 100 и добавить%в конце.

{@fun/Futures/exchange.GetFundings exchange.GetFundings} (США) В этом году мы получили $200 млн.

ДругиеСтруктура

HttpQuery-варианты

Эта структура 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}

HttpQuery-return

Эта структура 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}

Таблица LogStatus

Эта структура 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 ЛогСтатус}

LogStatus-btnTypeOne

Эта структура 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:

  • Имя Заголовок элемента управления в всплывающем окне, который появляется после кнопки строки состояния, запускает операцию клика.
  • описание Описание элемента управления в всплывающем окне, который появляется после того, как кнопка строки состояния запускает операцию нажатия.
  • тип Тип элемента управления в всплывающем окне, который появляется после кнопки строки состояния, запускает операцию нажатия. Возможные значения поля типа следующие:
    1. "number": числовое управление вводом.
    2. "string": управление вводом строки.
    3. "selected"- Контроль выпадающего ящика.
    4. "boolean"Переключаем управление.
  • defValue Значение по умолчанию элемента управления в всплывающем окне, который появляется после кнопки строки состояния, запускает операцию нажатия. Если это элемент управления типа выпадающего окна (выбранный), поле defValue используется для настройки параметров выпадающего окна."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}, текстовое описание опций выпадающего окна установлено на A, B, C.

Для полей, расширенных контролем типа выпадающего окна:

  • варианты Контроль выпадающего окна на странице, задействованный кнопкой управления строкой состояния, может использовать поле опций для настройки опций.{text: "description", value: "value"}Используйте поле defValue для настройки параметров по умолчанию, которые могут быть множественными.
  • множественный Когда это поле настроено на true, поддерживается множественный выбор в выпадающем окне.

ввод 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 ЛогСтатус}

LogStatus-btnTypeTwo

Эта структура 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: [option 1, option 2], [{name:xxx,value:0}, {name:xxx,value:1}). settings.render: Тип компонента для рендеринга. Когда type=number, settings.render не настроен (по умолчанию вводное поле номера), необязательно: слайдер (слайдерная панель), дата (выбиратель времени возвращает временную метку). Когда type=string, settings.render не установлено (по умолчанию однострочное окно ввода), необязательно: textarea (ввод многострочный), дата (выбор времени возвращает yyyy-MM-dd hh:mm:ss), цвет (выбор цвета возвращает #FF00FF). При выборе type= не установлено settings.render (по умолчанию выпадающее окно), необязательно: сегмент (выбиратель сегмента). Когда type=boolean, в настоящее время существует только поле отметки по умолчанию.

ввод 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} (Смеется)

Оптимизация KLineChart

Этот JSON используется для настройки информации о конфигурации диаграммы функции пользовательского рисункаKLineChartЗдесь перечислены лишь несколько базовых полей конфигурации.

Не нужно ли рисовать на главной карте. покрытие Буль Конфигурация оси Х. xОсь JSON Конфигурация оси Y. yОсь JSON Конфигурация графика свечей. свеча JSON

Пожалуйста, обратитесьСпециальная статья о рисовании графиков с использованием функции KLineChart.

{@fun/Log/KLineChart KLineChart} Я не знаю.

SetData-данные

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]

DBExec-возвращение

Этот 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}

Thread.join-return

Этот 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}
Встроенные функции Встроенные переменные