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

Análise de dados de sequência de tempo e rastreamento de dados do Tick

Autora:Bem-estar, Criado: 2019-08-08 10:05:45, Atualizado: 2024-12-19 00:24:00

img

Dados da sequência de tempo

A sequência de tempo é uma sequência de dados obtidos em intervalos de tempo contínuos e iguais. No investimento quantitativo, esses dados se expressam principalmente como movimentos de preços e pontos de dados que acompanham os indicadores de investimento. Por exemplo, o preço de uma ação, os dados de sequência de tempo registrados periodicamente em um determinado período de tempo podem ser referidos ao gráfico a seguir, o leitor obtém uma visão mais clara:

img

Como pode ser visto, a data está no eixo x e o preço no eixo y. Neste caso, o intervalo de tempo de um eixo de barras consecutivas significa que o número de dias no eixo x está separado por 14 dias: note a diferença entre 7 de março de 2005 e o próximo ponto, 31 de março de 2005, 5 de abril de 2005 e 19 de abril de 2005.

No entanto, quando você usa dados de uma sequência de tempo, muitas vezes você vê mais do que apenas dados que contêm apenas duas colunas de data e preço. Na maioria das vezes, você usará dados que contêm cinco colunas: ciclo de dados, preço de abertura, preço máximo, preço mínimo e preço de fechamento. Isso significa que, se seu ciclo de dados for configurado para o nível do dia, as mudanças de preços altos, abertos, baixos e de fechamento do dia serão refletidas nos dados dessa sequência de tempo.

O que são dados do Tick?

Os dados do tick são a estrutura de dados de transações mais completa em uma bolsa. Também é uma forma de extensão dos dados da sequência de tempo mencionados acima, incluindo: preço de abertura, preço máximo, preço mínimo, preço mais recente, volume de transações, volume de transações. Se compararmos os dados de transações a um rio, os dados do tick são os dados de um cruzamento transversal do rio.

img

Como mostrado no gráfico acima, cada movimento é impulsionado para o mercado em tempo real; enquanto o mercado doméstico, duas vezes por segundo, se houver um movimento nesse período, gerará um snapshot e será impulsionado. Em comparação, o volume de impulso de dados só pode ser considerado como OnTime, e não como OnTick.

Todos os códigos e dados de sequência de tempo deste tutorial são obtidos na plataforma de quantificação do inventor.

Dados do Tick quantificados pelo inventor

Embora os dados de Tick domésticos não sejam Tick em sentido real, esses dados podem ser usados para fazer um retraso, pelo menos para aproximar-se infinitamente e reduzir a realidade. Cada Tick mostra os principais parâmetros do produto no mercado naquele momento e, no disco físico, nosso código, que segue a teoria de 2 Tick por segundo.

img

Além disso, no inventor quantificação, mesmo que os dados sejam carregados em ciclos de 1 hora, ainda é possível ajustar a granulação dos dados, por exemplo, ajustar a granulação dos dados para 1 minuto. Neste momento, a linha K de 1 hora é composta por dados de 1 minuto. Claro, quanto menor a granulação, maior a precisão.

img

Agora, você já entendeu os conceitos básicos necessários para concluir este tutorial. Estes conceitos voltarão em breve, e você aprenderá mais sobre os conceitos relacionados no final deste tutorial.

Os amigos interessados em saber mais sobre o conteúdo desta seção podem consultar:https://www.fmz.com/bbs-topic/1651Veja mais informações

Estabelecer um ambiente de trabalho

O conceito de administrador, para leitores com experiência em programação, pode ser imaginado como um sistema Docker embalado oficialmente, que já contém as interfaces de API públicas de várias exchanges tradicionais e os detalhes técnicos para a redação e revisão de estratégias. A intenção inicial do sistema é evitar que os traders quantificados possam se concentrar na redação e no design de estratégias quando usam a plataforma de quantificação do inventor. Estas tecnologias são apresentadas aos autores de estratégias em forma de detalhes embalados para economizar muito tempo e energia.

  • Implementação do sistema de administradores da plataforma de inventores de quantificação

