Estratégia de média estocástica e móvel com filtros duplos

Autora:ChaoZhang, Data: 2024-02-02 11:28:58
Tags:

img

Resumo

Esta é uma estratégia de negociação de longo prazo que combina os valores do oscilador estocástico K e as médias móveis exponenciais com filtros duplos. Identifica oportunidades de compra quando o estocástico K cruza D e entra em território de sobrevenda. A estratégia gera sinais de venda quando os preços cruzam abaixo da média móvel e o estocástico K está acima de um limiar, filtrando reversões normais de inversões de tendência.

Estratégia lógica

A ideia central desta estratégia é usar o K estocástico para sincronizar os sinais de entrada e as médias móveis exponenciais para registrar lucros. O oscilador estocástico é bom para detectar situações de sobrecompra / sobrevenda, enquanto as médias móveis definem a tendência. Combinando os dois, as entradas são feitas em níveis de sobrevenda e os lucros são seguidos ao longo da tendência usando médias móveis.

Especificamente, esta estratégia calcula os valores estocásticos K e D de 21 períodos, bem como a EMA de 38 períodos. Quando K cruza acima de D na zona de sobrevenda (default 25), um sinal de compra é gerado. Quando os preços cruzam abaixo da EMA e a estocástica K é superior ao limiar do filtro (65), a inversão de tendência é assumida e a posição é fechada. Uma regra de stop loss de 13% também é implementada.

Com indicadores duplos e filtros duplos, esta estratégia efetivamente filtra sinais falsos. Comprar em níveis de sobrevenda e seguir a tendência de alta pode capturar bons lucros. É adequado para participações de médio a longo prazo.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. O estocástico K determina bons pontos de entrada quando se atravessa um território supervendido.

  2. Filtros duplos de cruzamento K/D e preço extremo evitam efetivamente falsos sinais.

  3. A sequência dos take-profits com a EMA faz pleno uso da dinâmica ascendente.

  4. O estocástico filtra os retrocessos normais das reversões ao registrar lucros.

  5. Adequado para participações de médio a longo prazo com boa rendibilidade.

Análise de riscos

Alguns riscos a considerar:

  1. Risco sistémico - os mercados de baixa podem causar grandes perdas.

  2. Risco de reversão - reversões temporárias dos preços podem desencadear prematuramente o stop loss de MA.

  3. Risco de otimização de parâmetros - ajuste inadequado dos parâmetros afeta o desempenho.

  4. Risco do cisne negro - os indicadores técnicos falham face aos choques do mercado.

Orientações de otimização

Algumas maneiras de otimizar a estratégia:

  1. Otimizar os parâmetros dos indicadores através de testes retroactivos rigorosos.

  2. Adicionar outros métodos de stop loss, como volatilidade ou stop loss.

  3. Incorporar outros indicadores como volume, bandas de Bollinger, etc.

  4. Teste períodos de média móvel mais curtos/mais longos.

  5. Ajustar dinamicamente os parâmetros com base nos regimes de mercado.

Conclusão

Esta é uma estratégia geral sólida de tendência. Ele usa estocástico para determinar a entrada, média móvel para saídas de trilha, e implementa filtros duplos para evitar sinais falsos. Com ampla flexibilidade de ajuste de parâmetros, manutenção de médio a longo prazo e eficácia na captura de tendências, esta é uma estratégia de negociação de ações eficiente.


/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// English version
strategy(title='Stochastic & MA',  overlay=false)
// INPUTS : all default value have already been optimized
length = input.int(21, 'period', minval=1)
lossp = input.int(13, 'stop loss %', minval=2, step=1)
leverage = input.int(1, 'leverage', minval=1, step=1)
// leverage has been introduced for modifying stop loss levels for financial instruments with leverage, like ETF 
n = input(2, 'n days ago')
filtro = input.int(65, 'k filter for throwbacks', minval=20, step=1)
OverSold = input.int(25, 'Oversold value', minval=5, step=5)
// Building indicators
smoothK = input.int(6, 'k', minval=1)
smoothD = input.int(4, 'd', minval=1)
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
//Empowerment: introducing EMA
sma_period = input.int(38, 'periodo Sma', minval=1)
emaf = ta.ema(close, sma_period)
//ENTRY condition and order
// First of all, it's better not trade shares with a quaterly loss or with a bad surprise towards to analysts' expectations or ipevaluated (P/E > 50), but on your choice
// You entry when Stochastic's K is higher than D in Oversold area (you may personalize), applying the condition that today's close should be higher than one of n-days ago (default of the day before yesterday or 2 candles ago)
entry1 = k > d and k <= OverSold and close >= close[n]
strategy.entry('Long', strategy.long, comment='k basso', when=entry1)
//EXIT CONDITIONS
//  1) close crosses under exponential movinig average with filter that k >= fixed level (65), in order to distinguish a violent movement of prices with a possibile beginning of a trend from an almost exhausted "ordinary" throwback
// 2) fixed stop loss on percentage
exit1 = ta.crossunder(close, emaf) and k >= filtro
losspel = strategy.position_avg_price * (1 - lossp / 100 * leverage)
exit2 = close < losspel
strategy.close('Long', when=exit1, comment='sma')
strategy.close('Long', when=exit2, comment='stop loss')
// plotting indicators (add Ema on your choice)
plot(k, color=color.new(color.blue, 0), linewidth=1, title='k Stoch')
plot(d, color=color.new(color.red, 0), linewidth=1, title='d stoch signal')
plot(OverSold, title='Oversold', color=color.new(color.aqua, 0))
plot(filtro, color=color.new(color.gray, 0), title='k-filter for ema')





Mais.