Estratégia de oscilador estocástico equilibrado exponencial

Autora:ChaoZhang, Data: 2024-01-18 15:53:41
Tags:

img

Resumo

A estratégia do Oscilador Estocástico Exponencial Suavizado é uma versão modificada do indicador estocástico tradicional, adicionando um parâmetro de peso exponencial para ajustar a sensibilidade do estocástico e gerar sinais de negociação.

Estratégia lógica

O núcleo da estratégia estocástica suavizada exponencial está no parâmetro de peso exponencial ex. A estocástica tradicional é calculada como:

s = 100 * (close - lowest low) / (highest high - lowest low)

Com o parâmetro exponencial, a fórmula é:

exp = ex<10? (ex)/(10-ex) : 99   

s = 100 * (close - lowest low) / (highest high - lowest low)  

ks = s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50   
       :-math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50  

O aumento da exp torna o indicador menos sensível, enquanto a diminuição da exp o torna mais sensível.

Os sinais de compra são gerados quando ks cruza os níveis de sobrecompra. Os sinais de venda são gerados quando ks cruza os níveis de sobrevenda.

Vantagens

Em comparação com a estratégia estocástica tradicional, a estratégia do oscilador estocástico suavizado exponencial tem as seguintes vantagens:

  1. A sensibilidade do estocástico pode ser ajustada livremente alterando o peso exponencial para controlar a frequência de negociação.
  2. O aumento do peso exponencial pode filtrar algum ruído e gerar sinais de negociação mais estáveis.
  3. A combinação de indicadores de diferentes prazos pode permitir a confirmação de vários prazos e melhorar a fiabilidade do sinal.

Riscos

A estratégia do oscilador estocástico suavizado exponencial também apresenta os seguintes riscos:

  1. Com um peso exponencial demasiado grande, algumas oportunidades de negociação podem ser perdidas devido a uma filtragem excessiva dos sinais.
  2. O indicador é propenso a ruídos e cruzamento errado. Os parâmetros precisam ser ajustados para garantir sinais de cruzamento confiáveis.
  3. É necessário identificar o intervalo de parâmetros ideal para diferentes mercados, uma vez que uma configuração inadequada dos parâmetros pode afetar o desempenho da estratégia.

Áreas de melhoria

A estratégia do Oscilador Estocástico Exponencial Suavizado pode ser otimizada a partir dos seguintes aspectos:

  1. Combine com outros indicadores como o MACD e a média móvel para filtrar sinais e reduzir sinais falsos.
  2. Adicionar mecanismos de stop loss para controlar eficazmente os riscos.
  3. Otimizar o parâmetro de peso exponencial para encontrar as combinações ideais de parâmetros.
  4. Aumentar a composibilidade, por exemplo, combinar com indicadores sazonais, indicadores de estrutura de mercado para melhorar ainda mais a estabilidade.

Conclusão

A estratégia do oscilador estocástico suavizado exponencial gera sinais de negociação mais confiáveis ajustando a sensibilidade do indicador estocástico. Pode rastrear efetivamente tendências de médio a longo prazo e também pode ser otimizada em uma estratégia de curto prazo. Com maior composibilidade e otimização de parâmetros, tem o potencial de alcançar retornos lucrativos mais consistentes.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
strategy("Exponential Stochastic Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
len=input.int(14, "length") 
ex=input.int(2, title="exp", minval=1, maxval=10)
exp= ex<10? (ex)/(10-ex) : 99
s=100 * (close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len))
ks=s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50 :
 -math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
plot(ks, color= color.white)
bot=input.int(20)
top=input.int(80)
longCondition = ta.crossover(ks, bot) and bar_index>0
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = ta.crossunder(ks, top) and bar_index>0
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)
//    strategy.close("My Long Entry Id")
alertcondition(longCondition, title = "buy")
alertcondition(shortCondition, title = "sell")
h1=hline(top)
h2=hline(bot)
h3=hline(100)
h4=hline(0)
fill(h1,h3, color= color.rgb(255,0,0,200-top*2))
fill(h2,h4, color= color.rgb(0,255,0,bot*2))

Mais.