Estratégia de negociação de média móvel e estocástica

Autora:ChaoZhang, Data: 2024-02-02 10:48:37
Tags:

img

Resumo

Esta estratégia combina médias móveis e o oscilador estocástico para implementar um sistema automatizado de negociação de ações. Ele usa duas médias móveis de comprimentos diferentes e o indicador estocástico para capturar sinais de tendência e sobrecompra / sobrevenda, e toma decisões de compra e venda com base na direção da tendência e sinais de indicador em regiões sobrecompradas / sobrevendidas.

Estratégia lógica

1. Médias móveis

Uma linha rápida (5 dias) e uma linha lenta (20 dias) média móvel são usadas. A linha rápida cruzando acima da linha lenta é um sinal de compra, enquanto cruzando abaixo é um sinal de venda.

2. Oscilador estocástico

Os parâmetros estocásticos são definidos para: período de linha K de 14, período suave da linha K de 3, período suave da linha D de 3. Abaixo de 20 na linha K é a região de sobrevenda, enquanto acima de 80 é a região de sobrecompra. O oscilador estocástico determina se está em regiões de sobrecompra / sobrevenda.

3. Regras de entrada

Condição de compra: cruzamento rápido de MA acima da linha lenta de MA e K <20 (região com vendas excessivas) Condição de venda: cruzamento rápido da MA abaixo da linha lenta da MA e da K > 80 (região de sobrecompra)

Ir longo quando a condição de compra é atendida; ir curto quando a condição de venda é atendida.

4. Configurações de Stop Loss

Estabelecer um objetivo de lucro de 1% após a compra; definir um stop loss de 1% após a venda.

Análise das vantagens

Esta estratégia combina tendência e indicadores para capturar efetivamente as tendências de preços de médio a longo prazo, enquanto usa o oscilador estocástico para controlar o momento das negociações e evitar entradas aleatórias sem um viés direcional claro. Os parâmetros da estratégia são ajustáveis a diferentes ambientes de mercado.

Riscos e soluções

  • Os picos de preços de eventos noticiosos significativos podem incorrer em grandes perdas.

  • Os mercados com um intervalo limitado sustentado podem conduzir a pequenas perdas consecutivas.

  • Evite períodos importantes de mercado em que os preços tendem a reverter.

Optimização

  • Ensaiar diferentes combinações de parâmetros para encontrar parâmetros ótimos, como diferentes comprimentos MA.

  • Incorporar outras ferramentas de análise como volume, volatilidade para condições de filtro para melhorar a taxa de lucro.

  • Pesquisar mecanismos de seleção de ações, como a escolha de ações fortes ou índices ponderados com limite máximo, para reduzir os riscos de ações individuais.

Conclusão

A estratégia geral funciona sem problemas. Com stop losses e metas de lucro, o perfil geral de lucro/perda é sólido. Podem ser esperadas melhorias adicionais a partir do ajuste de parâmetros e filtragem de pool de ações. Em geral, esta é uma estratégia quantitativa de negociação fácil de implementar e robusta.


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

//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)

// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")

// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20

// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target

// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)

// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)

// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought

// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought

// Strategy Logic
if (longConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))

if (shortConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))

// Opposite Strategy Logic
if (oppositeLongConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))

if (oppositeShortConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))

// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")

Mais.