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

Estratégia de negociação quantitativa com análise de dinâmica de preços em Python

Autora:FMZ~Lydia, Criado: 2023-01-11 11:35:36, Atualizado: 2023-09-20 11:20:06

img

Estratégia de negociação quantitativa com análise de dinâmica de preços em Python

Introdução à estratégia de negociação de dinâmica de preços

A estratégia de negociação de momentum analisa a comparação de forças de posição longa e curta através da relação entre o preço de abertura, o preço mais alto e o preço mais baixo durante um determinado período de tempo, o que indiretamente nos permite entender a distribuição atual de forças longas e curtas no mercado. A análise de flutuações de preços é usada para rastrear movimentos futuros de preços.

A análise do momento do preço tem sido amplamente usada em ordens especulativas manuais tradicionais, especialmente na determinação da tendência unilateral no dia. O velho clichê, o que é tirar proveito da situação. A melhor quantificação da situação é a quantificação da comparação de força entre os lados da posição longa e curta. A análise do momento do preço é um dos melhores indicadores.

Este trabalho utilizará esta estratégia para desenvolver um programa automatizado de negociação a vista para moeda digital no mercado de capitais.Huobi.

Fórmula de cálculo da dinâmica dos preços

AR = [Suma de todos (abertos) durante N dias/Suma de todos (abertos) durante N dias] * 100

Entre eles:

  • N: A janela estatística do ciclo de tempo diário é geralmente de 30 dias por defeito, porque o dia de negociação efetivo de um mês é de cerca de 30 dias (transações de moeda digital 24 horas por dia, 24 horas por dia, o que pode ser conservador)

  • Alto: o preço mais elevado num único dia

  • Aberto: preço de abertura de um único dia

  • Baixo: o preço mais baixo num único dia

Como utilizar o ímpeto de preços

A dinâmica do preço reflete a posição do preço de abertura entre o preço mais alto e o preço mais baixo durante um período de tempo. Esta posição é a base para julgarmos a força de ambas as partes.

  • Assumimos que este valor é de cerca de 100. se for superior a 100, a força da posição longa começa a aumentar. se for inferior a 100, a força da posição curta começa a se reunir.
  • Quando o valor da AR aumenta, isso significa que o mercado está ativo e popular, e as posições longas estão subindo todo o caminho, mas se o preço for muito alto, isso significa que o preço entrou na área de sobrecompra, e você deve escolher o momento para fechar a posição.
  • Quando o valor da AR diminui, isso indica que o mercado está em declínio e a posição curta está em pleno andamento, o que requer os esforços das posições longas. Se o valor da AR for muito baixo, isso indica que o preço pode ter caído na área de sobrevenda e você pode considerar esperar pela oportunidade de ir longo. Geralmente, quando o valor da AR cai abaixo de 50, o preço vai parar de cair e subir a qualquer momento.

Nota: Os números acima são todos valores padrão e não são fórmulas de verdade. No processo de negociação real, devemos ajustar este intervalo para adaptar-se ao estado atual do mercado à medida que o mercado muda.

Implementação de uma estratégia de negociação quantitativa para o ímpeto de preços no Python

Como de costume, abrimos.FMZ.COM, faça login na nossa conta, clique no painel e implante o docker e o robô.

Por favor, consulte meu artigo anterior sobre como implantar um docker e robô:https://www.fmz.com/bbs-topic/9864.

Os leitores que desejam comprar seu próprio servidor de computação em nuvem para implantar dockers podem consultar este artigo:https://www.fmz.com/digest-topic/5711.

Em seguida, clicamos na biblioteca Estratégia na coluna da esquerda e clique em Adicionar estratégia.

Lembre-se de selecionar a linguagem de programação como Python no canto superior direito da página de edição de estratégia, como mostrado na figura:

img

