O inventor da plataforma de negociação quantitativaPraça da EstratégiaHá uma série de estratégias interessantes que eram usadas na época para trocas de moeda digital.rest
A maioria das estratégias são baseadas na interface API do protocolo.rest
A maioria das empresas que operam em mercados de alto nível, por exemplo, estão atualizando as suas interfaces, por vezes mais lentamente. Além disso, recentemente surgiram algumas bolsas.rest
O problema é que a política não pode ser usada se a política for alterada.websocket
O suporte da interface requer uma certa mudança no código da política, que geralmente é mais difícil (muito mais difícil de mudar a política do que reescrever).
Como não mudar de estratégia, mas usar?websocket
E a interface de trabalho?
A plataforma de negociação quantitativa dos inventores é muito flexível e pode ser usada para:
exchange.GetTicker
A função que é obtida pela função Hook operação.A estratégia é executada sem alterar uma linha de código, deixando a estratégia ser executada por uma única linha de código.websocket
O motor de dados impulsionado pela interface de negócios é executado.
Utilização de linguagens de programaçãoJavaScript
A língua.
Por exemplo, estamos a tentar mudar uma estratégia clássica e antiga, "Bate-fogo".
Primeiro, vamos olhar para o código da estratégia e descobrir que a estratégia é impulsionada pelo mercado de ticks e é usada principalmente por pessoas que estão usando ticks.ticker
Os dadosBuy
、Sell
、Last
As características são diferentes.ticker
Os dados são obtidos através da função API da plataforma FMZ:exchange.GetTicker
O objetivo é claro, e nós colocamos isso em prática.exchange.GetTicker
FunçõesHook
A operação (ou seja, reescrever para outra versão e substituí-la) é possível.
Mas não podemos reescrever a estratégia do quebrador de gelo, isso afetará a estratégia, o que queremos é uma ligação perfeita!
A partir daí, o próximo personagem principal deve entrar no palco.
init
Função de colaboraçãoCriamos uma biblioteca de modelos chamada:Conexão sem costuraO código inicial em branco.
E depois dá-lheConexão sem costuraModelo com 2 parâmetros
Usado para controlar se você está ligadowebsocket
Interface função, controle especifica a abertura de uma interface de mercado específico. Neste caso, devido ao tamanho limitado, apenas paraexchange.GetTicker
A interface faz a operação do gancho.GetTicker
A interface é o parâmetro de controle do modo websocket: Hook_GetTicker.
Agora que o modelo está criado, você pode escrever o que você quer para o seu site.websocket
O código específico não é mais descrito, pode ser consultado no código SeamlessConnWS (publicado) e na documentação da API.init
Funções e variáveis globais_DictConnectCreater
、_ConnMap
:
Código:
var _DictConnectCreater = {
"Huobi" : WSConnecter_Huobi,
"Binance" : WSConnecter_Binance,
}
var _ConnMap = {}
function init () {
if (IsUsedWebSocket) {
var connectCreater = null
if (exchanges.length != 1) {
Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
}
var isFound = false
for (var name in _DictConnectCreater) {
if (exchange.GetName() == name) {
connectCreater = _DictConnectCreater[name]
isFound = true
}
}
if (!isFound) {
throw "没有找到实现"
}
if (Hook_GetTicker) {
var symbol = exchange.GetCurrency()
_ConnMap.GetTicker = connectCreater("GetTicker", symbol)
exchange.GetTicker = function () {
return _C(_ConnMap.GetTicker.Read)
}
}
// ...
}
}
Como você pode ver, este modelo só implementa dois tipos de câmbio.websocket
A interface de transações é denominada em Bitcoin Cash e Token Cash.init
A função é para que a estratégia do quebra-gelos cite.Conexão sem costuraApós o modelo, o disco real é executado primeiro.init
A função pode ser automaticamenteexchange.GetTicker
O conteúdo da função é substituído por usowebsocket
Implementação de código de interface, permitindo assim a ligação sem fiowebsocket
O que é isso?
Endereço do modelo SeamlessConnWS
É muito simples!Conexão sem costuraApós o modelo ser copiado para o seu próprio acervo de políticas, pode ser usado apenas para referenciar a estratégia do "quebra-gelo", como se vê:
Selecione, salve e basta.
Criar uma estratégia de "quebra-gelo", um robô real, e a bolsa escolher BinanceNão, não. AberturaConexão sem costuraParâmetros de controle no modelo.
A partir de agora:
Para facilitar a visualização dos dados enviados, adicionei uma linha de código para imprimir logs em 157 linhas, que produzem os dados enviados pelas bolsas.
O bot mostra em seu log:
Isso permite que a websocket interaja com a interface de mercado e a política sem barreiras sem alterar uma linha de código de política.
Este caso é apenas para usoexchange.GetTicker
A estratégia de uma função de interface de mercado é explicada por outras interfaces de mercado, como por exemploexchange.GetDepth
、exchange.GetTrades
、exchange.GetRecords
E é o mesmo esquema!Conexão sem costuraO blogueiro também escreveu sobre o assunto:
Para links específicos no modelowebsocket
A implementação, o usoDial
Funções (ver documentação API Dial Function) podem ser ajustadas conforme necessário.read()
Função especifica parâmetros-2
O que significa que só voltamos.websocket
Os dados mais recentes na área de buffer da conexão recebem dados.
Obrigado por ler.
congcong009Monk, pode dar-me mais uma versão em Python?
A noiva também.O que é bom, deveria ser compartilhado mais cedo.
Inventor quantificado - sonho pequenoMuito bem, obrigado pela sugestão.