Estratégia de Crossover Dinâmico SMMA e SMA


Data de criação: 2024-02-02 11:38:08 última modificação: 2024-02-02 11:38:08
cópia: 0 Cliques: 788
1
focar em
1617
Seguidores

Estratégia de Crossover Dinâmico SMMA e SMA

Visão geral

Esta estratégia usa um sinal de cruzamento de uma média móvel de 50 ciclos (SMMA) e uma média móvel simples de 20 ciclos (SMA) para determinar a hora de comprar e vender. Um sinal de compra é gerado quando uma SMA rápida sobe e rompe a SMMA lenta. Um sinal de venda é gerado quando uma SMA baixa e rompe a SMMA.

Princípio da estratégia

  1. Calcule e trace SMMA de 50 e SMA de 20 ciclos.
  2. Quando o SMA atravessa o SMMA de baixo para cima, gera um sinal de compra; ao contrário, quando o SMA atravessa o SMMA de cima para baixo, gera um sinal de venda.
  3. Quando ocorrem sinais de compra e venda, estabeleça posições de “Buy” e “Sell” respectivamente.
  4. A posição de cada um dos 150 pontos fixos de paragem.
  5. O preço de fechamento da linha K seguinte ao sinal de fechamento é definido como um stop loss dinâmico.
  6. Se o preço toca o ponto de parada, ele é parado; se toca o ponto de parada, ele é parado.

Análise de vantagens

  1. A estratégia de dupla equilíbrio é fácil de operar, o princípio é simples e fácil de entender.
  2. O SMMA é uma melhoria do SMA, capaz de capturar melhor as tendências.
  3. A combinação de SMA e SMMA de diferentes períodos permite a captura de tendências ao mesmo tempo que oscilações de ondas.
  4. O uso de stop loss dinâmico pode ajustar a posição de stop loss de acordo com as mudanças na situação, controlando efetivamente o risco.
  5. A posição de parada pré-estabelecida ajuda a bloquear o lucro em tempo hábil.

Análise de Riscos

  1. A estratégia de dupla linha de equilíbrio é propensa a produzir sinais falsos e a ser arbitragem. Pode filtrar os sinais adequadamente e evitar transações muito frequentes.
  2. É fácil de perder um grande negócio. Pode-se definir um parâmetro móvel ou um parâmetro de lucro.
  3. O stop loss dinâmico pode se aproximar demais em situações de alta volatilidade e deve ser adequadamente relaxado.
  4. Observe as diferenças entre as variedades e os parâmetros do ciclo.

Direção de otimização

  1. testar combinações de diferentes parâmetros (número de ciclos, condições de filtragem, etc.) para encontrar o melhor;

  2. Pode ser combinado com outros fatores para filtrar o sinal, como aumento de volume de transação;

  3. a busca de parâmetros ótimos através de ferramentas de otimização de parâmetros;

  4. Outras formas de bloqueio, como bloqueio móvel ou proporcional, podem ser consideradas.

  5. A amplitude de stop loss dinâmica pode ser calculada em combinação com a volatilidade do mercado.

Resumir

Esta estratégia é simples de operar, capta a direção da tendência através de duas linhas de equilíbrio; utiliza-se de forma flexível o stop loss fixo e o stop loss dinâmico para bloquear o lucro e controlar o risco, o risco e o lucro e. A estratégia de recaudação pode ser adaptada ainda mais ao ambiente de mercado mais amplo através da otimização de parâmetros e regras.

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

//@version=4
strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true)

// Define 50 SMMA
smma50 = sma(close, 50)

// Define 20 SMA
sma20 = sma(close, 20)

// Plotting the SMMA and SMA
plot(smma50, color=color.blue, title="50 SMMA")
plot(sma20, color=color.red, title="20 SMA")

// Initialize TP and SL variables
tp = 150
var float sl_price = na

// Buy Signal
buySignal = crossover(sma20, smma50)
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price)

// Sell Signal
sellSignal = crossunder(sma20, smma50)
strategy.entry("Sell", strategy.short, when = sellSignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price)

// Update stop loss level on every crossover
if (buySignal or sellSignal)
    sl_price := close[bar_index + 1]

// Plot Stop Loss level
plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)