avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

Sistema de negociação de média móvel adaptável de moeda digital e análise de algoritmo KAMA - com base no software de negociação quantitativa do inventor

Criado em: 2019-07-06 16:21:15, atualizado em: 2023-10-24 21:42:44
comments   1
hits   5793

[TOC]

Sistema de negociação de média móvel adaptável de moeda digital e análise de algoritmo KAMA - com base no software de negociação quantitativa do inventor

Introdução à Média Móvel Adaptativa KAMA

Como o nome sugere, a média móvel adaptativa (KAMA) pertence à categoria de média móvel, mas, diferentemente da média móvel tradicional, ela é muito “inteligente”. Sabemos que as médias móveis comuns têm muitas deficiências. Por exemplo, a média móvel de curto prazo está próxima da tendência de preço e é muito sensível, mas é fácil gerar sinais falsos; a média móvel de longo prazo é muito precisa em julgar tendências, mas muitas vezes demora um pouco para o mercado reagir.

A “inteligência” do KAMA reside na sua capacidade de ajustar autonomamente a sua sensibilidade com base nas condições atuais do mercado, ou seja, a volatilidade. Sua manifestação é: em um mercado volátil, as mudanças no KAMA desaceleram significativamente; quando surge uma tendência, ele reage rapidamente. Na negociação real, sua vantagem é que pode reduzir os custos de transação causados ​​pela “desordem diária” e permitir que você embarque a tempo quando o mercado decolar.

KAMA no gráfico

Sistema de negociação de média móvel adaptável de moeda digital e análise de algoritmo KAMA - com base no software de negociação quantitativa do inventor

Método de cálculo KAMA

  • Direção (DIR) = Preço de fechamento - Preço de fechamento n dias atrás
  • Volatilidade (VIR) = soma(abs(preço de fechamento - preço de fechamento do dia de negociação anterior), n)
  • Eficiência (ER) = Direção / Volatilidade
  • Rápido = 2 / (n1 + 1)
  • Lento = 2 / (n2 + 1)
  • Suavidade (CS) = Eficiência * (Rápido - Lento) + Lento
  • Coeficiente(CQ) = Suavização * Suavização
  • KAMA = Média ponderada exponencialmente (Média móvel dinâmica (preço de fechamento, coeficiente), 2)

Entre eles, n, n1 e n2 são todos parâmetros de período. Por padrão, n é 10 períodos, n1 é 2 períodos de curto prazo e n2 é 30 períodos de longo prazo. Este também é um conjunto de parâmetros reconhecidos por Perry Kaufman, o autor de KAMA. n é usado para direção e eficiência de cálculo de volatilidade. n1 e n2 são os períodos da média móvel rápida e da média móvel lenta. Em teoria, quanto maior o parâmetro n1, mais suave será o KAMA.

O método de cálculo do KAMA é: primeiro calcular a direção (DIR) e a volatilidade (VIR) e, em seguida, calcular a eficiência com base na razão das duas. Eficiência (ER) é uma medida do grau de mudança de preço e é calculada simplesmente: Direção / Volatilidade. O resultado do cálculo está entre 0 e 1. Quando o valor ER está mais próximo de 0, indica que o mercado está em um estado volátil. Quando o valor ER está mais próximo de 1, indica que o mercado está em um estado de tendência.

Uma vez calculada a eficiência (ER), a constante de suavização (CS) pode ser derivada combinando a média móvel rápida e a média móvel lenta: eficiência * (rápido - lento) + lento. CS representa a velocidade do movimento da tendência. De acordo com a fórmula de cálculo de CS, podemos descobrir que a mudança de CS é sempre proporcional à mudança de ER.

O coeficiente (CQ) é então calculado com base no poder de suavização, com o objetivo de fazer com que os parâmetros de ciclo lento desempenhem um papel mais importante no cálculo, o que também é uma abordagem mais conservadora. A suavização final do KAMA é determinada pelo coeficiente (CQ). No cálculo do KAMA, o coeficiente (CQ) determina os parâmetros do período das duas últimas suavizações de média móvel, a saber: média ponderada exponencial (média móvel dinâmica (preço de fechamento, coeficiente), 2).

Como usar o KAMA

Embora o método de cálculo do KAMA seja muito complicado, seu uso é semelhante ao das médias móveis comuns. Em aplicações práticas, ele pode não apenas determinar tendências de mercado, mas também ser usado para pontos de compra e venda precisos. Por ser muito “inteligente”, ele pode ser usado em muitas estratégias de negociação e vale até a pena tentar em moedas digitais.

  • Quando o preço for maior que o KAMA e o KAMA estiver apontando para cima, abra uma posição longa.
  • Quando o preço é menor que o KAMA, e o KAMA está caindo, uma posição curta é aberta.
  • Quando o preço é menor que o KAMA, ou o KAMA cai, as posições longas são fechadas.
  • Quando o preço é maior que o KAMA, ou o KAMA sobe, a posição vendida é fechada.

