Estratégia de negociação rápida de média móvel tripla com baixo atraso

Autora:ChaoZhang, Data: 2023-12-25 14:24:38
Tags:

A estratégia é chamada de Low Lag Triple Moving Average Fast Trading Strategy. Sua ideia principal é determinar entradas e saídas com base na cruz de ouro e cruz da morte de três médias móveis com parâmetros diferentes e design de baixo atraso.

Princípio da estratégia

A estratégia usa três médias móveis de baixo atraso, incluindo 12-, 26-, e 55-período TEMA de baixo atraso. Estes três MA representam MA rápido, médio e lento. Quando o MA rápido cruza o MA médio, um sinal de compra é gerado. Quando o MA rápido cruza abaixo do MA médio, um sinal de venda é gerado. Usando o cruzamento dos três MA para determinar os pontos de entrada e saída do mercado, a negociação de alta frequência pode ser alcançada.

A função modelo tema (() é definida no código para calcular o TEMA de baixo atraso. Sua fórmula de cálculo é: TEMA = 2 * EMA - EMA ((). Ele usa a média móvel exponencial dupla EWMA para cálculo. Essencialmente, é uma EMA dupla suavizada com o mérito principal de reduzir em grande parte o efeito de atraso. Assim, pode responder às mudanças de preço mais rapidamente e melhorar a puntualidade dos sinais de negociação.

Especificamente, as regras de entrada desta estratégia são: quando o MA rápido cruza o MA médio e o MA rápido está acima do MA lento, um sinal de compra é gerado.

Análise das vantagens

A maior vantagem desta estratégia é que as entradas e saídas são determinadas de forma rápida e precisa. O design de baixo atraso dos três MA reduz muito o efeito de atraso para que eles possam responder às mudanças de preço rapidamente. Além disso, usar o cruzamento de três MA para determinar sinais evita sinais falsos.

Além disso, esta estratégia é adequada para negociação de alta frequência para capturar lucros de flutuações de preços de curto prazo. Através de entradas e saídas rápidas, pode lucrar com mercados de alta volatilidade.

Análise de riscos

O maior risco é que ocorram flutuações de curto prazo. Devido à alta sensibilidade às mudanças de preço do design de baixo atraso, alguns mercados podem experimentar oscilações de alta frequência.

Além disso, a negociação de alta frequência exige o pagamento de comissões relativamente elevadas e custos de deslizamento.

Além disso, esta estratégia exige que o comerciante tenha fortes capacidades de monitorização em tempo real para atualizar o stop loss e obter lucro em tempo hábil.

Orientações de otimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Otimizar os parâmetros de período dos três AAs para melhor adaptá-los às diferentes características do mercado.

  2. Adicionar indicadores de volatilidade ou indicadores de volume para confirmar sinais e evitar falhas em mercados variáveis.

  3. Incorporar mais fatores para criar mecanismos dinâmicos de suspensão de atraso.

  4. Otimizar o dimensionamento das posições para controlar os riscos comerciais únicos através de técnicas de gestão de fundos.

  5. Incorporar algoritmos de aprendizagem de máquina para otimizar dinamicamente os parâmetros da estratégia.

Conclusão

Esta é uma estratégia de negociação rápida de média móvel tripla de baixo atraso. Através de seu design de baixo atraso, entradas e saídas rápidas podem ser alcançadas, o que é adequado para a negociação de alta frequência para capturar oportunidades de curto prazo. A maior vantagem desta estratégia é que sua determinação de sinal é rápida e precisa. A maior desvantagem é que ela é propensa a ser esmagada em mercados variados.
[/trans]


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("scalping low lag tema etal", shorttitle="Scalping tema",initial_capital=10000, overlay=true)
mav = input(title="Moving Average Type", defval="temadelay", options=["nkclose", "ema", "emadelay", "fastema", "tema", "temadelay"])
lenb = 3
N = input(8)
K = input(1.2)
fracCap = input(1.0)
in = close + K*mom(close,N)
source = close
length = 8
sigma  = 12.0
offset = 0.9
p = 4
// length = 10
// sigma  = 6.0
// offset = 0.85
tema(src,len) => fastemaOut = 2*ema(src, len) - ema(ema(src, len), len)


a = 0.0
b = 0.0
c = 0.0
if mav == "nkclose"
    a := ema(in, 12)
    b := a[1]
    c := a[2]
if mav == "ema"
    a := ema(close, 12)
    b := ema(close, 26)
    c := ema(close, 55)
if mav == "emadelay"
    a := ema(close, 12)
    b := a[1]
    c := a[2]
if mav == "fastema"
    a := ema(in, 12)
    b := ema(in, 26)
    c := ema(in, 55)
if mav == "tema"
    a := tema(close, 12)
    b := tema(close, 26)
    c := tema(close, 55)
if mav == "temadelay"
    a := tema(close, 12)
    b := a[1]
    c := a[2]

TP = input(200)
SL = input(130)
TS = input(1)
// TP = input(50)
// SL = input(110)
// TS = input(1)

orderSize = floor((fracCap * strategy.equity) / close)
long = cross(a, c) and a > b
short = cross(a, c) and a < b
plot(a, title="12", color=color.red, linewidth=1)
plot(b, title="26", color=color.blue, linewidth=1)
plot(c, title="55", color=color.green, linewidth=1)

strategy.entry("Long", strategy.long, qty=orderSize,  when=long)
strategy.entry("Short", strategy.short, qty=orderSize,  when=short)
// strategy.entry("Long", strategy.long,  100.0, when=long)
// strategy.entry("Short", strategy.short,  100.0, when=short)
// strategy.entry("Long", strategy.long, 100.0, when=long)
// strategy.entry("Short", strategy.short, 100.0, when=short)
// strategy.entry("Long", strategy.long, 1.0, when=long)
// strategy.entry("Short", strategy.short, 1.0, when=short)

TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
// strategy.exit("Close Short", "Short", qty_percent=100, profit=TPP, loss=SLP, trail_points=TSP, when=long)
// strategy.exit("Close Long", "Long", qty_percent=100, profit=TPP, loss=SLP, trail_points=TSP, when=short)
// strategy.exit("Close Long", "Long", qty_percent=100, profit=TPP, loss=SLP, trail_points=TSP, when=long[1])
// strategy.exit("Close Short", "Short", qty_percent=100, profit=TPP, loss=SLP, trail_points=TSP, when=short[1])
strategy.exit("Close Long", "Long", qty_percent=100, profit=TPP, loss=SLP, trail_points=TSP)
strategy.exit("Close Short", "Short", qty_percent=100, profit=TPP, loss=SLP, trail_points=TSP)


Mais.