Estratégia do Sistema Harmônico Dual

Autora:ChaoZhang, Data: 2024-02-22 15:49:06
Tags:

img

Resumo

Esta estratégia usa múltiplas médias móveis harmônicas para construir sinais de negociação. Primeiro, calcula as médias móveis harmônicas de 1a a 6a ordem e, em seguida, combina essas médias móveis para construir sinais de negociação longos / curtos duplos.

Estratégia lógica

A estratégia primeiro define uma função harm_average para calcular a média móvel harmônica de n períodos. Em seguida, calcula as médias móveis harmônicas de 1a a 6a ordem, ou seja, T1 a T6. Entre elas, T1 é a média móvel harmônica de 3 períodos, T2 é a média móvel harmônica de 3 períodos de T1, e assim por diante.

Depois disso, ele constrói uma curva de balanço, que considera sinteticamente o inverso das médias móveis harmônicas cúbicas de T1 para T6.

Por fim, de acordo com T1 para T6, ele constrói sinais cruzados longos / curtos duplos, onde X1 leva o mínimo de T1, T2 e T3, e X2 leva o máximo de T4, T5 e T6.

Análise das vantagens

  1. O uso de médias móveis harmônicas múltiplas pode filtrar eficazmente o ruído do mercado e melhorar a qualidade do sinal

  2. A construção de sinais de negociação longos/cortos duplos pode capturar oportunamente pontos de virada da tendência

  3. A curva de saldo considera sinteticamente vários prazos, que podem julgar com precisão a direcção da tendência.

  4. A adopção da média cúbica pode realçar ainda mais o papel das variáveis intermediárias e melhorar a estabilidade da estratégia

Análise de riscos

  1. As próprias médias harmônicas apresentam um elevado atraso, o que pode fazer com que as oportunidades de reversão a curto prazo se perdam.

  2. A otimização excessiva com médias múltiplas pode reduzir a robustez da estratégia

  3. Os cálculos de cubo podem amplificar o ruído intermediário até certo ponto, resultando em certos sinais falsos

  4. As cruzadas duplas têm um certo grau de atraso, incapazes de capturar pontos de virada a tempo

Orientações de otimização

  1. Podem ser testados mais tipos ou ordens superiores de médias harmônicas

  2. Introduzir o ajustamento dinâmico dos dias médios para otimizar o sistema de média

  3. Teste diferentes parâmetros de potência como quadrados e logs

  4. Incorporar mais indicadores auxiliares para verificar a qualidade do sinal

Resumo

Esta estratégia usa um sistema de média harmônica múltipla para construir sinais de negociação duplo longo / curto. Em comparação com sistemas de média única, esta estratégia pode identificar melhor as tendências e filtrar o ruído. Enquanto isso, as cruzadas duplas também podem capturar pontos de virada do mercado em tempo hábil. No entanto, as computações de média múltipla e cubo também introduzem algum atraso e amplificação de ruído. No futuro, a introdução de ajuste dinâmico de parâmetros e mais indicadores auxiliares pode melhorar a estabilidade e a puntualidade da estratégia.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Harmonic System Strategy", overlay=true)

harm_average(x,y,z) =>3 / (1 / x + 1 / y + 1 / z)
T1 = harm_average(close[1], close[2], close[3])
T2 = harm_average(T1, T1[1], T1[2])
T3 = harm_average(T2, T2[1], T2[2])
T4 = harm_average(T3, T3[1], T3[2])
T5 = harm_average(T4, T4[1], T4[2])
T6 = harm_average(T5, T5[1], T5[2])
Balance = 18 / (1 / T1 * 3 + 1 / T2 * 3 + 1 / T3 * 3 + 1 / T4 * 3 + 1 / T5 * 3 + 1 / T6 * 3)

plot(T1,linewidth=2, color=color.green,title="T1")
plot(T2,linewidth=1, color=color.blue,title="T2")
plot(T3,linewidth=1, color=color.blue,title="T3")
plot(Balance,linewidth=2, color=color.black,title="Balance")
plot(T4,linewidth=1, color=color.blue,title="T4")
plot(T5,linewidth=1, color=color.blue,title="T5")
plot(T6,linewidth=2, color=color.red,title="T6")

X1 = min(min(T1,T2),T3)
X2 = max(max(T4,T5),T6)
X3 = min(T1,T2)
X4 = max(T3,T4)

Buy=crossover(X1,X2)
Sell=crossunder(X3,X4)

if crossover(X1,X2)
    strategy.entry("Long", strategy.long, comment="Long")

if crossunder(X3,X4)
    strategy.entry("Short", strategy.short, comment="Short")


Mais.