Construindo uma estratégia de negociação baseada em KAMA

Etapa 1: Calcular KAMA Perceber! No canto superior esquerdo, selecione a linguagem de programação:My语言. Já existe um KAMA pronto na biblioteca talib, mas ele tem apenas um parâmetro externo (n) período, e n1 e n2 têm como padrão 2 e 30. As estratégias neste artigo são apenas para referência. Amigos com boas habilidades práticas também podem escrever as suas próprias. Então a linguagem My também pode ser misturada diretamente com a linguagem JavaScript. Preste atenção ao código a seguir:

%%  // My语言内JavaScript的标准格式
scope.KAMA = function() {
    var r = _C(exchange.GetRecords);  // 获取K线数组
    if (r.length > 140) {  // 过滤K线长度
        var kama = talib.KAMA(r, 140);  // 调用talib库计算KAMA
        return kama[kama.length - 2];  // 返回KAMA的具体数值
    }
    return;
}
%%  // My语言内JavaScript的标准格式

Etapa 2: Calcule as condições de negociação e faça uma ordem

%%
scope.KAMA = function() {
    var r = _C(exchange.GetRecords);
    if (r.length > 140) {
        var kama = talib.KAMA(r, 140);
        return kama[kama.length - 2];
    }
    return;
}
%%

K^^KAMA;  // 把KAMA打印到图表上
A:CLOSE;  // 把收盘价打印到图表上

K > REF(K, 1) && CLOSE > K,BK;  // 开多
K < REF(K, 1) && CLOSE < K,SK;  // 开空
K < REF(K, 1) || CLOSE < K,SP;  // 平多
K > REF(K, 1) || CLOSE > K,BP;  // 平空

Etapa 3: Defina o método de filtragem do sinal de estratégia

%%
scope.KAMA = function() {
    var r = _C(exchange.GetRecords);
    if (r.length > 140) {
        var kama = talib.KAMA(r, 140);
        return kama[kama.length - 2];
    }
    return;
}
%%

K^^KAMA;
A:CLOSE;

K > REF(K, 1) && CLOSE > K,BK;
K < REF(K, 1) && CLOSE < K,SK;
K < REF(K, 1) || CLOSE < K,SP;
K > REF(K, 1) || CLOSE > K,BP;

AUTOFILTER;  // 启用一开一平信号过滤机制

Backtesting de estratégia

Para ficar mais próximo do ambiente de negociação real, usamos um slippage de 2 saltos para abertura e fechamento de posições para executar testes de estresse durante o backtesting. O ambiente de teste é o seguinte:

  • Troca: BitMEX
  • Tipo de mercado: XBTUSD
  • Instrumento de negociação: XBTUSD
  • Hora: 1 de julho de 2017 ~ 1 de julho de 2019
  • Ciclo da linha K: diário
  • Deslizamento: 2 saltos para abertura e fechamento de posições

Ambiente de teste Sistema de negociação de média móvel adaptável de moeda digital e análise de algoritmo KAMA - com base no software de negociação quantitativa do inventor Detalhes da receita Sistema de negociação de média móvel adaptável de moeda digital e análise de algoritmo KAMA - com base no software de negociação quantitativa do inventor Curva de financiamento Sistema de negociação de média móvel adaptável de moeda digital e análise de algoritmo KAMA - com base no software de negociação quantitativa do inventor

A julgar pelos resultados do backtest acima, essa estratégia simples de KAMA realmente correspondeu às expectativas. Mesmo no super bear market da moeda digital em 2018, a curva de capital não mostrou um grande retrocesso, e o mercado estava em um período volátil de longo prazo . Abrir e fechar posições para frente e para trás causará perdas desnecessárias. Ao mesmo tempo, também teve um bom desempenho no mercado de alta em 2019.

Código fonte da estratégia

Clique para copiar o código-fonte completo da estratégia, com base em Minha linguagem, adequado para futuros de commodities e moedas digitais

Resumir

Uma estratégia excelente que pode ser colocada em prática deve ter sido refinada e aprimorada repetidamente. As estratégias neste artigo ainda têm muito espaço para otimização e atualização, como adicionar certas condições de filtragem, realização de lucro ativa e stop- condições de perda, etc. Como um tipo de média móvel, o KAMA herda as vantagens e desvantagens das médias móveis comuns e as melhora ao mesmo tempo. Em um mercado imprevisível, mesmo que um “melhor parâmetro” seja fixo, é difícil se adaptar às condições futuras do mercado. Portanto, esse método de seguir a tendência e mudar com as condições do mercado pode ser uma escolha melhor.