Taxa de desvio estratégia de negociação BIAS

Autora:Bem-estar, Criado: 2020-06-30 09:58:26, Atualizado: 2023-10-28 15:29:08

[TOC]

img

Resumo

Como diz o ditado, este mundo se separará depois de muito tempo unido. Também fará o oposto depois de muito tempo dividido. E esse fenômeno também existe no mercado de futuros. Não há variedade que só suba, mas não caia. Mas quando subir e quando cair, depende da taxa de desvio. Neste artigo, usaremos a taxa de desvio para construir uma estratégia de negociação simples.

Breve introdução

img

A taxa de desvio BIAS é um indicador técnico derivado da média móvel. É principalmente na forma de uma porcentagem para medir o grau de desvio do preço da média móvel em flutuações. Se a média móvel é o custo médio de um comerciante, a taxa de desvio é a taxa média de retorno do comerciante.

O princípio da taxa de desvio

A base teórica da taxa de desvio é uma análise do coração do comerciante. Quando o preço é maior do que o custo médio do mercado, isso significa que os comerciantes de posição longa terão a idéia de retirar os lucros, o que fará com que o preço caia. Quando o preço é inferior ao custo médio do mercado, isso significa que os vendedores em curto são lucrativos, e a idéia de retirar o lucro fará com que o preço suba.

  • Quando o preço se desvia para cima da média móvel, a taxa de desvio é muito grande, e há uma alta probabilidade de que o preço caia no futuro.

  • Quando o preço se desvia da média móvel para baixo, a taxa de desvio é muito pequena e há uma alta probabilidade de o preço subir no futuro.

Embora a média móvel seja calculada a partir do preço, em termos de forma externa, o preço definitivamente se moverá mais perto da média móvel, ou o preço sempre flutuará em torno da média móvel.

Fórmula para o cálculo da taxa de desvio

Taxa de desvio = [ (o preço de fechamento do dia - preço médio de N dias) / preço médio de N dias] * 100%

Entre eles, N é o parâmetro da média móvel, porque o período de N é diferente, o resultado do cálculo da taxa de desvio também é diferente. Em geral, os valores de N são: 6, 12, 24, 36, etc. No uso real, ele também pode ser ajustado dinamicamente de acordo com diferentes variedades. No entanto, a seleção de parâmetros é muito importante. Se o parâmetro for muito pequeno, a taxa de desvio será muito sensível, se o parâmetro for muito grande, a taxa de desvio será muito lenta. Os resultados do cálculo da taxa de desvio são positivos e negativos. Quanto maior a taxa de desvio positivo, maior o lucro dos touros e maior a probabilidade de correção de preço.

Estratégia lógica

Uma vez que a taxa de desvio é outra forma de média móvel, então também podemos adaptar uma estratégia de taxa de desvio duplo baseada na estratégia da média móvel dupla. A julgar pela relação posicional entre a taxa de desvio de curto prazo e a taxa de desvio de longo prazo, o estado atual do mercado é julgado. Se a taxa de desvio de longo prazo for maior que a taxa de desvio de curto prazo, ela realmente representa a média móvel de curto prazo para cima da média móvel de longo prazo, e vice-versa.

  • Abertura de posição longa: se não houver posição de detenção corrente e a taxa de desvio a longo prazo for superior à taxa de desvio a curto prazo
  • Abertura de posição curta: se não houver posição de detenção corrente e a taxa de desvio de longo prazo for inferior à taxa de desvio de curto prazo
  • Fechamento de posição longa: se houver uma posição longa de detenção e a taxa de desvio a longo prazo for inferior à taxa de desvio a curto prazo
  • Fechamento de posição curta: se houver uma posição curta de detenção e a taxa de desvio a longo prazo for superior à taxa de desvio a curto prazo

Escrever estratégias

Passo 1: Escrever um quadro estratégico

# Strategy main function
def onTick():
     pass


# Program entry
def main():
     while True: # Enter infinite loop mode
         onTick() # execution strategy main function
         Sleep(1000) # sleep for 1 second

