Obtener la estructura {@struct/Ticker Ticker} del spot o contrato correspondiente al par de operaciones establecido actualmente, el código del contrato, es decir, los datos del ticker.GetTicker ()
Función es una función miembro del objeto de intercambio {@var/EXCHANGE exchange}, el uso deexchange
funciones (métodos) de miembros de objetos relacionadas únicamente conexchange
, y no se repetirá en el documento.
Elexchange.GetTicker()
función devuelve la estructura {@struct/Ticker Ticker} cuando la solicitud de datos tiene éxito, y devuelve el valor nulo cuando la solicitud de datos falla.
{@struct/Ticker Ticker}, valor nulo
El cambio.GetTicker ((() intercambio.GetTicker (símbolo)
El parámetrosymbol
se utiliza para especificar el par de operaciones específico y el código de contrato correspondiente a los datos {@struct/Ticker Ticker} solicitados. Si no se pasa este parámetro, se solicitarán por defecto los datos de mercado del par de operaciones y el código de contrato actualmente establecidos.
Cuando se llama a laexchange.GetTicker(symbol)
función,exchange
Si necesita solicitar datos de mercado con la moneda denominada en USDT y la moneda de negociación en BTC, el parámetrosymbol
es:"BTC_USDT"
, y el formato es el formato del par de operaciones definido por la plataforma FMZ.
Cuando se llama a laexchange.GetTicker(symbol)
función,exchange
Si usted necesita solicitar los datos de mercado de BTCsymbol
es:"BTC_USDT.swap"
, y el formato es una combinación dePares de negociaciónycódigo del contratodefinidas por la plataforma FMZ, separadas por el carácter exchange.GetTicker(symbol)
función,exchange
Si usted necesita solicitar los datos de mercado de BTCsymbol
es:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como ejemplo), el formato es la combinación dePares de negociacióndefinido por la plataforma FMZ y el código del contrato de opción específico definido por la bolsa, separado por el carácter
el símbolo falsos la cuerda
function main(){
// If it is a futures exchange object, set the contract code first, e.g. set it as a perpetual contract
// exchange.SetContractType("swap")
var ticker = exchange.GetTicker()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the ticker is null, and it will cause an error when accessing ticker.High, so when testing this code, make sure that the exchange interface can be accessed.
*/
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume)
}
def main():
ticker = exchange.GetTicker()
Log("Symbol:", ticker["Symbol"], "High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Open:", ticker.Open, "Volume:", ticker["Volume"])
void main() {
auto ticker = exchange.GetTicker();
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume);
}
Para los objetos de cambio de futuros (es decir,exchange
o bienexchanges[0]
), debe establecer el código del contrato utilizando elexchange.SetContractType()
función antes de llamar a la función ticker, que no se repetirá.
function main() {
var ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
}
def main():
ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
void main() {
auto ticker = exchange.GetTicker("BTC_USDT");
Log(ticker);
}
Utilice elsymbol
Parámetro para solicitar datos de mercado para un símbolo específico (símbolo spot).
ElTicker
datos devueltos por elexchange.GetTicker()
En la actualidad, la mayoría de los sistemas de backtesting se encuentran integrados en el sistema.High
yLow
Los valores simulados, tomados de los valores de venta y compra del mercado en ese momento.Ticker
datos devueltos por elexchange.GetTicker()
En el mercado real, elHigh
yLow
Los valores se basan en los datos devueltos por el intercambio encapsuladoTick
Interfaz, que incluye los precios más altos y más bajos dentro de un determinado período (generalmente un período de 24 horas).
Los intercambios que no apoyan elexchange.GetTicker()
Función:
Nombre de la función | Intercambios al contado sin soporte | Exchanges de futuros no respaldados |
---|---|---|
¿ Qué haces? | – | El valor de las pérdidas |
En el caso de las empresas que no se encuentran en el mercado de valores, el valor de los valores obtenidos es el valor de los valores obtenidos en el mercado.
Obtener la estructura {@struct/Depth Depth} del spot o contrato correspondiente al par de operaciones establecido actualmente, código del contrato, es decir, datos de la cartera de órdenes.
Elexchange.GetDepth()
La función devuelve la estructura {@struct/Depth Depth} si la solicitud de datos tiene éxito, y devuelve nulo si la solicitud de datos falla.
{@struct/Depth Depth}, valor nulo
El cambio.GetDepth() intercambio.Simbolo de Profundidad.
El parámetrosymbol
Se utiliza para especificar el par de operaciones específico y el código del contrato correspondiente a los datos {@struct/Depth Depth} solicitados. Si no se pasa este parámetro, se solicitarán por defecto los datos del libro de órdenes del par de operaciones actualmente establecido y el código del contrato.exchange.GetDepth(symbol)
función,exchange
Si necesita solicitar obtener los datos del libro de pedidos con la moneda denominada en USDT y la moneda de la transacción en BTC, el parámetrosymbol
es:"BTC_USDT"
, y el formato es el formato del par de operaciones definido por la plataforma FMZ.exchange.GetDepth(symbol)
función,exchange
Si necesita solicitar los datos del libro de pedidos del contrato perpetuo estándar U de BTCsymbol
es:"BTC_USDT.swap"
, y el formato es una combinación dePares de negociaciónycódigo del contratodefinido por la plataforma FMZ, separado por el carácter exchange.GetDepth(symbol)
función,exchange
Si necesita solicitar los datos del libro de pedidos del contrato de opción estándar U de BTCsymbol
es:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como ejemplo), el formato es la combinación dePares de negociacióndefinido por la plataforma FMZ y el código del contrato de opción específico definido por la bolsa, separado por el carácter
function main(){
var depth = exchange.GetDepth()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the depth is null, which will cause an error when accessing depth.Asks[1].Price, so make sure you can access the exchange interface when testing the code.
*/
var price = depth.Asks[1].Price
Log("Sell 2 price is:", price)
}
def main():
depth = exchange.GetDepth()
price = depth["Asks"][1]["Price"]
Log("Sell 2 price is:", price)
void main() {
auto depth = exchange.GetDepth();
auto price = depth.Asks[1].Price;
Log("Sell 2 price is:", price);
}
Pruebaexchange.GetDepth()
Función:
function main() {
// BTC U-based perpetual contract
var depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
}
def main():
depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
void main() {
auto depth = exchange.GetDepth("BTC_USDT.swap");
Log(depth);
}
Cuando el configuradoexchange
objeto es un objeto de intercambio de futuros, utilizar elsymbol
Parámetro para solicitar los datos del libro de pedidos de un símbolo específico (símbolo de futuros).
En el sistema de backtesting, los datos de cada grado devueltos por elexchange.GetDepth()
Función cuando se utiliza elSimulación de tickEn el sistema de backtesting, los datos devueltos por elexchange.GetDepth()
Función cuando se utiliza elEl verdadero tickLas pruebas de retroceso son una instantánea profunda de segundo nivel.
Se trata de una lista de las acciones que se han emitido en el mercado de valores de valores de valores de valores.
Obtener la matriz de estructura {@struct/Trade Trade} del spot o contrato correspondiente al par de operaciones establecido actualmente, código del contrato, es decir, los datos de transacción de mercado.
Elexchange.GetTrades()
La función devuelve una matriz de estructuras {@struct/Trade Trade} si la solicitud de datos tiene éxito, y devuelve valores nulos si la solicitud de datos falla.
{@struct/Trade Trade} matriz, valores nulos
En cambio.GetTrades ((() el símbolo de intercambio.GetTrades
El parámetrosymbol
Se utiliza para especificar el par de operaciones específico y el código del contrato correspondiente a los datos de la matriz {@struct/Trade Trade} solicitados. Si no se pasa este parámetro, se solicitarán por defecto los últimos datos del registro de transacciones del par de operaciones y el código del contrato actualmente establecidos.exchange.GetTrades(symbol)
función,exchange
Si necesita solicitar obtener los datos del libro de pedidos con la moneda denominada en USDT y la moneda de negociación en BTC, el parámetrosymbol
es:"BTC_USDT"
, y el formato es el formato del par de operaciones definido por la plataforma FMZ.exchange.GetTrades(symbol)
función,exchange
Si necesita solicitar los datos del libro de pedidos del contrato perpetuo estándar U de BTCsymbol
es:"BTC_USDT.swap"
, y el formato es una combinación dePares de negociaciónycódigo del contratodefinido por la plataforma FMZ, separado por el carácter exchange.GetTrades(symbol)
función,exchange
Si necesita solicitar los datos del libro de pedidos del contrato de opción estándar U de BTCsymbol
es:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como ejemplo), el formato es la combinación dePares de negociacióndefinido por la plataforma FMZ y el código del contrato de opción específico definido por la bolsa, separado por el carácter
function main(){
var trades = exchange.GetTrades()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, trade is null. When accessing trade[0].Id, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
trades = exchange.GetTrades()
Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
auto trades = exchange.GetTrades();
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}
Prueba elexchange.GetTrades()
Función:
function main() {
// BTC's U-based perpetual contract
var trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
}
def main():
trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
void main() {
auto trades = exchange.GetTrades("BTC_USDT.swap");
Log(trades);
}
Cuando el configuradoexchange
objeto es un objeto de intercambio de futuros, utilizar elsymbol
Parámetro para solicitar datos de registro de transacciones de mercado para un símbolo específico (símbolo de futuros).
exchange.GetTrades()
Algunos intercambios no admiten esta función, y los datos específicos devueltos son cuánto del rango de registros de transacciones depende del intercambio y necesita ser manejado de acuerdo con la situación específica.exchange.GetRecords ()
La función devuelve el mismo orden de datos, es decir, el último elemento de la matriz es el dato más cercano al tiempo actual.
Elexchange.GetTrades()
función devuelve una matriz vacía cuando se utilizaSimulación de tickLos datos devueltos por elexchange.GetTrades()
Función en el usoEl verdadero tickLa prueba de retroceso en el sistema de prueba de retroceso es la toma instantánea de los datos del flujo de pedidos, es decir, la matriz de estructuras {@struct/Trade Trade}.
Los intercambios que no apoyan elexchange.GetTrades()
Función:
Nombre de la función | Intercambios al contado sin soporte | Exchanges de futuros no respaldados |
---|---|---|
Obtener Trades | – | Los valores de los activos de la entidad de crédito que no se incluyen en el balance de la entidad de crédito |
En el caso de las empresas que no se encuentran en el mercado, las empresas que no se encuentran en el mercado deben tener un registro de los resultados de los intercambios.
Obtener la matriz de estructura {@struct/Record Record} del spot o contrato correspondiente al par de operaciones establecido actualmente, código del contrato, es decir, datos de línea K.
Elexchange.GetRecords()
función devuelve una matriz de {@struct/Record Record} estructuras cuando la solicitud de datos tiene éxito, y devuelve valores nulos cuando la solicitud de datos falla.
{@struct/Record Record} matrices, valores nulos
¿ Qué pasa con los registros? intercambio.GetRecords (símbolo) intercambio.GetRecords (símbolo, punto) intercambio.GetRecords (símbolo, punto, límite) El cambio.GetRecords (período) intercambio.GetRecords (período, límite)
El parámetrosymbol
Se utiliza para especificar el par de operaciones específico y el código del contrato correspondiente a los datos de la matriz {@struct/Record Record} solicitados. Si este parámetro no se pasa, se solicitarán por defecto los datos de la línea K del par de operaciones actualmente establecido y el código del contrato.exchange.GetRecords(symbol)
función,exchange
Si necesita solicitar obtener los datos con la moneda denominada como USDT y la moneda de la transacción como BTC, el parámetrosymbol
es:"BTC_USDT"
, y el formato es el formato del par de operaciones definido por la plataforma FMZ.exchange.GetRecords(symbol)
función,exchange
Si necesita solicitar los datos del libro de pedidos del contrato perpetuo estándar U de BTCsymbol
es:"BTC_USDT.swap"
, y el formato es una combinación dePares de negociaciónycódigo del contratodefinido por la plataforma FMZ, separado por el carácter exchange.GetRecords(symbol)
función,exchange
Si necesita solicitar los datos del libro de pedidos del contrato de opción estándar U de BTCsymbol
es:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como ejemplo), el formato es la combinación dePares de negociacióndefinido por la plataforma FMZ y el código del contrato de opción específico definido por la bolsa, separado por el carácter period
especifica el período de los datos de línea K solicitados, por ejemplo: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}, etc. El valor del parámetroperiod
Si este parámetro no se pasa, el período de los datos de línea K solicitados por defecto es el período de línea K predeterminado de la configuración actual de estrategia en tiempo real/backtest.
el período
falsos
Número
El parámetrolimit
Se utiliza para especificar la longitud de los datos de línea K solicitados. Si este parámetro no se pasa, la longitud de la solicitud predeterminada es el número máximo de barras de línea K solicitadas en un momento de la interfaz de línea K de intercambio. Este parámetro puede causar que la paginación solicite los datos de línea K de intercambio, y el consumo de tiempo de la llamada de función aumentará durante la consulta de paginación.
el límite
falsos
Número
function main() {
// Print K-line data with a K-line period of 120 seconds (2 minutes)
Log(exchange.GetRecords(60 * 2))
// Print K-line data with a K-line period of 5 minutes
Log(exchange.GetRecords(PERIOD_M5))
}
def main():
Log(exchange.GetRecords(60 * 2))
Log(exchange.GetRecords(PERIOD_M5))
void main() {
Log(exchange.GetRecords(60 * 2)[0]);
Log(exchange.GetRecords(PERIOD_M5)[0]);
}
Obtener datos de línea K para un período personalizado.
function main() {
var records = exchange.GetRecords(PERIOD_H1)
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, records is null. When accessing records[0].Time, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
Log("The second k-line data is Time:", records[1].Time ,"Close:", records[1].Close)
Log("Current K-line (latest)", records[records.length-1], "Previous K-line", records[records.length-2])
}
def main():
records = exchange.GetRecords(PERIOD_H1)
Log("The first k-line data is Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
Log("The second k-line data Time:", records[1]["Time"], "Close:", records[1]["Close"])
Log("Current K-line (latest)", records[-1], "Previous K-line", records[-2])
void main() {
auto records = exchange.GetRecords(PERIOD_H1);
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
Log("The second k-line data Time:", records[1].Time, "Close:", records[1].Close);
Log("Current K-line (latest)", records[records.size() - 1], "Previous K-line", records[records.size() - 2]);
}
Datos de barra de la línea K de salida:
function main() {
var records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
}
def main():
records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
void main() {
auto records = exchange.GetRecords("BTC_USDT.swap", 60, 100);
Log(records);
}
Cuando el configuradoexchange
objeto es un objeto de intercambio de futuros, utilizar elsymbol
, period
, ylimit
los parámetros para solicitar los datos de línea K de un producto específico (producto futuro).
El período predeterminado de la línea K se puede establecer en las páginas de backtest y de operaciones reales.exchange.GetRecords()
Si no se especifica ningún parámetro cuando se llama la función, se devolverán los datos de línea K correspondientes de acuerdo con el período de línea K establecido en el backtest y los parámetros reales del mercado.
El valor de retorno es una matriz deRecord
En el caso de las estructuras, los datos de línea K devueltos se acumularán con el tiempo, el límite superior de las barras de línea K acumuladas se ve afectado por laexchange.SetMaxBarLen()
El límite predeterminado es de 5000 bares cuando no está establecido. Cuando los datos de la línea K alcanzan el límite de acumulación de la barra de la línea K, se actualizarán agregando una barra de la línea K y eliminando la barra de la línea K más temprana (por ejemplo, cola de entrada/salida).Trade
Las líneas K se generan en tiempo real.
Si la interfaz de línea K del intercambio admite consultas de paginación, se realizarán varias solicitudes de API al llamar alexchange.SetMaxBarLen()
función para establecer una longitud de línea K más grande.
Cuando elexchange.GetRecords()
Cuando la función se llama inicialmente, el número de barras de línea K obtenidas difiere entre la prueba posterior y la negociación real: - El sistema de prueba posterior obtendrá un cierto número de barras de línea K antes del inicio del intervalo de tiempo de prueba posterior por adelantado (el valor predeterminado es 5000, la configuración del sistema de prueba posterior y la cantidad de datos afectarán al número final devuelto), como los datos iniciales de línea K. - El número de barras de línea K obtenidas durante la negociación real se basa en la cantidad máxima de datos que se pueden obtener de la interfaz de línea K de la bolsa.
Elperiod
Si el parámetro se establece en 5, que es una solicitud para obtener datos de línea K con un período de 5 segundos.period
el parámetro no es divisible por 60 (es decir, el período representado no es divisible por minutos).exchange.GetTrades()
En el caso de las transacciones, los datos de registro de transacciones deben ser obtenidos y los datos de línea K requeridos sintetizados.period
Si el parámetro es divisible por 60, entonces los datos de línea K requeridos se sintetizan utilizando un mínimo de datos de línea K de 1 minuto (si es posible, los datos de línea K requeridos se sintetizan utilizando un período más largo).
La simulación de nivel de backtesting en el sistema de backtesting requiere la configuración del período de la línea K subyacente (cuando el sistema de backtesting simula la backtesting de nivel, los datos de la línea K correspondientes se utilizan para generar datos de Tick de acuerdo con el período de la línea K subyacente).
ElC++
lenguaje tiene el siguiente ejemplo de código si necesita construir sus propios datos de línea K:
#include <sstream>
void main() {
Records r;
r.Valid = true;
for (auto i = 0; i < 10; i++) {
Record ele;
ele.Time = i * 100000;
ele.High = i * 10000;
ele.Low = i * 1000;
ele.Close = i * 100;
ele.Open = i * 10;
ele.Volume = i * 1;
r.push_back(ele);
}
// Output display: Records[10]
Log(r);
auto ma = TA.MA(r,10);
// Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
Log(ma);
}
Los intercambios que no apoyan laexchange.GetRecords()
Función:
Nombre de la función | Intercambios al contado sin soporte | Exchanges de futuros no respaldados |
---|---|---|
Obtener registros | Zaif / Coincheck / BitFlyer. ¿ Qué es esto? | El valor de las pérdidas |
Se trata de un sistema de intercambio de datos que permite a los operadores de los mercados de datos de obtener información sobre las operaciones de intercambio de datos.
Obtener el período de línea K establecido en la página web de la plataforma de comercio de FMZ Quant cuando backtesting y ejecutar la estrategia en el comercio en vivo, es decir, el período de línea K predeterminado utilizado al llamar a laexchange.GetRecords()
Función sin pasar parámetros.
Período de línea K en segundos, valor entero en segundos. Número
cambio.GetPeriod (()
function main() {
// For example, the K-line period set on the website page of the FMZ Quant Trading platform during backtesting and live trading is 1 hour.
var period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
}
def main():
period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
void main() {
auto period = exchange.GetPeriod();
Log("K-line period:", period / (60 * 60.0), "hours");
}
¿Por qué no lo haces?
Establezca la longitud máxima de la línea K.
En el caso de los productos de la clase A, el valor de la diferenciación será el mismo.
El parámetron
se utiliza para especificar la longitud máxima de la línea K.
No
verdadero
Número
function main() {
exchange.SetMaxBarLen(50)
var records = exchange.GetRecords()
Log(records.length, records)
}
def main():
exchange.SetMaxBarLen(50)
r = exchange.GetRecords()
Log(len(r), r)
void main() {
exchange.SetMaxBarLen(50);
auto r = exchange.GetRecords();
Log(r.size(), r[0]);
}
Elexchange.SetMaxBarLen()
La función afecta dos aspectos para el tiempo de ejecución de la estrategia de criptomonedas:
¿Por qué no lo haces?
Obtener el contenido original devuelto por el últimorest
solicitud para el objeto de intercambio actual ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
Los datos de respuesta para elrest
el pedido.
la cuerda
¿Qué está pasando?
function main(){
exchange.GetAccount();
var obj = JSON.parse(exchange.GetRawJSON());
Log(obj);
}
import json
def main():
exchange.GetAccount()
obj = json.loads(exchange.GetRawJSON())
Log(obj)
void main() {
auto obj = exchange.GetAccount();
// C++ does not support the GetRawJSON function
Log(obj);
}
Elexchange.GetRawJSON()
Las estrategias de negociación en el mercado de divisas no soportan esta función.C++
language.
¿Qué es lo que está pasando?
Obtener el tipo de cambio actualmente establecido para el objeto de intercambio.
El valor actual del tipo de cambio del objeto de cambio. Número
El cambio.GetRate()
function main(){
Log(exchange.GetTicker())
// Set up exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
}
def main():
Log(exchange.GetTicker())
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
void main() {
Log(exchange.GetTicker());
exchange.SetRate(7);
Log(exchange.GetTicker());
Log("Current exchange rate:", exchange.GetRate());
}
Si esexchange.SetRate()
No ha sido convocado para fijar el tipo de conversión, elexchange.GetRate()
La función devuelve un valor de tasa predeterminado de 1. Es decir, los datos relacionados con la moneda que se muestra actualmente (quoteCurrency) no se han convertido.
Si se ha establecido un valor de tipo de cambio utilizandoexchange.SetRate()
, por ejemplo,exchange.SetRate(7)
Luego, toda la información de precios, tales como cotizaciones, profundidades y precios de pedido obtenidos a través delexchange
el objeto de cambio se convertirá multiplicando por el tipo de cambio establecido7
- ¿ Por qué?
Siexchange
corresponde a un intercambio con USD como moneda denominada, después de llamarexchange.SetRate(7)
, todos los precios en el mercado en vivo se convertirán a un precio cercano al yuan por multiplicación7
En este punto, el valor del tipo de cambio obtenido utilizandoexchange.GetRate()
es7
.
¿Por qué no lo haces?
Elexchange.SetData()
La función se utiliza para establecer los datos cargados cuando se ejecuta la estrategia.
La longitud de la cadena después del parámetrovalue
Codificación JSON.
Número
intercambio.Configurar datos (clave, valor)
Nombre de la recopilación de datos.
llave
verdadero
la cuerda
Los datos que deben cargarse por elexchange.SetData()
La estructura de datos es la misma que el formato de datos solicitado por elexchange.GetData()
Función al solicitar datos externos, es decir:"schema": ["time", "data"]
- ¿ Por qué?
Valor
verdadero
el conjunto
/*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() {
var data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while(true) {
Log(exchange.GetData("test"))
Sleep(1000)
}
}
'''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"}]
'''
def main():
data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while True:
Log(exchange.GetData("test"))
Sleep(1000)
/*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"}]
*/
void main() {
json data = R"([
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
])"_json;
exchange.SetData("test", data);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000);
}
}
Se requiere que los datos para el parámetrovalue
Se trata de un documento que debe tener el mismo formato que eldata
variable en el siguiente ejemplo.1579622400000
corresponde al tiempo2020-01-22 00:00:00
, y que cuando el programa de estrategia se ejecuta después de este tiempo, llamar a laexchange.GetData()
Función para obtener los datos antes de la próxima marca de tiempo de los datos1579708800000
, es decir, el tiempo2020-01-23 00:00:00
Lo que obtienes es[1579622400000, 123]
el contenido de esos datos, a medida que el programa continúa ejecutándose, el tiempo cambia, y así sucesivamente para obtener el elemento de datos por elemento. en el siguiente ejemplo, en tiempo de ejecución (backtesting o comercio en vivo), el momento actual alcanza o excede la marca de tiempo1579795200000
, elexchange.GetData()
La función se llama y el valor de retorno es:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
corresponde a1579795200000
en los datos[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
corresponde a los datos["abc", 123, {"price": 123}]]
En el[1579795200000, ["abc", 123, {"price": 123}]]
.
Los datos cargados pueden ser cualquier indicador económico, datos de la industria, indicadores relevantes, etc., utilizados para la evaluación cuantitativa de la estrategia de toda la información cuantificable.
¿Por qué no lo haces?
Elexchange.GetData()
La función se utiliza para obtener datos cargados por elexchange.SetData()
Función o proporcionado por un enlace externo.
Registros en la recopilación de datos. Objeto
El cambio.GetData ((clave) intercambio.GetData ((clave, tiempo de espera)
El nombre de la recopilación de datos. llave verdadero la cuerda Se utiliza para establecer el tiempo de caché en milisegundos. tiempo de espera falsos Número
/*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)
}
}
'''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"}]
'''
def main():
exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
while True:
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
/*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"}]
*/
void main() {
json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
arr[0][1] = _D(1579536000000);
arr[1][1] = _D(1579622400000);
arr[2][1] = _D(1579708800000);
exchange.SetData("test", arr);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000 * 60 * 60 * 24);
}
}
La llamada para obtener los datos escritos directamente.
/*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() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
}
}
'''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"}]
'''
def main():
while True:
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
/*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"}]
*/
void main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Sleep(1000);
}
}
Apoya la solicitud de datos a través de enlaces externos, el formato de los datos solicitados para:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
¿Dónde está?schema
es el formato de datos de cada registro en el cuerpo de los datos cargados, que se fija en["time", "data"]
correspondiente al formato de los datos de entrada por entrada en eldata
el atributo.
Lo que se almacena en eldata
atributo es el cuerpo de los datos, con cada entrada que consta de una marca de tiempo de nivel de milisegundos y el contenido de los datos (que pueden ser cualquier dato codificable en JSON).
El programa de servicio para pruebas, escrito en Go:
package main
import (
"fmt"
"net/http"
"encoding/json"
)
func Handle (w http.ResponseWriter, r *http.Request) {
defer func() {
fmt.Println("req:", *r)
ret := map[string]interface{}{
"schema": []string{"time","data"},
"data": []interface{}{
[]interface{}{1579536000000, "abc"},
[]interface{}{1579622400000, 123},
[]interface{}{1579708800000, map[string]interface{}{"price":123}},
[]interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
},
}
b, _ := json.Marshal(ret)
w.Write(b)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
Los datos de respuesta del programa al recibir la solicitud:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Código de la estrategia de ensayo:
function main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
}
def main():
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
void main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
}
El método de llamada para obtener los datos de un enlace externo.
function main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data")) // The xxx part of the link is the code of the query data, here xxx is an example.
}
def main():
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))
void main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"));
}
Solicitar datos para una consulta creada en la plataformaDatos y datos, solicitando que el formato de datos de la respuesta sea (debe contener tiempo, campos de datos descritos en el esquema):
{
"data": [],
"schema": ["time", "data"]
}
El campo exchange.GetData()
Cuando se llama una función, se devuelve un objeto JSON, por ejemplo:{"Time":1579795200000, "Data":"..."}
.
Obtener los datos a la vez para backtesting y almacenar en caché un minuto de datos para el comercio en vivo.from
(tiempo marcado en segundos),to
(tiempo marcado en segundos) a la solicitud, parámetros tales comoperiod
(período de línea K subyacente, marcado en milisegundos) se utilizan para determinar el período de tiempo durante el cual se deben adquirir los datos.
¿Qué es lo que está pasando?
Elexchange.GetMarkets()
La función se utiliza para obtener información sobre el mercado de divisas.
Diccionario que contiene la estructura {@struct/Market Market}. Objeto
En cambio.GetMarkets ((()
function main() {
var markets = exchange.GetMarkets()
var currency = exchange.GetCurrency()
// Get the current contract code can also use exchange.GetContractType() function
var ct = "swap"
var key = currency + "." + ct
Log(key, ":", markets[key])
}
def main():
markets = exchange.GetMarkets()
currency = exchange.GetCurrency()
ct = "swap"
key = currency + "." + ct
Log(key, ":", markets[key])
void main() {
auto markets = exchange.GetMarkets();
auto currency = exchange.GetCurrency();
auto ct = "swap";
auto key = currency + "." + ct;
Log(key, ":", markets[key]);
}
Ejemplo de llamada a un objeto de cambio de futuros:
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
var tbl1 = {
type: "table",
title: "markets1",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets1 = exchange.GetMarkets()
for (var key in markets1) {
var market = markets1[key]
tbl1.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
var tbl2 = {
type: "table",
title: "markets2",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets2 = exchange.GetMarkets()
for (var key in markets2) {
var market = markets2[key]
tbl2.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
tbl1 = {
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets1 = exchange.GetMarkets()
for key in markets1:
market = markets1[key]
tbl1["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tbl2 = {
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets2 = exchange.GetMarkets()
for key in markets2:
market = markets2[key]
tbl2["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
json tbl1 = R"({
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets1 = exchange.GetMarkets();
for (auto& [key, market] : markets1.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl1["rows"].push_back(arrJson);
}
for (const auto& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
json tbl2 = R"({
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets2 = exchange.GetMarkets();
for (auto& [key, market] : markets2.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Utilice el objeto de intercambio de futuros para llamar a laexchange.GetMarkets()
Antes de llamar a cualquier función de mercado, GetMarkets solo devuelve los datos de mercado del par de operaciones predeterminado actual. Después de llamar a la función de mercado, devuelve los datos de mercado de todas las variedades solicitadas. Puede consultar el siguiente ejemplo de prueba:
Elexchange.GetMarkets()
función devuelve un diccionario con una clave llamada el nombre de la variedad comercial, y para fijaciones al contado formateadas como un par comercial, por ejemplo:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
Para los intercambios de contratos de futuros, ya que puede haber múltiples contratos para una sola variedad, por ejemplo:BTC_USDT
En el caso de los contratos de comercio de pares, hay contratos perpetuos, contratos trimestrales, etc.exchange.GetMarkets()
función devuelve un diccionario con el nombre clave del par combinado con el código del contrato, por ejemplo:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
La función admite operaciones en vivo, sistema de backtesting.exchange.GetMarkets()
La función devuelve información de mercado sólo para las variedades que se negocian en línea en el intercambio.exchange.GetMarkets()
La función no admite contratos de opciones.Los intercambios que no apoyan laexchange.GetMarkets()
Función:
Nombre de la función | Intercambios al contado sin soporte | Exchanges de futuros no respaldados |
---|---|---|
Obtener Mercados | Coincheck / Bithumb / BitFlyer y otros | – |
¿Qué es esto?
Elexchange.GetTickers()
La función se utiliza para obtener datos de ticker agregados de intercambio (la matriz de la estructura {@struct/Ticker Ticker}).exchange
devuelve datos de ticker para todos los pares de operaciones cuando se trata de un objeto de intercambio al contado;exchange
devuelve datos de ticker para todos los contratos cuando se trata de un objeto de intercambio de futuros.
Elexchange.GetTickers()
función devuelve una matriz de {@struct/Ticker Ticker} estructuras cuando tiene éxito en la solicitud de datos, y nulo cuando falla.
Las matrices de {@struct/Ticker Ticker}, valores nulos
El intercambio.GetTickers ((()
function main() {
var tickers = exchange.GetTickers()
if (tickers && tickers.length > 0) {
Log("Number of tradable items on the exchange:", tickers.length)
}
}
def main():
tickers = exchange.GetTickers()
if tickers and len(tickers) > 0:
Log("Number of tradable items on the exchange:", len(tickers))
void main() {
auto tickers = exchange.GetTickers();
if (tickers.Valid && tickers.size() > 0) {
Log("Number of tradable items on the exchange:", tickers.size());
}
}
Llama alexchange.GetTickers()
Función para obtener datos de mercado agregados.
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
// Before requesting other trading pair market data, call Get Tickers
var tickers1 = exchange.GetTickers()
var tbl1 = {type: "table", title: "tickers1", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers1) {
tbl1.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
// Request market data for other trading pairs
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
// Call GetTickers again
var tickers2 = exchange.GetTickers()
var tbl2 = {type: "table", title: "tickers2", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers2) {
tbl2.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
tickers1 = exchange.GetTickers()
tbl1 = {"type": "table", "title": "tickers1", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers1:
tbl1["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tickers2 = exchange.GetTickers()
tbl2 = {"type": "table", "title": "tickers2", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers2:
tbl2["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
json tickerToJson(const Ticker& ticker) {
json arrJson;
arrJson.push_back(ticker.Symbol);
arrJson.push_back(ticker.High);
arrJson.push_back(ticker.Open);
arrJson.push_back(ticker.Low);
arrJson.push_back(ticker.Last);
arrJson.push_back(ticker.Buy);
arrJson.push_back(ticker.Sell);
arrJson.push_back(ticker.Time);
arrJson.push_back(ticker.Volume);
return arrJson;
}
void main() {
std::string arrSymbol[] = {"ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"};
auto tickers1 = exchange.GetTickers();
json tbl1 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl1["title"] = "tickers1";
for (const auto& ticker : tickers1) {
json arrJson = tickerToJson(ticker);
tbl1["rows"].push_back(arrJson);
}
for (const std::string& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
auto tickers2 = exchange.GetTickers();
json tbl2 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl2["title"] = "tickers2";
for (const auto& ticker : tickers2) {
json arrJson = tickerToJson(ticker);
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Utilice el objeto de intercambio spot y llame alexchange.GetTickers()
Antes de llamar a cualquier función de mercado, GetTickers solo devuelve los datos de ticker del par de operaciones predeterminado actual. Después de llamar a la función de mercado, devuelve los datos de ticker de todas las variedades solicitadas. Puede consultar el siguiente ejemplo de prueba:
Los intercambios que no apoyan laexchange.GetTickers()
Función:
Nombre de la función | Intercambios al contado sin soporte | Exchanges de futuros no respaldados |
---|---|---|
Los GetTickers | Zaif / WOO / Géminis / Coincheck / BitFlyer / Bibox | Los futuros de los bancos centrales de los Estados miembros que no cumplan los requisitos de la Directiva 2009/138/CE se considerarán como activos de la entidad de crédito. |
¿Por qué no lo haces?
Registro Comercio