Estratégia de crossover de média móvel dinâmica


Data de criação: 2024-02-05 10:23:10 última modificação: 2024-02-05 10:23:10
cópia: 0 Cliques: 536
1
focar em
1617
Seguidores

Estratégia de crossover de média móvel dinâmica

Visão geral

A estratégia de cruzamento de média móvel dinâmica (Dynamic Moving Average Crossover Combo Strategy) é uma estratégia de negociação complexa que integra vários indicadores técnicos e detecção de fases de mercado. Ela calcula dinamicamente a volatilidade do mercado, julgando as três fases do mercado de acordo com a distância e a volatilidade do preço em relação à média móvel de longo prazo: oscilação, tendência e composição.

Princípio da estratégia

Calcular a volatilidade do mercado

O indicador ATR calcula a volatilidade diária do mercado nos últimos 14 dias. Em seguida, o filtro da média móvel simples de 100 dias é usado para obter a volatilidade média.

A fase de julgamento do mercado

Calcule a distância entre o preço e a média móvel simples de 200 dias. Se a distância for superior a 1,5 vezes a volatilidade média, e a direção for clara, a situação será considerada como tendência. Se a volatilidade atual for superior a 1,5 vezes a volatilidade média, a situação será considerada como chocante.

EMA/SMA cruzado

O ciclo de EMA rápido é de 10 dias e o ciclo de SMA lento é de 30 dias. Quando o EMA rápido atravessa o SMA lento, gera um sinal de compra.

MACD

Calcule os parâmetros 12, 26, 9 MACD. Quando a coluna MACD se torna positiva, um sinal de compra é gerado.

Bollinger Bands

Calcular o canal de diferença padrão de 20 dias. Se o canal for menor que o seu próprio SMA de 20 dias, será considerado um período de composição.

Regras de entrada

O período de turbulência: se a linha cruzar rapidamente ou se a coluna MACD se corrigir e o preço de fechamento estiver dentro das Bandas de Bollinger, a entrada é maior.

Período de tendência: Linhas de cruzamento rápidas ou MACD de coluna de mudança de entrada.

A partir de então, a banda passou a ser chamada de “Lower Band” e passou a ser chamada de “Low Band”.

Regras de partida

Se o MACD tiver duas linhas K consecutivas negativas, e o preço de fechamento cair por dois dias consecutivos.

A tendência é de que o RSI entre na zona de compras e o Stock RSI entre na zona de compras.

A edição de julho de 2012 foi a primeira a ser lançada no Brasil, com o lançamento de um novo álbum de estúdio.

Análise de vantagens

Esta é uma estratégia de negociação inteligente, combinada com o julgamento do cenário de mercado, que tem as seguintes vantagens:

  1. A operação é sistemática, reduzindo a intervenção subjetiva.

  2. A combinação dos parâmetros de estratégia de ajuste ao ambiente de mercado é mais adaptável.

  3. Combinação de múltiplos indicadores para aumentar a precisão do sinal.

  4. O Bollinger Bands automaticamente interrompe perdas, reduzindo o risco.

  5. A partir daí, o sistema de filtragem de sinais falsos será usado para avaliar todas as condições.

  6. O que é um stop loss dinâmico e um stop loss de tendência?

Análise de Riscos

Os principais riscos são:

  1. A configuração inadequada dos parâmetros pode levar à falha da estratégia. Recomenda-se otimizar a combinação de parâmetros.

  2. Incidentes inesperados causaram falhas no modelo. Recomenda-se atualizar a lógica da estratégia em tempo útil.

  3. Compressão de custos de transação para reduzir a margem de lucro. Recomenda-se a escolha de corretores de taxas baixas.

  4. A combinação de vários indicadores aumenta a complexidade da estratégia. Recomenda-se a escolha de indicadores centrais.

Direção de otimização

Otimizamos ainda mais a partir das seguintes dimensões:

  1. Otimizar os critérios de avaliação do mercado e aumentar a precisão.

  2. Adição de módulos de aprendizado de máquina para a adaptação de parâmetros.

  3. Combinação com o processamento de texto para avaliar o risco de eventos significativos.

  4. A análise de mercados múltiplos para encontrar a melhor combinação.

  5. A estratégia de trailing stop foi adicionada.

Resumir

A estratégia de combinação cruzada de média móvel dinâmica é uma estratégia de negociação inteligente de vários indicadores. É capaz de combinar parâmetros de ajuste do ambiente de mercado para realizar negociações sistematizadas e condicionais. Tem uma maior adaptabilidade e determinação.

Código-fonte da estratégia
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)

// Volatility
volatility = ta.atr(14)
avg_volatility_sma = ta.sma(volatility, 100)
avg_volatility = na(avg_volatility_sma) ? 0 : avg_volatility_sma

// Market Phase detection
long_term_ma = ta.sma(close, 200)
distance_from_long_term_ma = close - long_term_ma
var bool isTrending = math.abs(distance_from_long_term_ma) > 1.5 * avg_volatility and not na(distance_from_long_term_ma)
var bool isVolatile = volatility > 1.5 * avg_volatility

// EMA/MA Crossover
fast_length = 10
slow_length = 30
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)

// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal or (macdHistogram > 0)

// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
isConsolidating = (upper - lower) < ta.sma(upper - lower, 20)

// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 75
oversold = 25

var float potential_SL = na
var float potential_TP = na
var bool buy_condition = na
var bool sell_condition = na

// Buy and Sell Control Variables
var bool hasBought = false
var bool hasSold = true

// Previous values tracking
prev_macdHistogram = macdHistogram[1]
prev_close = close[1]

// Modify sell_condition with the new criteria
if isVolatile
    buy_condition := not hasBought and crossover_signal or macd_signal and (close > lower) and (close < upper)
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

if isTrending
    buy_condition := not hasBought and crossover_signal or macd_signal
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - volatility
    potential_TP := close + 2 * volatility

if isConsolidating
    buy_condition := not hasBought and crossover_signal and (close > lower)
    sell_condition := hasBought and (close < upper) and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

// Update the hasBought and hasSold flags
if buy_condition
    hasBought := true
    hasSold := false

if sell_condition
    hasBought := false
    hasSold := true

// Strategy Entry and Exit
if buy_condition
    strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
    strategy.exit("SELL_TS", from_entry="BUY", trail_price=close, trail_offset=close * 0.05)

if sell_condition
    strategy.close("BUY")
    
// Visualization
plotshape(series=buy_condition, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)

plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)

bgcolor(isVolatile ? color.new(color.purple, 90) : isTrending ? color.new(color.blue, 90) : isConsolidating ? color.new(color.orange, 90) : na)