A plataforma FMZ adota o modo de formação por rotação.mainfunção e umonTickA função principal é a função de entrada da estratégia, e o programa executará o código linha por linha a partir da função principal.whileciclo e executar repetidamente oonTickTodos os códigos essenciais da estratégia são escritos noonTick function.

Passo 2: Defina posições virtuais

mp = 0

A vantagem das posições virtuais é que é simples de escrever, e a operação iterativa é rápida. É geralmente usado no ambiente de backtest. Assume-se que cada ordem é completamente preenchida, mas a posição real é geralmente usada na negociação real.

Passo 3: Obter linha K

exchange.SetContractType('rb000') # Subscribe to futures varieties
bars_arr = exchange.GetRecords() # Get K-line array
if len(bars_arr) <long + 1: # If the number of K lines is too small
     return

Utilizando a função FMZSetContractType, pode subscrever o contrato do índice de rebar passando em rb000, mas no backtest e na situação real do mercado, o índice de rebar é usado como os dados, e o contrato principal específico é usado para colocar o pedido.GetRecordsUma vez que leva um certo período para calcular a taxa de desvio, a fim de evitar erros de programa, se não houver linhas K suficientes, useifinstruções para filtrar.

Etapa 4: Calcular a taxa de desvio

close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average value of the previous K line
bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

De acordo com a fórmula para calcular a taxa de desvio, primeiro obtemos o preço de fechamento. Nesta estratégia, usamos o preço de fechamento da linha K anterior, o que significa que o sinal da linha K atual é estabelecido e a próxima linha K é para a colocação de ordens.talibPor exemplo, a média móvel é:TA.MAEsta função recebe 2 parâmetros, nomeadamente: K linha matriz e período média móvel.

Etapa 5: Envio de pedidos

global mp # global variables
current_price = bars_arr[-1]['Close'] # latest price
if mp> 0: # If you are holding long positions
    if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
        exchange.SetDirection("closebuy") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # Closing long positions
        mp = 0 # reset virtual holding positions
if mp <0: # If you are holding short positions
    if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
        exchange.SetDirection("closesell") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # closing short positions
        mp = 0 # reset virtual holding positions
if mp == 0: # If there is no holding position
    if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
        exchange.SetDirection("buy") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # open long positions
        mp = 1 # reset virtual holding position
    if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
        exchange.SetDirection("sell") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # open short positions
        mp = -1 # reset virtual holding position

Estratégia completa

# Backtest configuration
'''backtest
start: 2018-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''

# External parameters
short = 10
long = 50


# Global variables
mp = 0


# Strategy main function
def onTick():
    # retrieve data
    exchange.SetContractType('rb000') # Subscribe to futures varieties
    bars_arr = exchange.GetRecords() # Get K-line array
    if len(bars_arr) <long + 1: # If the number of K lines is too small
        return

    # Calculate BIAS
    close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
    ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average of the previous K line
    bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
    ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
    bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

    # Placing Orders
    global mp # global variables
    current_price = bars_arr[-1]['Close'] # latest price
    if mp> 0: # If you are holding long positions
        if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
            exchange.SetDirection("closebuy") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # closing long positions
            mp = 0 # reset virtual holding position
    if mp <0: # If you are holding short positions
        if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
            exchange.SetDirection("closesell") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # closing short positions
            mp = 0 # reset virtual holding position
    if mp == 0: # If there is no holding position
        if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
            exchange.SetDirection("buy") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # opening long positions
            mp = 1 # reset virtual holding position
        if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
            exchange.SetDirection("sell") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # open short positions
            mp = -1 # reset virtual holding position
        

# Program entry function
def main():
    while True: # loop
        onTick() # execution strategy main function
        Sleep(1000) # sleep for 1 second

A estratégia completa foi publicada no sítio web da FMZ:https://www.fmz.com/strategy/215129

Backtest da estratégia

Configuração de teste de retorno

img

Relatório de desempenho

img img

Curva dos fundos

img

Resumo

A taxa de desvio é uma ferramenta de negociação simples e eficaz que pode fornecer uma referência eficaz para os traders.


Relacionados

Mais.