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

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

Autora:Bem-estar, Criado: 2020-06-30 09:58:26, Atualizado: 2025-01-14 20:33:24

[TOC]

Deviation rate BIAS trading strategy

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

Deviation rate BIAS trading strategy

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

Deviation rate BIAS trading strategy

Relatório de desempenho

Deviation rate BIAS trading strategy Deviation rate BIAS trading strategy

Curva dos fundos

Deviation rate BIAS trading strategy

Resumo

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


Relacionado

Mais informações