O recurso está a ser carregado... Carregamento...

Estratégias para a criação de tutoriais para iniciantes (must see)

Autora:Ervas daninhas, Criado: 2019-08-13 17:47:27, Atualizado: 2021-08-06 10:29:46

Informações históricas da linha K. A desvantagem deste mecanismo é óbvia: em uma linha K, só pode ser produzido um venda venda, geralmente baseado no preço do preço de fechamento da linha K. E uma linha K só pode obter quatro preços de alta ou baixa, quanto à mudança de preços em uma linha K, como o preço mais alto ocorre primeiro, ou o preço mais baixo ocorre primeiro, etc. Não há nenhuma informação para obter.

A redefinição da plataforma FMZ é dividida em redefinição de nível analógico e redefinição de nível real. A redefinição de nível analógico gerará 14 pontos de tempo de redefinição em cada ciclo de linha K base, com base no tick gerado pela simulação.O nível de disco real é o tick real coletado, cerca de uma vez a cada poucos segundos, e atualmente suporta parcialmente a profundidade real (incluindo 20 arquivos) e a transação real por moeda.O mecanismo de retorno do FMZ permite que a estratégia seja negociada várias vezes em uma linha K, evitando situações em que só se pode fechar um negócio a preço de mercado, sendo mais precisa e considerando a velocidade de retorno.https://www.fmz.com/digest-topic/4009

O esquema de revisão é o mesmo que o disco real e é um ciclo morto. Como a revisão salta em diferentes pontos de revisão, não é possível usar o Sleep, que salta automaticamente para o próximo ponto de tempo no final de um ciclo.Sleep(10)O que você está fazendo é errado.

Fotografias de retrospecção

O motor de reencaminhamento é feito com base no preço de compra e no preço de transação no momento do reencaminhamento. Se o preço de compra for maior do que o preço de venda, é vendido um negócio. Se o negócio não for concluído, é gerado um listado. O negócio precisa de um ponto de deslizamento.

Configuração da página de revisão

img

  • 1.回测页面的选择,左侧是策略编辑页面。
  • 2.回测起始结束时间,由于数据不完整,回测可能直接从有数据的时间开始。
  • 3.回测GetRecords()O ciclo padrão de uma função também pode ser especificado no código como um parâmetro de ciclo.
  • 4.回测机制的选择。
  • 5.展示或隐藏跟多回测设置。
  • 6.最大日志数、收益数据数、图表数据数等,为了防止数据量过大导致浏览器卡死。
  • 6.底层tick生成依据K线周期。
  • 7.交易滑点。
  • 7.容错,会模拟API请求出错情况,检查策略容错能力。
  • 8.是否绘制行情图标,回测中如果使用了TA指标函数,会自展示在图标上,买卖也会标记。
  • 9.手续费设置
  • 10. Adicionar bolsa - pares de transações e ativos.
  • 11.回测参数设置,如果参数是数字还支持一键优化参数,自动按照一定范围遍历参数回测。

Diferenças entre o retest e o disco real

  • 1.回测时有效的行情只有GetTicker和GetRecords,其它如获深度、成交历史都不是真实的(因为数据量太大,实盘级回测目前已经支持这些数据,但只有最近数据)。
  • 2.回测添加的交易所都是独立账户,目前不支持切换交易对。因此无法在一个账户里操作两个交易对。
  • 3.回测中无法使用网络请求。
  • 4.回测无法使用IO扩展,只能操作最基础的API。
  • 5.回测只能获取标准的数据,像Info之类的牵扯到实盘的数据不存在。
  • 6.回测中也有可能不成交,注意冻结订单情况。
  • 7.商品期货回测不支持市价单。

A estratégia permite erros e erros comuns

Como mencionado anteriormente, o uso de uma interface de API no disco real pode causar um erro de acesso e retornarnullA estratégia é de tolerância a erros, pois o uso dos dados pode causar erros e causar o parada do disco real.

O uso frequente de erros