A implementação do administrador é dividida em dois tipos:

O método A: os usuários alugam ou compram os próprios servidores e os implantam em todas as principais plataformas de computação em nuvem, como AWS, Ali Cloud, Digital Ocean e Google Cloud. A vantagem é que tanto a segurança estratégica quanto a segurança do sistema são garantidas.

Para mais informações sobre o conteúdo, veja:https://www.fmz.com/bbs-topic/2848

Método B: implementação de servidores públicos usando a plataforma de quantificação do inventor, a plataforma oferece três locais de implementação em Hong Kong, Londres e Hangzhou, onde os usuários podem ser implantados de acordo com o local da bolsa em que desejam negociar, segundo o princípio da proximidade.

img

Para que os iniciantes entendam, este artigo usará o método B.

A função específica é:登陆FMZ.COMClique no centro de controle, administrador, clique no botão alugar administrador na página de administradores.

Entrou o código e foi implementado com sucesso, como mostra o gráfico abaixo:

img

  • O conceito de sistema robótico e a relação entre administradores

Como mencionado acima, o administrador é como um sistema docker, um sistema docker é como um conjunto de padrões, que nós implementamos e precisamos gerar um conjunto de instâncias para esse padrão, que é um robô.

A criação de um robô é muito simples: depois de implementar um bom administrador, clique no menu de robôs à esquerda, clique em criar um robô, preencha um nome no nome da etiqueta e selecione um dos hospedeiros que você acabou de implementar. A opção de parâmetros na caixa de diálogo abaixo e o ciclo da linha K podem ser selecionados de acordo com as circunstâncias, principalmente com a opção de estratégia de negociação.

img

Até agora, o nosso ambiente de trabalho foi construído e, como se pode ver, é muito simples e eficaz, cada função tem sua função.

Compre uma estratégia de linha média simples no Python

Acima, mencionamos o conceito de dados de sequência de tempo e dados de Tick, e depois ligamos os dois conceitos com uma simples estratégia de equilíbrio.

  • Princípios básicos da estratégia uniforme

Aplicá-los ao mesmo gráfico de K. Quando a linha de ciclo lento atravessa a linha de ciclo lento, chamamos-lhe de golden fork; quando a linha de ciclo lento atravessa a linha de ciclo rápido, chamamos-lhe de dead fork.

A base para a abertura de negociações é que o forco de ouro é aberto mais vezes, o forco morto é aberto mais vezes, e o mesmo vale para o equilíbrio.

让我们打开FMZ.COMNo canto superior esquerdo, selecione Python. Abaixo está o código da estratégia, cada linha tem uma nota muito detalhada, por favor, o leitor deve perceber. Esta estratégia não é uma estratégia de disco real, nunca experimente com dinheiro real, principalmente para que você escreva mais um modelo de conceito geral e aprendizado da estratégia.

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • Reavaliação da estratégia uniforme

Na página de edição da estratégia, nós terminamos de escrever a estratégia, e a seguir vamos rever a estratégia para ver como ela se apresenta no mercado histórico. A revisão desempenha um papel importante no desenvolvimento de qualquer estratégia de quantificação, mas também pode ser apenas uma referência importante. A revisão não é igual à garantia de lucro, porque o mercado está em constante mudança.

Clique em Revisão de Análise e você verá que há muitos parâmetros que podem ser ajustados e modificados diretamente no interior, para políticas posteriores cada vez mais complexas e mais e mais parâmetros.

img

A opção de otimização posterior permite o otimização automática dos parâmetros definidos, e o sistema experimenta vários parâmetros ótimos para ajudar os desenvolvedores de políticas a encontrar a melhor opção.

Através dos exemplos acima, podemos ver que a base da transação de quantificação é a análise de dados de sequência de tempo, e a interação de reexame de dados de tick, e uma lógica complexa, que não pode ser separada dos dois elementos básicos. As diferenças são apenas de dimensão, como o comércio de alta frequência, que exigem uma interseção de dados mais detalhada, dados de sequência de tempo mais ricos.


Relacionados

Mais.