Obter a estrutura {@struct/Ticker Ticker} do local ou contrato correspondente ao par de negociação atualmente definido, código do contrato, ou seja, os dados do ticker.GetTicker ()
função é uma função membro do objeto de troca {@var/EXCHANGE exchange}, o uso deexchange
funções (métodos) de membros de objeto relacionadas apenas comexchange
, e não será repetido no documento.
Oexchange.GetTicker()
A função retorna a estrutura {@struct/Ticker Ticker} quando a solicitação de dados é bem-sucedida e retorna o valor nulo quando a solicitação de dados falha.
{@struct/Ticker Ticker}, valor nulo
troca.GetTicker ((() troca.GetTicker (símbolo)
O parâmetrosymbol
É utilizado para especificar o par de negociação específico e o código do contrato correspondente aos dados {@struct/Ticker Ticker} solicitados.
Ao ligar para oexchange.GetTicker(symbol)
função,exchange
Se você precisar solicitar dados de mercado com a moeda denominada como USDT e a moeda de negociação como BTC, o parâmetrosymbol
é:"BTC_USDT"
, e o formato é o formato dos pares de negociação definido pela plataforma FMZ.
Ao ligar para oexchange.GetTicker(symbol)
função,exchange
Se você precisa solicitar os dados de mercado do contrato perpétuo padrão U do BTCsymbol
é:"BTC_USDT.swap"
, e o formato é uma combinação dospar de negociaçãoeCódigo do contratodefinidos pela plataforma FMZ, separados pelo símbolo exchange.GetTicker(symbol)
função,exchange
Se você precisar solicitar os dados de mercado do contrato de opção U-standard do BTCsymbol
é:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como exemplo), o formato é a combinação dopar de negociaçãodefinidos pela plataforma FMZ e o código do contrato de opção específico definido pela bolsa, separados pelo carácter
símbolo Falso cordel
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 os objectos de troca de futuros (ou seja,exchange
ouexchanges[0]
), é necessário definir o código do contrato utilizando oexchange.SetContractType()
função antes de chamar a função ticker, que não será repetida.
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);
}
Utilize osymbol
Parâmetro para solicitar dados de mercado para um símbolo específico (símbolo spot).
OTicker
dados devolvidos peloexchange.GetTicker()
O sistema de backtesting é um sistema de testes de desempenho.High
eLow
Os valores simulados são os valores tomados da venda e da compra no mercado nesse momento.Ticker
dados devolvidos peloexchange.GetTicker()
O mercado real é o mercado em que aHigh
eLow
valores são baseados nos dados devolvidos pela troca encapsuladaTick
Interface, que inclui os preços mais altos e mais baixos dentro de um determinado período (normalmente um período de 24 horas).
As trocas que não suportam oexchange.GetTicker()
Função:
Nome da função | Trocas spot não suportadas | Atividades de negociação |
---|---|---|
GetTicker | – | Futuros_Aevo |
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}
Obter a estrutura {@struct/Depth Depth} do local ou contrato correspondente ao par de negociação atualmente definido, código do contrato, ou seja, dados da carteira de ordens.
Oexchange.GetDepth()
A função retorna a estrutura {@struct/Depth Depth} se a solicitação de dados for bem-sucedida e retorna nulo se a solicitação de dados falhar.
{@struct/Depth Depth}, valor nulo
troca.GetDepth ((() troca.GetDepth (símbolo)
O parâmetrosymbol
é usado para especificar o par de negociação específico e o código do contrato correspondente aos dados {@struct/Depth Depth} solicitados. Se este parâmetro não for passado, os dados do livro de ordens do par de negociação atualmente definido e o código do contrato serão solicitados por padrão.exchange.GetDepth(symbol)
função,exchange
Se você precisar solicitar para obter os dados da carteira de ordens com a moeda denominada como USDT e a moeda da transação como BTC, o parâmetrosymbol
é:"BTC_USDT"
, e o formato é o formato do par de negociação definido pela plataforma FMZ.exchange.GetDepth(symbol)
função,exchange
Se você precisa solicitar os dados do livro de pedidos do contrato perpétuo padrão U do BTCsymbol
é:"BTC_USDT.swap"
, e o formato é uma combinação dospar de negociaçãoeCódigo do contratodefinidos pela plataforma FMZ, separados pelo carácter exchange.GetDepth(symbol)
função,exchange
Se você precisar solicitar os dados do livro de ordens do contrato de opção U-standard do BTCsymbol
é:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como exemplo), o formato é a combinação dopar de negociaçãodefinidos pela plataforma FMZ e o código do contrato de opção específico definido pela bolsa, separados pelo 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);
}
Testeexchange.GetDepth()
Função:
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);
}
Quando o configuradoexchange
Objeto é um objeto de troca de futuros, usar osymbol
Parâmetro para solicitar os dados do livro de ordens de um símbolo específico (símbolo de futuros).
No sistema de backtesting, os dados de cada grau são devolvidos peloexchange.GetDepth()
função quando se utiliza oSimulação de TicO sistema de backtesting é um sistema de simulação de valores.exchange.GetDepth()
função quando se utiliza oCarrapatos reaisO backtesting é um instante profundo de segundo nível.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Obter a matriz de estrutura {@struct/Trade Trade} do ponto ou contrato correspondente ao par de negociação atualmente definido, código do contrato, ou seja, os dados da transação de mercado.
Oexchange.GetTrades()
A função retorna uma matriz de estruturas {@struct/Trade Trade} se a solicitação de dados for bem-sucedida e retorna valores nulos se a solicitação de dados falhar.
{@struct/Trade Trade} matrizes, valores nulos
Troca.GetTrades ((() troca.GetTrades (símbolo)
O parâmetrosymbol
é usado para especificar o par de negociação específico e o código do contrato correspondente aos dados de matriz {@struct/Trade Trade} solicitados. Se este parâmetro não for passado, os dados de registro de transação mais recentes do par de negociação atualmente definido e o código do contrato serão solicitados por padrão.exchange.GetTrades(symbol)
função,exchange
Se você precisar solicitar para obter os dados da carteira de ordens com a moeda denominada como USDT e a moeda de negociação como BTC, o parâmetrosymbol
é:"BTC_USDT"
, e o formato é o formato do par de negociação definido pela plataforma FMZ.exchange.GetTrades(symbol)
função,exchange
Se você precisa solicitar os dados do livro de pedidos do contrato perpétuo padrão U do BTCsymbol
é:"BTC_USDT.swap"
, e o formato é uma combinação dospar de negociaçãoeCódigo do contratodefinidos pela plataforma FMZ, separados pelo carácter exchange.GetTrades(symbol)
função,exchange
Se você precisar solicitar os dados do livro de ordens do contrato de opção U-standard do BTCsymbol
é:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como exemplo), o formato é a combinação dopar de negociaçãodefinidos pela plataforma FMZ e o código do contrato de opção específico definido pela bolsa, separados pelo 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);
}
Teste oexchange.GetTrades()
Função:
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);
}
Quando o configuradoexchange
Objeto é um objeto de troca de futuros, usar osymbol
Parâmetro para solicitar dados de registo de transacções de mercado para um símbolo específico (símbolo de futuros).
exchange.GetTrades()
A função para obter os pares de negociação atuais, o histórico de transações do mercado (não o seu próprio) correspondente aos contratos. Algumas bolsas não suportam essa função, e os dados específicos retornados é quanto do intervalo de registros de transações depende da troca e precisa ser manuseado de acordo com a situação específica.exchange.GetRecords ()
A função retorna a mesma ordem de dados, ou seja, o último elemento da matriz é o dado mais próximo do tempo atual.
Oexchange.GetTrades()
função retorna uma matriz vazia ao usarSimulação de TicOs dados devolvidos pelo sistema de backtesting são os dados de base de dados que o sistema de backtesting retorna.exchange.GetTrades()
Função no momento da utilizaçãoCarrapatos reaisO backtesting no sistema de backtesting é os dados instantâneos do fluxo de ordens, ou seja, a matriz de estrutura {@struct/Trade Trade}.
As trocas que não suportam oexchange.GetTrades()
Função:
Nome da função | Trocas spot não suportadas | Atividades de negociação |
---|---|---|
GetTrades | – | Futures_BitMart / Futures_Bibox |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Obter a matriz de estrutura {@struct/Record Record} do ponto ou contrato correspondente ao par de negociação atualmente definido, código do contrato, ou seja, dados de linha K.
Oexchange.GetRecords()
A função retorna uma matriz de estruturas {@struct/Record Record} quando a solicitação de dados é bem-sucedida e retorna valores nulos quando a solicitação de dados falha.
{@struct/Record Record} matrizes, valores nulos
troca.GetRecords ((() Troca.GetRecords (símbolo) exchange.GetRecords (símbolo, ponto) exchange.GetRecords (símbolo, ponto, limite) troca.GetRecords (período) troca.GetRecords (período, limite)
O parâmetrosymbol
é usado para especificar o par de negociação específico e o código do contrato correspondente aos dados de matriz {@struct/Record Record} solicitados. Se este parâmetro não for passado, os dados da linha K do par de negociação atualmente definido e o código do contrato serão solicitados por padrão.exchange.GetRecords(symbol)
função,exchange
Se você precisar solicitar para obter os dados com a moeda denominada como USDT e a moeda da transação como BTC, o parâmetrosymbol
é:"BTC_USDT"
, e o formato é o formato do par de negociação definido pela plataforma FMZ.exchange.GetRecords(symbol)
função,exchange
Se você precisa solicitar os dados do livro de pedidos do contrato perpétuo padrão U do BTCsymbol
é:"BTC_USDT.swap"
, e o formato é uma combinação dospar de negociaçãoeCódigo do contratodefinidos pela plataforma FMZ, separados pelo carácter exchange.GetRecords(symbol)
função,exchange
Se você precisar solicitar os dados do livro de ordens do contrato de opção U-standard do BTCsymbol
é:"BTC_USDT.BTC-240108-40000-C"
(tomando Binance Option BTC-240108-40000-C como exemplo), o formato é a combinação dopar de negociaçãodefinidos pela plataforma FMZ e o código do contrato de opção específico definido pela bolsa, separados pelo carácter period
especifica o período dos dados de linha K solicitados, por exemplo: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}, etc. O valor do parâmetroperiod
Se este parâmetro não for passado, o período dos dados de linha K solicitados por padrão é o período de linha K padrão da configuração atual de estratégia em tempo real / backtest.
período
Falso
Número
O parâmetrolimit
é usado para especificar o comprimento dos dados de linha K solicitados. Se esse parâmetro não for passado, o comprimento de solicitação padrão é o número máximo de barras de linha K solicitadas em um momento da interface de linha K de troca. Este parâmetro pode causar a busca para consultar os dados de linha K de troca e o consumo de tempo da chamada de função aumentará durante a consulta de busca.
limite
Falso
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]);
}
Obtenha dados da linha K para um 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]);
}
Dados de barra de linha K de saída:
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);
}
Quando o configuradoexchange
Objeto é um objeto de troca de futuros, usar osymbol
, period
, elimit
Parâmetros para solicitar os dados da linha K de um produto específico (produto futuro).
O período de linha K padrão pode ser definido nas páginas de backtest e de negociação real.exchange.GetRecords()
Se nenhum parâmetro for especificado quando a função for chamada, os dados de linha K correspondentes serão devolvidos de acordo com o período de linha K definido no backtest e nos parâmetros reais do mercado.
O valor de retorno é uma matriz deRecord
Os dados de linha K retornados serão acumulados ao longo do tempo, o limite superior das barras de linhaexchange.SetMaxBarLen()
O limite padrão é de 5000 bares quando não está definido. Quando os dados da linha K atingem o limite de acumulação da barra da linha K, eles serão atualizados adicionando uma barra da linha K e excluindo a primeira barra da linha K (por exemplo, fila de entrada/saída).Trade
A utilização de um conjunto de linhas K (ou de uma matriz estruturada) em tempo real para gerar linhas K.
Se a interface K-line do exchange suportar consultas de paginação, várias solicitações de API serão feitas ao chamar oexchange.SetMaxBarLen()
função para definir um maior comprimento da linha K.
Quando oexchange.GetRecords()
A função é chamada inicialmente, o número de barras de linha K obtidas difere entre backtesting e negociação real: - O sistema de backtesting obterá um certo número de barras de linha K antes do início do intervalo de tempo de backtesting com antecedência (o padrão é 5000, as configurações do sistema de backtesting e a quantidade de dados afetarão o número final retornado), como os dados iniciais de linha K. - O número de barras de linha K obtidas durante a negociação real é baseado na quantidade máxima de dados que podem ser obtidos a partir da interface de linha K da bolsa.
Operiod
O parâmetro é definido em 5, que é uma solicitação para obter dados de linha K com um período de 5 segundos.period
O sistema subjacente utiliza a interface relevante deexchange.GetTrades()
Os dados de registo de transacções são obtidos através de um sistema de registo de transacções, que permite obter os dados de registo de transacções e sintetizar os dados de linha K necessários.period
Se o parâmetro for divisível por 60, os dados de linha K necessários são sintetizados utilizando um mínimo de dados de linha K de 1 minuto (se possível, os dados de linha K necessários são sintetizados utilizando um período maior).
O backtesting de nível simulado no sistema de backtesting requer a configuração do período de linha K subjacente (quando o sistema de backtesting simula o backtesting de nível, os dados de linha K correspondentes são usados para gerar dados Tick de acordo com o período de linha K subjacente definido).
OC++
linguagem tem o seguinte exemplo de código se você precisa construir seus próprios dados de linha 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);
}
As trocas que não suportam oexchange.GetRecords()
Função:
Nome da função | Trocas spot não suportadas | Atividades de negociação |
---|---|---|
GetRecords | Zaif / Coincheck / BitFlyer | Futuros_Aevo |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}
Obter o período de linha K definido na página do site da plataforma de negociação FMZ Quant quando backtesting e executando a estratégia em negociação ao vivo, ou seja, o período de linha K padrão usado ao chamar oexchange.GetRecords()
Função sem passar parâmetros.
Período de linha K em segundos, valor inteiro em segundos. Número
troca.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");
}
Não, não, não, não.
Definir o comprimento máximo da linha K.
troca.SetMaxBarLen ((n)
O parâmetron
é utilizada para especificar o comprimento máximo da linha K.
n
verdade
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]);
}
Oexchange.SetMaxBarLen()
A função afeta dois aspectos para o tempo de execução da estratégia de criptomoedas:
Não, não, não, não.
Obter o conteúdo original devolvido pela últimarest
solicitação do objeto de troca atual ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
Os dados de resposta para orest
pedido.
cordel
troca.GetRawJSON()
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);
}
Oexchange.GetRawJSON()
A função não é suportada por estratégias noC++
language.
{@var/EXCHANGE exchange}
Obter a taxa de câmbio atualmente definida para o objeto de troca.
Valor corrente da taxa de câmbio do objeto de câmbio. Número
troca.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());
}
Seexchange.SetRate()
A taxa de conversão não foi fixada, oexchange.GetRate()
A função retorna um valor de taxa padrão de 1, ou seja, os dados relacionados com a moeda atualmente exibida (quoteCurrency) não foram convertidos.
Se o valor da taxa de câmbio tiver sido definido utilizandoexchange.SetRate()
, por exemplo,exchange.SetRate(7)
Em seguida, todas as informações de preços, tais como cotações, profundidades e preços de encomenda obtidos através doexchange
Objeto de câmbio será convertido multiplicando pela taxa de câmbio definida7
- Não.
Seexchange
corresponde a uma troca com USD como moeda denominada, após a chamadaexchange.SetRate(7)
, todos os preços no mercado ao vivo serão convertidos para um preço próximo do yuan7
Neste ponto, o valor da taxa de câmbio obtido utilizandoexchange.GetRate()
é7
.
{@fun/Trade/exchange.SetRate exchange.SetRate}
Oexchange.SetData()
A função é usada para definir os dados carregados quando a estratégia está em execução.
O comprimento da cadeia após o parâmetrovalue
Codificação JSON.
Número
exchange.SetData ((chave, valor)
Nome da recolha de dados.
Chave
verdade
cordel
Os dados a carregar peloexchange.SetData()
A estrutura de dados é a mesma que o formato de dados solicitado peloexchange.GetData()
Função de solicitação de dados externos, ou seja:"schema": ["time", "data"]
- Não.
Valor
verdade
matriz
/*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);
}
}
Requer que os dados para o parâmetrovalue
ser do mesmo formato que odata
Você pode ver que a marca de tempo1579622400000
corresponde ao tempo2020-01-22 00:00:00
, e que quando o programa de estratégia é executado após este tempo, chamar oexchange.GetData()
função para obter os dados antes do próximo carimbo de tempo de dados1579708800000
, isto é, tempo2020-01-23 00:00:00
O que ganhas é[1579622400000, 123]
O conteúdo desses dados, como o programa continua a ser executado, o tempo muda, e assim por diante para obter o item de dados por item. no exemplo a seguir, no tempo de execução (backtesting ou negociação ao vivo), o momento atual atinge ou excede o timestamp1579795200000
, oexchange.GetData()
A função é chamada e o valor de retorno é:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
corresponde a1579795200000
em dados[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
corresponde aos dados["abc", 123, {"price": 123}]]
em[1579795200000, ["abc", 123, {"price": 123}]]
.
Os dados carregados podem ser quaisquer indicadores económicos, dados do setor, indicadores relevantes, etc., utilizados para a avaliação quantitativa da estratégia de todas as informações quantificáveis.
Não, não, não, não.
Oexchange.GetData()
função é usada para obter dados carregados peloexchange.SetData()
função ou fornecida por uma ligação externa.
Registros na recolha de dados. Objeto
troca.GetData (chave) Troca.GetData (chave, tempo de espera)
Nome da recolha de dados. Chave verdade cordel Usado para definir o tempo de expiração do cache em milissegundos. tempo de espera Falso 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);
}
}
A chamada para obter os dados escritos diretamente.
/*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);
}
}
Suporte para solicitar dados através de ligações externas, o formato dos dados solicitados para:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Onde?schema
é o formato de dados para cada registo no corpo dos dados carregados, que é fixado em["time", "data"]
correspondente ao formato dos dados de entrada por entrada nodata
atributo.
O que é armazenado nodata
O atributo é o corpo dos dados, com cada entrada constituída por uma marca de tempo de nível de milissegundos e o conteúdo dos dados (que pode ser qualquer dado codificável em JSON).
O programa de serviço para testes, escrito em 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)
}
Os dados de resposta do programa após a recepção da solicitação:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Código da estratégia de ensaio:
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"));
}
Método de chamada para obter os dados de um link 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"));
}
Pedir dados para uma consulta criada na plataformadados, solicitando que o formato dos dados da resposta seja (deve conter tempo, campos de dados descritos no esquema):
{
"data": [],
"schema": ["time", "data"]
}
O campo exchange.GetData()
função é chamada, um objeto JSON é devolvido, por exemplo:{"Time":1579795200000, "Data":"..."}
.
Obter os dados de uma só vez para backtesting e cache um minuto de dados para negociação ao vivo.from
(horário em segundos),to
(timestamped em segundos) para o pedido, parâmetros tais comoperiod
(período de linha K subjacente, marcado em milissegundos) são utilizados para determinar o período de tempo durante o qual os dados devem ser adquiridos.
{@fun/Market/exchange.SetData exchange.SetData}
Oexchange.GetMarkets()
A função é utilizada para obter informações sobre o mercado de câmbio.
Dicionário que contém a estrutura {@struct/Market Market}. Objeto
troca.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]);
}
Exemplo de chamada para um objeto de câmbio 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() + "`");
}
Use o objeto de troca de futuros para chamar oexchange.GetMarkets()
Antes de chamar qualquer função de mercado, o GetMarkets retorna apenas os dados de mercado do par de negociação padrão atual. Depois de chamar a função de mercado, retorna os dados de mercado de todas as variedades solicitadas. Você pode se referir ao seguinte exemplo de teste:
Oexchange.GetMarkets()
função retorna um dicionário com uma chave denominada o nome da variedade comercial e para as correções spot formatadas como um par comercial, por exemplo:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
Para as trocas de contratos futuros, uma vez que podem existir vários contratos para uma única variedade, por exemplo:BTC_USDT
Os contratos perpétuos, os contratos trimestrais e assim por diante.exchange.GetMarkets()
A função retorna um dicionário com o nome da chave do par combinado com o código do contrato, por exemplo:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
Função suporta negociações ao vivo, sistema de backtesting.exchange.GetMarkets()
A função devolve informações de mercado apenas para as variedades que são negociadas on-line na bolsa.exchange.GetMarkets()
A função não suporta contratos de opções.As trocas que não suportam oexchange.GetMarkets()
Função:
Nome da função | Trocas spot não suportadas | Atividades de negociação |
---|---|---|
GetMarkets | Coincheck / Bithumb / BitFlyer | – |
{@struct/Mercado Mercado}
Oexchange.GetTickers()
A função é utilizada para obter dados de ticker agregados de troca (a matriz da estrutura {@struct/Ticker Ticker}).exchange
Retorna dados de ticker para todos os pares de negociação quando se trata de um objeto de troca à vista;exchange
Retorna dados de ticker para todos os contratos quando se trata de um objeto de troca de futuros.
Oexchange.GetTickers()
função retorna uma matriz de estruturas {@struct/Ticker Ticker} quando consegue solicitar dados, e nulo quando falha.
{@struct/Ticker Ticker} matrizes, valores nulos
troca.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());
}
}
Ligue para oexchange.GetTickers()
Função de obtenção de dados 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() + "`");
}
Utilize o objeto de troca spot e chame oexchange.GetTickers()
Antes de chamar qualquer função de mercado, o GetTickers retorna apenas os dados do ticker do par de negociação padrão atual. Depois de chamar a função de mercado, retorna os dados do ticker de todas as variedades solicitadas. Você pode se referir ao exemplo de teste a seguir:
As trocas que não suportam oexchange.GetTickers()
Função:
Nome da função | Trocas spot não suportadas | Atividades de negociação |
---|---|---|
GetTickers | Zaif / WOO / Gemini / Coincheck / BitFlyer / Bibox | Futures_WOO / Futures_dYdX / Futures_Deribit / Futures_Bibox / Futures_Aevo |
Não, não, não, não, não.
Registo Comércio