Os erros mais comuns são:

  • O API acessa o erro de rede, o intervalo de tempo de acesso à interface retornará nulo, quando o uso é um erro.
  • A troca limita erros, tais como restrição de IP, precisão de encomenda, frequência de acesso, erros de parâmetros, insuficiência de ativos, mercado incapaz de negociar, revogação de ordens transacionadas, etc. Pode consultar a documentação API de acordo com o código de erro.
  • Os exchanges retornam erros de dados, que ocorrem ocasionalmente, como profundidade de retorno em branco, informações de conta atrasadas, status de ordem atrasado, etc.
  • Erro de programação e lógica.

Antes de usar a API para retornar dados, é necessário julgar se eles são nulos ou não.

//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
     Log('ticker 获取出错');
     ticker = exchange.GetTicker();
 }
 Log(ticker.Last);
 // 2.判断不为null再进行引用
 var ticker = exchange.GetTicker();
 if(!ticker){
     Log(ticker.Last);
 }
 // 3._C()函数重试
 var ticker = _C(exchange.GetTicker);
 Log(ticker.Last);
 // 4. try catch容错
 try{
     var ticker = exchange.GetTicker();
     Log(ticker.Last);
 }
 catch(err){
     Log('ticker 获取出错');
 } 

Se você quiser obter informações erradas, pode usá-las.GetLastError()A função, que retornará a strings de informação de erro da última vez, pode ser processada por diferença.

Perguntas frequentes

O blogueiro, que escreveu sobre o assunto em seu blog, escreveu:https://www.fmz.com/bbs-topic/1427Aqui estão alguns resumos, e se você tiver algum problema, você pode pesquisar por Ctrl+F.

Como é que se coloca um administrador?

Para mais informações, veja a seção Adicionar administradores.

Afinal, o que é que a gente está a fazer?

https://www.fmz.com/marketsAlguns oferecem serviços de transcrição, ou consultam em grupo, e precisam de se comunicar, a seu próprio risco.

Acesso a todas as interfaces indica timeout

O termo "interface" refere-se ao tempo de tempo de acesso ao exchange, que não é um problema se ocasionalmente ocorrer, se for sempre indicado que a rede em que se encontra não pode ser acessada, sendo necessário usar um servidor estrangeiro.

Erro ERR_INVALID_POSITION

O sistema de reavaliação de erros, geralmente um erro de redação de estratégia, provoca o erro de tentativa de colocar um plano de negociação quando não há posições ou quando há um número insuficiente de posições.

símbolo não definido

A função exchange.SetContractType é uma função que define o tipo de contrato de um mercado de futuros.

BITMEX 429 erro, {error:{message:Rate limit exceeded retry in 1 seconds......}}

A frequência de acesso às interfaces das bolsas é muito alta.

O tempo está fora de alcance.

O cronograma do servidor está fora de alcance e precisa de atualização do tempo do servidor, não pode desviar muito.

GetOrder ((455284455)): Erro: ID de ordem inválido ou ordem cancelada.

A informação sobre as ordens é inacessível, já que algumas ordens são canceladas.

GetOrders: 400: {code:-1121,msg:Invalid symbol.}

Os pares de transações inválidos são verificados para verificar se há um erro na configuração do par de transações.

Descifrar chave secreta falhou

Falha na resolução do API KEY. Se o código FMZ foi alterado após a configuração do APIKEY, tente adicionar a página do exchange no FMZ e reconfigure o APIKEY.

Signature not valid: Invalid submission time or incorrect time format (Assinatura não válida: tempo de submissão inválido ou formato de tempo incorreto)

Recomenda-se o uso de servidores Linux, ou o software de sincronização de tempo de instalação em sistemas windows em que o problema ocorre.

Por que um agente global é configurado e os administradores não podem acessar a API da bolsa?

Os agentes globais não possuem portas de rede de servidores de servidores de servidores e, devido a problemas de latência, é melhor que os servidores de servidores internacionais sejam implantados.

