[TOC]
Como pesquisar uma palavra-chave em posts?
UtilizaçãoCtrl + f
para abrir a página e pesquisar; digite uma palavra-chave, por exemplo:
Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Weixin:
Porquê?Compre um preçoeVender um preçoObtido por:GetTicker
e os obtidos porGetDepth
são diferentes?
Os dadosGetTicker
eGetDepth
Os dados obtidos por este método podem não ser obtidos ao mesmo tempo. há um atraso de tempo cetrain, por isso os dados vão mudar.GetTicker
será um pouco mais rápido, para os dados é menor do que os dados obtidos porGetDepth
.
exchang.GetOrders
Obtém as ordens inacabadas, então, onde é que se conseguem as ordens executadas?
Há outra API para consultar ordens, ou seja,exchange.GetOrder
- consulta ordens de todos os tipos, de acordo comID
Introduza a ordem.ID
Portanto, para obter ordens executadas, você precisa ver se as plataformas fornecem esse tipo de interfaces; as interfaces fornecidas por cada plataforma são bastante diferentes.
EmJavaScript
estratégias, o resultado da cadeia de tempo convertendo para carimbo de tempo é errado.
Você precisa considerar o fuso horário nas configurações de tempo do sistema.
Porque é que o preço de abertura e o preço de fechamento que imprimi são os mesmos?
1.Talvez, no momento em que imprimiu, não houvesse efectivamente negociação na plataforma, pelo que os preços de abertura, fechamento, mais alto e mais baixo do BAR sejam os mesmos o tempo todo. 2.Você precisa verificar se o BAR que você observou é o último BAR, pois os preços de abertura, fechamento, mais alto e mais baixo do último BAR são os mesmos.
Erros de verificação do tempo com o servidor, tais comoSignature not valid:Invalid submission time or incorrect time format
Este erro é o problema dos sistemas operacionais antigos comowindows2000/2003/XP
, consulte:
Sugerimos que useLinux
servidor, ou você pode instalar software de sincronização de tempo nesteswindows
Sistemas em que ocorre o erro, para sincronizar o tempo em alta frequência e evitar que ocorra o erro de verificação do tempo.
ATR
(TR
) de Mylanguage e os calculados porTA
/talib
Biblioteca?A razão é que o método de cálculo dos indicadores Mylanguage é inconsistente com o algoritmo subjacente deTA
/talib
ambas são corretas, mas os algoritmos são diferentes.MACD
, alguns usam umDIF-DEA
, e alguns usam duas vezesDIF-DEA
, que são ambos corretos.
O que representa, se o nome da plataforma éFutures_Esunny
?
Representa o objecto de troca deProtocolo de Esunny, que pode ser devolvido pela funçãoexchange.GetName()
- Não.
Atualmente, a estação internacional FMZ só suporta negócios de criptomoedas.https://www.fmz.cn.
#EXPORTTEST...#END
declarou as variáveis na referência do bloco de códigos de vários períodos.REF
Se o valor de referência for utilizado na estratégia, os dados serão referenciados de acordo com o período atual, que é diferente do esperado.Os dados de vários períodos de que necessita serão tratados em#EXPORTTEST...#END
, para que possa usá-lo diretamente externamente.
Não consigo encontrar a documentação da API da FMZ.
Pode inserir diretamente o endereço da página:https://www.fmz.com/api, ou clique no link da seguinte imagem:
Porquê?MACD
Calculado pela FMZ é diferente daquele calculado pelas plataformas?
Ao fazer a comparação, é necessário ter em conta se os períodos da linha K são os mesmos, se oMACD
Os parâmetros do indicador são os mesmos, os períodos de tempo são os mesmos e os símbolos são os mesmos.MACD
; alguns sãoDIF-DEA
, e alguns são2*(DIF-DEA)
; DIF
eDEA
deve ser consistente.
O que está ligado ao número de linha K obtido, quando os dados da linha K histórico são obtidos?
Ao aceder aoexchange.GetRecords
O número de K-lines retornadas por cada plataforma pode ser inconsistente (até mesmo algumas plataformas não fornecem interfaces de K-line. Neste caso, o docker chamará a interface para obter os dados de histórico de negociação da plataforma quando a estratégia for chamada.exchange.GetRecords
. A interface de dados sintetiza a linha K de acordo com o histórico de negociação). As linhas K recebidas pelo docker serão continuamente acumuladas juntas, e é necessário acessar oexchange.GetRecords
Interface com uma certa frequência, caso contrário, a continuidade dos dados pode ser afectada.
Eu acho que chamar a funçãoexchange.Buy
Apenas retornosID
na documentação API, mas por que ele retorna tanta informação quando eu operar?
As funções que podem gerar exportação de log em funções FMZ API, tais comoLog
, exchange.Buy
, exchange.CancelOrder
, etc., todos podem ser seguidos por alguns parâmetros adicionais após os parâmetros necessários.exchange.CancelOrder(orders[i].Id, orders[j])
Exporta adicionalmente as informações da encomenda ao cancelarorders[j]
.
Como executar mensagem Push do WeChat em um bot?
O WeChat push só é válido em bots; adicione'@'
No final doLog
A informação impressa doLog
pode ser empurrado; você pode encontrar os detalhes no documento API em:https://www.fmz.com/api#LogAtualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn- Não.
O WeChat push só é suportado na estação doméstica da FMZ.
Os contratos futuros sobre commodities podem utilizar contratos principais contínuos e contratos de índice?
O valor da posição em risco deve ser calculado em função do valor da posição em risco. Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
var records = exchange.GetRecords(PERIOD_D1)
O que devo escrever se eu quero obter o contrato específico diariamente dados K-line, tais como os dados K-line de RB ou I?
Devias pôrCódigo do contratoO número de horas de trabalho é o número de horas de trabalho que o empregador pode ter antes de obter o TAQ (por exemplo, definir o código do contrato pelo menos uma vez desde o início do programa).SetContractType("rb1805")
, Configure o contrato operado atual pararb1805
Ligue novamente para a API que obtém TAQ, você pode obter os dados TAQ do contrato rb1805.
Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Como escrever o código do contrato de futuros de commodities?
Pode consultar a documentação da API FMZ. Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
- O Will?exchange.GetAccount
Não consegue obter as informações devido a problemas de rede e outros problemas, e a camada subjacente do sistema FMZ já processou a falha? Ou os usuários têm que lidar com a falha da solicitação eles mesmos? Por que o oficial FMZ não lida com isso? Não é mais conveniente para os usuários usá-lo dessa maneira?
A camada subjacente do FMZ não processa dados, e os dados retornados aos usuários são dados não processados. O método ou lógica de tolerância de falha específica é formulado pela estratégia específica. Porque se for processado, pode afetar a decisão dos usuários, e a decisão será processada pela estratégia, que se refere especificamente aInformações de erro de filtragemouTente outra veze outros métodos de transformação.
Qual é a unidade do volume de encomendas do contrato OKEX?
O volume de encomendas do contrato OKEX é calculado pelo montante do contrato; por exemplo,exchange.Buy(1000,1)
significa a colocação de uma encomenda ao preço de 1000, com o montante do contrato de 1.
Significa que faço ordens de limite quando ligo?exchange.Sell
eexchange.Buy
no FMZ?
Para mais detalhes, você precisa olhar para o primeiro parâmetro passado (o primeiro parâmetro é o preço da ordem).-1
Os significados de volume de compra e volume de venda são de alguma forma diferentes (o segundo parâmetro), e se o preço não for igual ao preço de venda, o valor do volume de compra é diferente do volume de venda.-1
, o que significa que é uma ordem limite. Na maioria das interfaces de ordens de plataformas spot, o volume de ordem da ordem de compra de mercado émontante do activoNão, não.montante da moeda. Nas interfaces de ordens das plataformas de futuros de criptomoedas, o volume de ordens é geralmente um número inteiro do valor do contrato.
Veja as interfaces de ordens:https://www.fmz.com/api#exchange.buyprice-amount https://www.fmz.com/api#exchange.sellprice-amount
Função de correio
Mail("smtp.qq.com", "xxxx@qq.com", "xxx", "xxx@qq.com", "test title", "test body")
Acesso aos SMTP QQ
Parâmetros do modelo para Pine language, Mylanguage: o número de períodos máximos da variável afeta o cálculo do indicador
Por padrão, o
Verifique se há um nome de variável faltando ao declarar uma variável, como esquecer de escrever o nome em
BITMEX
429 erro,{"error":{"message":"Rate limit exceeded retry in 1seconds……"}}
Quando vemos o erro 429, significa que a frequência de acesso a uma plataforma é muito alta.
Only support CTP
Erro
Isso significa que você ligou para umCTP de futuros de mercadoriasInterface ou biblioteca em umEstratégia de criptomoedas- Não. Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Bittrex
Erro em bots:{"success":false,"message":"NOT_ALLOWED","result":null}
Indica que a plataforma limita privilégios.Bittrex
, e ver se é necessário verificar as informações, como o acordo do utilizador.
Erro de operação do bot:TypeError:value has no property at
Como os erros relatados no backtest e no bot são diferentes, este erro não pode ser detectado durante o backtest.
unable to open database
Erro
Se o sistema forMac OS
Sistema, prestar atenção para verificar se é o um problema de permissão.
Ou, pode ser o erro causado pelo espaço cheio do disco rígido do dispositivo, que desativou a criação do arquivo de banco de dados do bot.
Erro:do not support the function
Refere-se à situação em que o objeto de troca adicionado durante o backtest é uma plataforma spot de criptomoeda, mas a função API de futuros é chamada no código.
Erro:in SetCurrency OSError: exception: access violation reading 0x000000FCF25F0000
Em um futuro de criptomoedaPython
estratégia, o sistema de backtest usa um docker privado, e o par de negociação é trocado no código, o que faz com que o erro seja relatado.
A razão é que o sistema de backtest não suporta o backtest de futuros de criptomoedas para trocar pares de negociação.
Erro
Python
Relatórios locais de backtest do motorEOFerror
.
EOF
O erro é o erro no final do backtest. capturar a exceção é suficiente e você pode chamá-lo em qualquer lugarPython
é apoiado.
# encoding: utf-8
'''backtest
start: 2021-08-30 00:00:00
end: 2022-09-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
from fmz import *
task = VCtx(__doc__) # initialize backtest engine from __doc__
def main():
while not exchange.IO("status"):
Sleep(1000)
exchange.SetContractType("swap")
while True:
bars_1min = _C(exchange.GetRecords, PERIOD_M1) # Get 1min K-line
print(len(bars_1min))
_CDelay(2000)
# Calling the main function
try:
main()
except:
print(task.Join(False))
O Mylanguage envolve um erro muito oculto no cálculo do período e o valor calculado pode ser N/A, como no seguinte exemplo:
A razão é que o parâmetro do período de cálculo excede o intervalo de dados, resultando no cálculo do valor N/A. Método de processamento:
Um erro ocorreu no Mylanguage: erro de análise, e a estratégia só tem código simples, o número de linhas de erro é muito longo, e a causa do erro não pode ser encontrada.
Pode ser um erro causado pelo problema dos primeiros modelos de Mylanguage. Solução: 1. Exportar a estratégia como um arquivo xml. 2. Criar uma nova estratégia Mylanguage vazia. 3. Importar o arquivo xml para a estratégia vazia recém-criada. 4. Adicionar um bot para testar.
Erro:fatal error:unexpected signal during runtime execution...go routine 11[syscall,locked to thread]
Verifique se a estratégia escrita emC++
usa um ponteiro nulo, e sugiro que use o teste de retorno de modo tolerante a falhas para detectar.
Erro de chamadaexchange.SetMarginLevel(10)
: Futures_OP 0:403:{"error":{"message":"Access Denied","name":"HTTPError"}}
Verifique se os privilégios relacionados doAPI KEY
aplicadas pela plataforma estão ligadas.
Erro de teste de retorno:symbol not set
É porque você não definiu o contrato no código durante o backtest da plataforma de futuros.exchange.SetContractType
função na documentação da API.
ErroERR_INVALID_POSITION
Se o sistema de backtest relatar o erro, geralmente é um erro causado por erros de escrita de estratégia. Se você tentar colocar uma ordem para fechar uma posição quando não há posição ou o número de posições é insuficiente, o erro será relatado. Verifique se há congelamento de posição causado por ordens inacabadas.
ErroERR_INVALID_ORDER
Se o sistema de backtest relatar o erro, geralmente é um erro causado por erros de escrita de estratégia. Você deve verificar o preço da ordem (os futuros de criptomoeda no sistema de backtest temporariamente não suportam ordens de mercado), se o volume da ordem é 0, número negativo ou fração decimal (o volume da ordem dos contratos de futuros é calculado pelo valor do contrato, que é inteiro).
ErroERR_INSUFFICIENT_ASSET
Se o backtest relatar o erro, normalmente indica que o valor do ativo disponível já não é suficiente para fazer a ordem atual.
Binding Error:Cannot passnon-string to std::string
Informação de erro
Nos códigos de estratégia, o erro é geralmente causado pela sugestão errada de um nome de atributo (usando um atributo indefinido).
Erro{"status":6004,"msg":"timestamp is out of range"}
O erro significa que o carimbo horário do servidor está fora do intervalo, e você precisa atualizar o tempo do servidor, sem grande desvio.
Errotimeout
O erro é um erro de timeout, que indica um erro relatado devido a não obter os dados de resposta da interface da plataforma por um certo período de tempo após acessar a interface da plataforma. Geralmente, é um problema de acesso à rede do sistema onde o docker está localizado (muitos problemas são causados por muros), ou um problema da interface da plataforma.
Erro no bot em execução após a escrita da estratégia:syntax error invalid label
Fonte de erro:
function main(){
if(1){
continue
}
}
//That will cause the error during operation
continue
A declaração deve ser usada no loop!
Erro:(CTP_T@9999)Error:140CTP:change the password when first log in, and please log in again after changing
Qual é a senha modificada?
Aqui indica para modificarsimnow
palavra-passe da conta; quando utiliza uma conta específica da empresa de futuros para iniciar sessão, também deverá modificar a palavra-passe para o primeiro login (uma nova conta tem uma palavra-passe inicial e não pode utilizar a conta sem modificar a palavra-passe inicial).
Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Erro:400:{"error":{"message":"Nonce is not increasing.This nonce:1523891993165,last nonce:1523891993165","name":"HTTPError"}}
É umnonce
erro de verificação, e as informações de erro relacionadas comnonce
Você pode tentar sincronizar a hora do sistema onde o bot docker está localizado.
ErroSecretkey decrypt failed
O erro indica o fracasso da decodificaçãoAPI KEY
. Verifique se você modificou a senha da conta FMZ depois de configurar oAPI KEY
Tente configurar oAPI KEY
na página
Posição aberta de futuros de mercadorias Erro:CTP: only close position
Há muitas razões pelas quais o relato mostra o status decan only close position
. Pode ser que a conta tenha sido congelada (não foi usada por muito tempo, mais de 1 ano), ou pode ter entrado no canal errado (CTP tem muitos assentos).
Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Qual poderia ser a razão se o erro:GetOrder(455284455):Error:invalid order id or order canceled.
É sempre levantado quando eu ligo.exchange.Getorder
?
Significação literal: a encomenda foi cancelada ou o ID da encomenda é inválido. Razão: em algumas plataformas, se você cancelar uma encomenda, as informações da encomenda não serão mantidas e serão eliminadas.exchange.GetOrder
, o erro será relatado, ou o ID de encomenda que você consulta é originalmente errado.
Erro: limite de taxa, 429 Demasiados pedidos
rate limit, 429 Too Many Requests
indica que a frequência de acesso a uma interface de plataforma é demasiado elevada, pelo que é necessário reduzir a frequência de acesso à interface de plataforma.
Aumentem sempre.Invalid order price/amount
no bot e backtest
Este tipo de erros são causados pelo preço errado e volume de ordem passado ao chamar a função de ordemexchange.Buy
ouexchange.Sell
Para...volume de encomendas negativo, 0e outros métodos de detecção de erros:Log
para exportar o parâmetro de preço ou parâmetro de volume a passar antes de fazer uma encomenda porexchange.Buy
ouexchange.Sell
, para determinar o problema.
Que tipo de erro éGetOrders:400:{"code":-1121,"msg":"Invalid symbol."}
?
O erro significa:par de negociação inválidoVocê precisa verificar se a configuração do par comercial está errada.
O que significa se há alguns códigos de erro quando os registos de bots relatam um erro?
Você pode ver as explicações para os códigos de erro devolvidos por diferentes interfaces de plataforma na documentação API dessas plataformas.
Tempo de impressão da curva de rendimento do mercado real da linguagem Pine e Mylanguage Imprimir regularmente de acordo com as configurações dos parâmetros do modelo de linguagem Pine/Mylanguage e imprimir quando a estratégia estiver completamente fechada.
O bot da Mylanguage imprime o número de linhas de gatilho do sinal, mas não há nenhuma operação de ordem.
Pode ser que as configurações de parâmetros do modelo Mylanguage sejam inadequadas, como precisão, volume mínimo de ordem e outros parâmetros. A razão é que a camada de gatilho de sinal foi julgada com sucesso e na camada de execução de negociação, foi julgado que a ordem não pôde ser colocada devido a alguns problemas com os parâmetros, e nenhuma ordem foi realmente colocada. Você pode consultar os posts relacionados ao Mylanaguage:https://www.fmz.com/bbs-topic/9788 https://www.fmz.com/bbs-topic/9791
Por que o bot não pode receber o sinal de solicitação quando eu já definiu alerta de url do webhook no Tradingview?
Verifique se a API KEY está correta no endereço de url do webhook. A API KEY aqui se refere à API KEY estendida do FMZ, que é definida nas configurações da conta no canto superior direito do FMZ. Verifique se o ID do bot no url do webhook está preenchido corretamente. Verifique se os privilégios da API KEY estendida do FMZ são dados corretamente. Os privilégios são separados por vírgulas em inglês. O padrão é *, o que significa todos os privilégios. Não escreva os nomes das funções com os privilégios diretamente após *.
Por que os símbolos de pares de moedas são limitados na configuração de pares de negociação da plataforma ao adicionar um bot?
Você pode definir o controle personalizado de pares de negociação (apenas pode ser definido em bots; para os símbolos no centro de dados do backtest são limitados, ele não pode ser definido no backtest), da seguinte forma:
Por que os tickers não podem ser obtidos quando eu executar o FutuOpenD no servidor, e os tickers podem ser obtidos no dispositivo local?
Você precisa verificar se o endereço IP do servidor está no exterior, pois o FutuOpenD tem limites em endereços IP no exterior. Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Não há nenhuma acção quando a estratégia Mylanguage é operada, e só atualiza o TAQ no início.
Verifique se utilizou o modelo de preço de fechamento, que pode ser verificado pelos parâmetros do modelo de estratégia Mylanguage.
Futuros de commodities
Na CTP, apenas a Shanghai Futures Exchange pode ser utilizada para fechar as posições de hoje e as de ontem.
O backtest não distinguePosições de hojedeposições de ontem, por isso não pode especificar para fechar posições de hoje ou posições de ontem.
Alguns símbolos em bots, comoIF
, tem o padrão de que se houver posições hoje, ele vai fechar posições hoje primeiro. Nesta ocasião, você não pode especificar, e você só pode fechar posições hoje primeiro. Portanto, as informações de posição de hoje e posições de ontem é fundido em um.
Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Porque é que o carimbo de um bar emBITMEX
Os dados de linha K têm um período a mais do que o da mesma localização em outros dados de linha K da plataforma?
A razão é:BITMEX
toma a hora final da barra atual como o carimbo de tempo da linha K (alguns períodos de linha K não são suportados porBITMEX
interface, de modo que os carimbos de tempo desses períodos são gerados pela hora de início de Bar).
Na estratégia de futuros de commodities, oProfit
nos dados devolvidos pela funçãoexchange.GetPosition
É diferente do lucro e da perda variáveis calculados?
Consulte a documentação da API:https://www.fmz.com/api#exchange.getposition. Profit
emCTP protocol
é definido comoLucro e prejuízo de valor de mercado, que representa o lucro e a perda da sua posição corrente em relação ao preço de liquidação do dia de negociação anterior.
Atualmente, a FMZ International Station só suporta negócios de criptomoedas.https://www.fmz.cn.
Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.
Verifique se o recurso
/*backtest
start: 2022-11-08 00:00:00
end: 2023-02-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var t = exchange.GetTicker()
exchange.Buy(t.Last - 10, 100/(t.Last - 10))
while(1){
t = exchange.GetTicker()
Sleep(1000)
}
}
No backtest de futuros da Binance eBITMEX
, a taxa de financiamento é calculada na curva de lucros e perdas gerada pelo sistema de backtest?
A taxa de financiamento é calculada na curva de lucros e perdas gerada pelo sistema de backtest.
O botão
Você precisa verificar se o proxy está ativado, o que afetará a conclusão do carregamento dos arquivos na página do
EmCarrapatos reaisbacktest, por que há um limite de 50MB?
O backtest de nível de mercado real indica que no Tick real, o TAQ é realmente registrado segundo a segundo. Além disso, existem instantâneos de mercado e dados de fluxo de pedidos, que são de grande volume, por isso apenas 50MB de volume de dados são suportados. Ou seja, o máximo do intervalo de tempo do nível de mercado real é de várias horas e o tempo de backtest não pode ser estendido. O backtest de Tick real é usado principalmente para testar estratégias de alta frequência.
Por que não funcionou quando modifiquei os parâmetros da taxa no sistema de backtest?
No sistema de backtest, quando você redefine os parâmetros de taxa, eles serão válidos depois de excluir o par de negociação de plataforma antigo e adicionar o par de negociação de plataforma novamente; o par de negociação de plataforma adicionado anteriormente não pode ser modificado pelo controle na página.
Como fazer o backtest desenho personalizado exibir mais dados?
Quando você desenhar um gráfico personalizado (peloChart
O volume de dados do desenho exibido no backtest está relacionado com ográficoO parâmetro é o parâmetro que controla o número máximo de barras de um gráfico.chart.reset
A função é usada para limpar parte dos dados antigos.
C++
O backtest não mostrou nada, não houve erro nem registos, e nada na página mudou depois de eu clicar no botão.
Alguns erros deC++
No entanto, o método de exclusão pode ser utilizado para detectar os possíveis erros que podem ocorrer durante a operação, nível por nível.NAN
e tipo de número apósNAN
é calculado, o que causará o crash do programa.
python
O backtest está bloqueado!
Você não pode escrever a funçãoSleep
emtry
detecção de erros, e a escrita na imagem vai causar o engarrafamento.
No backtest, por que há apenas várias opções para a plataforma, e os símbolos para o par de negociação também são limitados?
Há muitos pares de negociação nas plataformas, por isso apenas alguns pares de negociação representativos foram selecionados para testes no sistema de backtest.controlo aduaneiroPara definir os pares de negociação suportados por essas plataformas em bots.
Por que o backtest não suporta mais pares de negociação?
O sistema de backtest, por enquanto, só suporta as moedas mainstream de algumas plataformas relativamente grandes, e algumas moedas ainda não são suportadas. Se você precisar testar uma estratégia, pode substituir as moedas por outras moedas semelhantes no backtest. Na verdade, exceto que as cotações de mercado podem ser afetadas, usar outras criptomoedas semelhantes para backtestar a estratégia é bom. Simplificando, o sistema de backtest tenta suportar pares de negociação mainstream, e o backtest não deve corresponder a um símbolo específico. Ou seja, se a estratégia for eficaz, mesmo que seja uma série de alterações de cotação de mercado geradas aleatoriamente com regras de negociação, ou as cotações de mercado de outras moedas, deve haver lucros basicamente positivos. Esta é a universalidade de uma estratégia. Se ela só pode corresponder a um período de história ou funcionar bem em determinado símbolo, então essa estratégia realmente tem riscos ou defeitos potenciais.
No sistema de backtest:P&L de encerramento, P&L de participação, Margem, Retorno estimado, USDT actualmente disponível
P&L de encerramento: é o lucro e a perda acumulados de todas as transações abertas e fechadas antes da posição corrente. P&L de detenção: é o lucro e a perda da posição corrente, se a posição corrente não for detida, é 0, Margem: o montante da margem ocupada pela posição corrente. Retorno estimado: O lucro e a perda gerados pelo encerramento da posição corrente ao preço corrente (hipotético) são adicionados ao lucro e à perda acumulados da posição fechada para calcular o rendimento estimado. O montante de USDT disponível atualmente: o montante atual de USDT disponível para a abertura de posições.
Cálculo da taxa de sucesso no sistema de backtest
for (var i = 0; i < profits.length; i++) {
if (i == 0) {
if (profits[i][1] > 0) {
winningResult++
}
} else {
if (profits[i][1] > profits[i - 1][1]) {
winningResult++
}
}
if ((profits[i][1] + totalAssets) > maxAssets) {
maxAssets = profits[i][1] + totalAssets
maxAssetsTime = profits[i][0]
}
if (maxAssets > 0) {
var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets
if (drawDown > maxDrawdown) {
maxDrawdown = drawDown
maxDrawdownTime = profits[i][0]
maxDrawdownStartTime = maxAssetsTime
}
}
}
O algoritmo acima é o algoritmo da taxa de ganho, que é calculado da seguinte forma: Após o sistema de backtest regularmente calcular o lucro e perda flutuantes, uma curva de lucro e perda flutuante é calculada. Comece a partir do primeiro ponto para comparar com o próximo ponto. Se for maior, será registrado como uma vitória, e se for menor, será registrado como uma perda, e depois continue a comparação com o próximo ponto.
Onde está o vídeo de ensino de implantaçãoLinux
Docker?
Bilibili:https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web
É necessário parar o antigo quando eu atualizar o docker, e excluir orobot
programa, e executá-lo de novo?
Você pode excluir diretamente o antigorobot
arquivo de programa sem parar o docker, em seguida, baixar um novo pacote comprimido, descomprimir o novorobot
Neste momento, o docker é atualizado, mas o bot em execução ainda usa a versão antiga na memória, e a versão mais recente será usada apenas quando o bot é reiniciado.
Implementação do Docker deLinux
servidor
Passos para instalar um docker emLinux
: https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web
Quando utilizadoscreen
para executar o programa dockerrobot
, -bash:screen:command not found
ocorre, e o docker não pode ser executado.
Linux
Sistema não se instalascreen
software, e a instalação geral é suficiente.CentOS
comando de instalação do sistema:yum install screen
.
O docker atual já suportaSSH
para desconectar a conmutação para executar em segundo plano.screen
, você pode usar diretamente o comando norobot
diretório do programa docker:./robot -s node.fmz.com/xxxxxxx
, e digite a palavra-passe da conta FMZ; quandoLogin OK
Observe que o xxxxxxx em./robot -s node.fmz.com/xxxxxxx
é o código de identificação exclusivo de cada conta FMZ, e basta inserir o seu próprio (depois que a conta está conectada, pule para a página docker, clique em xxxxxxx
.
Onde está o registro do bot quando um docker está executando um bot?
EmDB3
arquivo de base de dados nologs
diretório onde o programa docker está localizado, o nome do arquivo do banco de dados é oid
do bot, e a extensão édb3
.
EmLinux
sistema, utilização./robot -l
Para ver os nomes das plataformas suportadas pelo docker, que plataforma é oexchange
Entre os nomes?
O objecto de troca cujonomeéexchange
refere-se à plataforma queProtocolo GeralAs informações do protocolo geral:https://www.fmz.com/api#通用协议
A página do docker não exibe os dockers no formato de lista.
Se forem adicionados mais de 5 portadores, aparecerá um comando para exibição no formato de lista.
É normal haver um docker não implantado por mim na caixa de combo do parâmetro docker ao criar um bot?
O docker público fornecido pela FMZ é uma ferramenta de início rápido adicionada para iniciantes, então os usuários não precisam implantar um docker ao aprender, e é fácil para iniciantes começarem.
É a cadeia de endereços (./robot -s node.fmz.com/1234567
) exclusivamente para mim ou para outros, quando se utiliza um docker?
Este endereço é a identificação do endereço próprio de cada utilizador, e o valor do/1234567
Ao implantar um docker, clique no botão
A variável ambiente do sistema onde o docker está localizado adicionoupython2.7
, mas por que ainda é solicitado que a variável ambiente não pode ser encontrado?
Quando?windows
Sistema primeiro instalapython
, você precisa definir a variável ambiente e reiniciar para torná-lo válido.
Erro EOF
O backtest do Python é terminado pela exceção EOF (porque às vezes uma estratégia pode ser um loop infinito).
Quantos bots é que um docker pode operar?
Não há limite para o número, dependendo da configuração do servidor e da complexidade da estratégia. Especificamente, é necessário considerar se esses vários bots acessam a mesma interface da plataforma (considerando a frequência de chamadas de interface, porque mais bots significam maior frequência); geralmente 5 a 6 bots estão bem.
Docker, Bot e outras explicações de conceitos básicos
O conteúdo das páginas
Se o conteúdo do bot e da página do docker tiverem desaparecido, quando o bot e o docker estiverem funcionando normalmente no servidor, você precisa ler a mensagem de relatório de erro do navegador, para ver se o navegador tem um plugin instalado, o que causa o problema de poluição de variável global.
Para as estratégias oficiais de aluguer e aluguer de um servidor docker com um clique, a taxa será renovada automaticamente, desde que o saldo da conta FMZ seja suficiente?
As estratégias alugadas não cobrarão automaticamente as taxas, e o aluguel de um docker com um clique será automaticamente recarregado.
Onde está a função modelo? Eu quero separar algumas funções no modelo, para que outras estratégias também possam usá-las.
A descrição noFMZ API
Documentação:https://www.fmz.com/api#模板类库
O que é owexApp
plataforma de simulação de FMZ simulado bot apenas fornecerBTC_USDT
Como posso personalizar outros pares de negociação?
wexApp
Simulado bot suporta apenas alguns pares de negociação mainstream no momento, e nem todos os pares de negociação são simulados.
Eu tenho um problema de chamadas simultâneas para a API estendida, ou seja, um erro de verificação
Você pode criar múltiplas plataformas FMZ estendidasAPI KEY
s para pedidos simultâneos.
Os tópicos de depuração criados em um docker registarão o status do log quando usar a ferramenta de depuração?
Quando a ferramenta de depuração é executada, se nada for modificado pela segunda vez, o objeto de troca criado antes será mantido e não será liberado.Modo de moedaoumodo de alavancagem.
Por que quando eu registrei owexApp
Simulou a plataforma e fez login, não havia nenhum activo, tanto na carteira como na secção de moeda?
Após o registro, você precisa verificar seu e-mail para ativar sua conta, e você pode ativar sua conta no centro pessoal.
A informação do log é relativamente longa e cortada, e no final mostrou"... Mas eu preciso ver a estrutura dos dados, o que devo fazer?
A solução consiste em utilizar oFerramenta de depuraçãonoPainel de instrumentos, e utilizar oreturn
declaração na ferramenta de depuração para retornar o conteúdo a ser exibido, e a exibição do conteúdo não será truncada.
O que fazem as funções começando com$.
emJavaScript
Estratégias significam?
As funções com o início de$.
são funções de exportação de modelos, semelhantes às funções de interface de módulos.https://www.fmz.com/api#模板类库
As funções de exportação dopython
As estratégias são declaradasext.
No início.
Como desenhar linhas retas no gráfico de mercado do resultado do backtest?
Existem dois tipos de gráficos que são finalmente exibidos no backtest: um é gerado pelo sistema, que a estratégia não pode controlar.Chart
Função da interface API da FMZ no código de estratégia.https://www.fmz.com/api#chart...
Eu excluí o validador do Google no meu telefone por engano, como redefinir o validador do Google? Na página de configurações da conta na plataforma, eu não consegui encontrar o lugar para redefinir por e-mail.
Você pode entrar na plataforma FMZ com outro navegador, e quando precisar inserir o código de verificação do Google, clique em
PlataformaAPI KEY
controlo de segurança
OAPI KEY
A FMZ não guarda as informações de texto simples da conta da plataforma do utilizador e utilizaHttps
protocol.
Questão de segurança estratégica
Para isso, pode referir-se a:https://www.fmz.com/bbs-topic/1657.
Sistema de faturamento FMZ
Normas de faturamento para negociação em tempo real:
O tempo de faturamento mencionado refere-se ao tempo de processamento para operações de faturamento. Devido ao tempo necessário para essas operações de processamento, o tempo de dedução pode ser atrasado. Por exemplo, se o tempo de faturamento atual for 9:00, é possível que o tempo de processamento para essa operação de faturamento seja 9:02 (como mostrado na captura de tela). Isso será ajustado durante a próxima operação de faturamento (o próximo tempo de dedução será 10:00, não uma faturamento antecipado).
A biblioteca talib manipula dados com precisão limitada.
Se os dados forem particularmente pequenos, serão truncados e, eventualmente, exibidos como 0. Consulte:https://github.com/TA-Lib/ta-lib-python/issues/157