
A estratégia usa a mediana e a diferença de diferentes períodos para determinar a tendência e a volatilidade dos preços e para identificar os pontos altos e baixos.
A lógica central da estratégia é calcular a média e a diferença de diferentes períodos recentes. Especificamente, calcular a média ((ma, mb, mc) e a diferença ((da, db, dc) de 5 dias, 4 dias e 3 dias mais recentes, respectivamente. Em seguida, escolha um período maior do que a diferença para representar a tendência atual. Finalmente, use a média de um período que representa a tendência multiplicada pelo quadrado de sua diferença quadrada, como a curva de saída final.
Assim, quando o preço aparece um salto para cima ou para baixo, o período e a diferença que representam a tendência sofrem grandes mudanças. Assim, a saída final do WG também produz grandes mudanças, permitindo a identificação dos pontos altos e baixos.
Esta abordagem baseada em diferentes períodos de julgamento de mudanças de tendência é eficaz e permite identificar claramente os pontos de inflexão dos preços. Em comparação com o julgamento de um único ciclo, esta combinação de vários ciclos pode melhorar a precisão e a atualização do julgamento.
O cálculo da mediana e da diferença quadrada também é muito simples e eficiente, com pouco código, e é muito sensível a mudanças bruscas de preços, permitindo a detecção rápida de brechas.
A estratégia usa um período curto, o que pode não ser suficientemente preciso e abrangente para a linha média e a linha longa. Os movimentos de preços no curto prazo podem levar a um erro de julgamento.
Além disso, as configurações de pesos de equilíbrio e diferença quadrada também podem afetar o julgamento, e se o peso for inadequado, o sinal pode ser distorcido.
Pode-se tentar adicionar mais cálculos de diferentes ciclos, formando um conjunto de ciclos, para que o julgamento seja mais abrangente. Por exemplo, adicionar julgamentos de ciclos de médio e longo prazo, como 10 e 20 dias.
Também é possível experimentar diferentes opções de configuração de pesos, aumentando a flexibilidade da configuração de pesos. A adição de parâmetros de otimização permite que os pesos sejam automaticamente ajustados de acordo com o ambiente do mercado, reduzindo a probabilidade de erro de julgamento.
Além disso, pode ser combinado com outros indicadores, tais como volume de transação anormal, etc., para evitar o julgamento equivocado de arbitragem.
A estratégia é clara e fácil de entender, usando a média e a diferença para determinar a tendência e a volatilidade dos preços, e depois a saída do portfólio pode identificar claramente os pontos altos e baixos da curva. Esta abordagem baseada no portfólio de períodos múltiplos de julgamento, pode efetivamente obter características de longo prazo do mercado e melhorar a precisão do julgamento dos pontos de inflexão. O espaço de otimização também é grande e pode ser ajustado em vários aspectos, como o peso do ciclo e os indicadores, tornando a estratégia mais estável e abrangente.
/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 12h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("x²", overlay=false)
a1=(close[2]-close[3])/1
a2=(close[1]-close[3])/4
a3=(close[0]-close[3])/9
b1=(close[3]-close[4])/1
b2=(close[2]-close[4])/4
b3=(close[1]-close[4])/9
b4=(close[0]-close[4])/16
c1=(close[4]-close[5])/1
c2=(close[3]-close[5])/4
c3=(close[2]-close[5])/9
c4=(close[1]-close[5])/16
c5=(close[0]-close[5])/25
ma=(a1+a2+a3)/3
da=(a1-ma)*(a1-ma)
da:=da+(a2-ma)*(a2-ma)
da:=da+(a3-ma)*(a3-ma)
da:=sqrt(da)
da:=min(2, da)
da:=1-da/2
da:=max(0.001, da)
mb=(b1+b2+b3+b4)/4
db=(b1-mb)*(b1-mb)
db:=db+(b2-mb)*(b2-mb)
db:=db+(b3-mb)*(b3-mb)
db:=db+(b4-mb)*(b4-mb)
db:=sqrt(db)
db:=min(2, db)
db:=1-db/2
db:=max(0.001, db)
mc=(c1+c2+c3+c4+c5)/5
dc=(c1-mc)*(c1-mc)
dc:=dc+(c2-mc)*(c2-mc)
dc:=dc+(c3-mc)*(c3-mc)
dc:=dc+(c4-mc)*(c4-mc)
dc:=dc+(c5-mc)*(c5-mc)
dc:=sqrt(dc)
dc:=min(2, dc)
dc:=1-dc/2
dc:=max(0.001, dc)
g=close
if(da>db and da>dc)
g:=da*da*ma
else
if(db > da and db > dc)
g:=db*db*mb
else
g:=dc*dc*mc
wg=wma(g, 2)
plot(wg)
plot(0, color=black)
longCondition = true //crossover(sma(close, 14), sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = true //crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)