Como é que a estratégia é mantida local e não no FMZ que está a ser carregado?

O Python permite importar arquivos locais, salvar políticas normalmente escritas com base na API do FMZ e colocá-las no seu servidor sob o caminho de execução.

#!python2.7

def run(runfile):
      with open(runfile,"r") as f:
            exec(f.read())
            
def main():
    run('my.py')

Como usar a rede de testes da bolsa ou mudar o endereço da API

Usando o exchange.SetBase ((() você pode mudar diretamente para o endereço de base da API correspondente.

exchange.SetBase("https://www.okex.me")

Mais.

Gaoencheerapi

CiênciaComo implementar a política localmente? Eu escrevi uma simples declaração de saída de Log e segui a operação no final da frase. O primeiro passo é usar um notebook como servidor e executar um programa administrador. O segundo passo é escrever um simples programa test.py para exportar informações de Log (uma função de interface API para FMZ); O terceiro passo, como no final do texto, é escrever um runfile e executá-lo através do run.py, chamando test.py.

glicogênioEu comprei um curso de negociação de quantidade em nuvem, e agora eu vou ver.

MonuRajakMuitos

MonuRajak- Olá.

O meu irmão.Aprender

WqyHá um pequeno erro de texto, GetAccount obtém a conta. Na introdução, FrozenStocks deveria ser um saldo congelado e não um saldo disponível.

- O que é que se passa?getorder outtime O que fazer para obter um pedido fora do horário, a troca da okx

O que é que ele tem a dizer?A taxa de garantia de ativos não é acessível, até 0% será forçada a estabilizar a taxa de garantia de ativos

Shifeng2020Eu estou olhando para o gráfico de 1 minuto k, então o tempo de sono do ciclo morto do Python pode ser definido como 0,1s, ou seja, sleep ((100)

O Vento do Orienteexchange.SetDirection (("closebuy"); // Se for um contrato permanente, configure diretamente o exchange.SetDirection (("sell") Aqui eu experimentei o contrato permanente OKex, que se for definido para vender, fica imediatamente vazio, não é muito barato.

O Vento do Orienteexchange.SetDirection (("closebuy"); // Se for um contrato permanente, configure diretamente o exchange.SetDirection (("sell") Aqui eu experimentei o contrato permanente OKex, que se for definido para vender, fica imediatamente vazio, não é muito barato.

O Vento do OrienteHá dois erros de ortografia no código do GetOrders. Um é que a função foi escrita como fuction, e o outro como condição para o loop for.

O Vento do OrienteA culpa é minha. exchange.Buy ((-1, 0.5), o par de negociação é o ETH_BTC, o que representa a compra de ETH de 0.5BTC no preço do mercado exchange.Buy ((price, 0.5), se for esse tipo de lista de preços, representa comprar 0.5ETH no preço do preço

O Vento do Orienteexchange.Buy ((-1, 0.5), o par de negociação é ETH_BTC, representando a compra de ETH de 0.5BTC pelo preço do mercado Aqui é o que deveria ser o óleo de alumínio representando o preço de mercado para comprar o óleo de alumínio de 0,5 ETH.

glicogênioObrigado.

Ervas daninhasO curso está disponível em https://study.163.com/course/courseMain.htm?share=2&shareId=400000000602076&courseId=1006074239&_trace_c_p_k2_=c3f5d238efc3457d93c8b92c0398d2b2

Ervas daninhasAdicione o WeChat na página inicial e faça parte do grupo.

WqyPor vezes, eu tenho problemas para perguntar se temos um grupo oficial de discussão.

Ervas daninhasMudança

Ervas daninhasRecuperação

Ervas daninhasA informação original pode ser obtida usando o GetRawJSON ou através de um campo de informações

O Vento do OrienteMuito bem, muito bem, e também há respostas administrativas.

Ervas daninhasOh, corrigido, obrigado por apontar o erro.

Ervas daninhasAlguns contratos permanentes permitem a posse bidirecional e precisam de um equilíbrio.