Em seguida, escreveremos o código Python na página de edição de código. O código a seguir tem comentários muito detalhados linha a linha, os leitores podem ter seu tempo para entender. Mais importante, embora esta estratégia seja escrita com base na negociação spot, a extensão do código a seguir também leva em conta a negociação de futuros. Os leitores interessados podem tentar reescrever o código a seguir na negociação de futuros. A lógica da própria estratégia é universal. Na plataforma FMZ Quant, preparamos as interfaces API das principais bolsas de futuros e futuros spot para você, então a reescrita será muito fácil e conveniente.

Vamos usar o Bitcoin spot da Huobi como alvo de negociação e começar a implementar esta estratégia:

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

Backtesting da estratégia

Depois de escrever a estratégia, a primeira coisa que precisamos fazer é testá-la para ver como ela se comporta nos dados históricos. Mas note que o resultado do backtest não é igual à previsão do futuro. O backtest só pode ser usado como referência para considerar a eficácia de nossa estratégia. Uma vez que o mercado muda e a estratégia começa a ter grandes perdas, devemos encontrar o problema a tempo e, em seguida, mudar a estratégia para se adaptar ao novo ambiente de mercado, como o limiar mencionado acima. Se a estratégia tiver uma perda superior a 10%, devemos parar a operação da estratégia imediatamente e, em seguida, encontrar o problema. Podemos começar a ajustar o limiar.

Clique em backtest na página de edição de estratégia. Na página de backtest, o ajuste de parâmetros pode ser realizado de forma conveniente e rápida de acordo com diferentes necessidades.

O tempo de backtest é o último mês. Clique para adicionar a troca spot Huobi e alvo de negociação BTC.

img

Resultados dos testes de regresso:

img

Podemos ver que a estratégia funcionou bem no backtest deste mês.

Vantagens e desvantagens da estratégia de dinâmica de preços

  • Vantagens Em comparação com alguns outros indicadores técnicos tradicionais, a vantagem do momentum de preços é que ele não usa um único preço de abertura ou preço de fechamento, mas introduz os preços mais altos e mais baixos. Eles são comparados dinamicamente, tornando a informação de mercado mais abrangente, sensível e macro através de flutuações de preços intradiários.

  • Desvantagens Usar o valor do ímpeto de preço de forma independente para julgar se o preço é muito alto ou baixo, para julgar longo / curto, é provável que saia cedo em uma onda de tendências importantes, ou para a pesca de fundo no início de uma onda de grande mercado de baixa.

A definição do limiar da estratégia também precisa ser determinada de acordo com as características do objeto de negociação. A flutuação de preços do mercado de moeda digital é relativamente grande, e o volume de negociação é enorme, especialmente nas principais moedas como o Bitcoin, e não há limite para a alta e queda, portanto, o valor do limiar é maior do que o do mercado de ações tradicional. A linha de 80 sobrevendidos é geralmente difícil de tocar, e há poucos sinais de compra; Enquanto a linha de sobrecompra de 170 é muitas vezes abaixo do limiar, o sinal de venda é ativado com freqüência. Isso fará com que a estratégia esteja em posição curta na maior parte do tempo, e a utilização do fundo se torne muito baixa. Por exemplo, desde janeiro deste ano, o preço do Bitcoin subiu de 3500 para quase 13000 em uma onda de mercado de touros. O valor do limiar cruzou a linha de 170 muito cedo e não temos sido muito altos desde então. Se, de acordo com a linha tradicional, vendermos acima de 170 e não conseguirmos obter lucros, haverá apenas uma pequena porção no mercado de touro

Portanto, nunca houve nenhuma estratégia de negociação do Santo Graal no mercado. Você não pode sempre fazer lucros sem backtesting e depuração. Como os traders subjetivos, nós, os traders quantitativos, acabamos com o mesmo objetivo de maneiras diferentes. Precisamos nos adaptar às condições locais de acordo com as mudanças do mercado e responder às mudanças do mercado. Quando a estratégia é ineficaz, precisamos ajustá-la a tempo.

Se tiver alguma dúvida, pode deixar uma mensagem emhttps://www.fmz.com/bbs, quer se trate da estratégia ou da tecnologia da plataforma, a plataforma FMZ Quant tem profissionais prontos para responder às suas perguntas.


Relacionados

Mais.