Acompanhamento de tendências SMA em várias escalas de tempo e estratégia de stop loss dinâmica

SMA Trend
Data de criação: 2024-06-03 10:57:05 última modificação: 2024-06-03 10:57:05
cópia: 3 Cliques: 553
1
focar em
1617
Seguidores

Acompanhamento de tendências SMA em várias escalas de tempo e estratégia de stop loss dinâmica

Visão geral

A estratégia baseia-se em uma média móvel simples (SMA) em diferentes escalas de tempo para capturar a tendência do mercado. A estratégia gera sinais de compra e venda, comparando a posição relativa dos SMAs de curto e longo prazo.

Princípio da estratégia

  1. Calcule os SMAs de curto e longo prazo para determinar a direção da tendência do mercado.
  2. Quando o SMA curto é usado para o SMA longo, gera um sinal de compra; quando o SMA curto é usado para o SMA longo, gera um sinal de venda.
  3. Usando a condição de confirmação de tendência para filtrar falsos sinais, execute a compra apenas quando a tendência principal for a mais cara, e execute a venda apenas quando a tendência principal for a cabeça vazia.
  4. Configure o Stop and Loss para controlar o risco de negociação. Quando o preço atingir o nível de Stop ou Loss predefinido, a posição será fechada.
  5. Ajustar posições de forma dinâmica de acordo com a confirmação da tendência. Quando a tendência principal muda, feche a posição em tempo hábil para evitar perdas causadas pela reversão da tendência.

Vantagens estratégicas

  1. Seguimento de tendências: a estratégia é baseada em SMAs em diferentes escalas de tempo, capazes de capturar de forma eficaz as principais tendências do mercado, adaptando-se a diferentes condições de mercado.
  2. Confirmação de tendências: introdução de condições de confirmação de tendências, filtragem de falsos sinais, aumento da confiabilidade dos sinais de negociação e redução de negociações inválidas.
  3. Gerenciamento de riscos: função de suspensão e parada de perdas embutida para ajudar a controlar os riscos de negociação e proteger os fundos dos investidores.
  4. Ajuste dinâmico: Ajuste dinâmico de posições de acordo com as condições de confirmação de tendência, para responder a mudanças no mercado em tempo hábil e reduzir os prejuízos causados pela reversão da tendência.

Risco estratégico

  1. Risco de otimização de parâmetros: o desempenho da estratégia depende do ciclo SMA e da escolha do parâmetro de equilíbrio de stop loss. A configuração inadequada dos parâmetros pode causar uma má eficácia da estratégia.
  2. Risco de mercado de turbulência: Em um ambiente de mercado de turbulência, os sinais de negociação frequentes podem levar a excesso de negociação, aumentando os custos e riscos de negociação.
  3. Risco de surpresa: a estratégia pode não responder em tempo hábil, causando grandes perdas, devido à forte volatilidade do mercado em face de um grande evento.

Direção de otimização da estratégia

  1. Introdução de mais indicadores técnicos: em combinação com outros indicadores técnicos, como MACD, RSI e outros, para melhorar a precisão e a solidez do julgamento de tendências.
  2. Optimizar a seleção de parâmetros: através da retrospecção de dados históricos e otimização de parâmetros, procurar o melhor ciclo de SMA, combinar parâmetros de parada de parada e nível de perda, melhorar o desempenho da estratégia.
  3. Melhorar a gestão de risco: introdução de técnicas de gestão de risco mais avançadas, como a parada dinâmica, gestão de posição, etc., para controlar ainda mais a abertura de risco.
  4. Adaptação a diferentes condições de mercado: De acordo com a volatilidade do mercado e a intensidade da tendência, ajuste dinamicamente os parâmetros da estratégia para que a estratégia possa se adaptar a diferentes condições de mercado.

Resumir

A estratégia de seguimento de tendências de SMA em várias escalas de tempo e stop loss dinâmico usa SMAs de diferentes escalas de tempo para capturar tendências de mercado, filtrar falsos sinais através da confirmação de condições de tendência, além de configurar a função de parada de stop loss e ajuste de posição dinâmica, atingindo os objetivos de acompanhamento de tendências e gerenciamento de risco. Apesar de ter algumas vantagens, a estratégia ainda enfrenta riscos como otimização de parâmetros, mercados de choque e surtos.

Código-fonte da estratégia
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("market slayer v3", overlay=true)

// Input parameters
showConfirmationTrend = input(title='Show Trend', defval=true)
confirmationTrendTimeframe = input.timeframe(title='Main Trend', defval='240')
confirmationTrendValue = input(title='Main Trend Value', defval=2)
showConfirmationBars = input(title='Show Confirmation Bars', defval=true)
topCbarValue = input(title='Top Confirmation Value', defval=60)
short_length = input.int(10, minval=1, title="Short SMA Length")
long_length = input.int(20, minval=1, title="Long SMA Length")
takeProfitEnabled = input(title="Take Profit Enabled", defval=false)
takeProfitValue = input.float(title="Take Profit (points)", defval=20, minval=1)
stopLossEnabled = input(title="Stop Loss Enabled", defval=false)
stopLossValue = input.float(title="Stop Loss (points)", defval=50, minval=1)

// Calculate SMAs
short_sma = ta.sma(close, short_length)
long_sma = ta.sma(close, long_length)

// Generate buy and sell signals based on SMAs
buy_signal = ta.crossover(short_sma, long_sma)
sell_signal = ta.crossunder(short_sma, long_sma)

// Plot SMAs
plot(short_sma, color=color.rgb(24, 170, 11), title="Short SMA")
plot(long_sma, color=color.red, title="Long SMA")

// Confirmation Bars
f_confirmationBarBullish(cbValue) =>
    cBarClose = close
    slowConfirmationBarSmaHigh = ta.sma(high, cbValue)
    slowConfirmationBarSmaLow = ta.sma(low, cbValue)
    slowConfirmationBarHlv = int(na)
    slowConfirmationBarHlv := cBarClose > slowConfirmationBarSmaHigh ? 1 : cBarClose < slowConfirmationBarSmaLow ? -1 : slowConfirmationBarHlv[1]
    slowConfirmationBarSslDown = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaHigh : slowConfirmationBarSmaLow
    slowConfirmationBarSslUp = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaLow : slowConfirmationBarSmaHigh
    slowConfirmationBarSslUp > slowConfirmationBarSslDown

fastConfirmationBarBullish = f_confirmationBarBullish(topCbarValue)
fastConfirmationBarBearish = not fastConfirmationBarBullish
fastConfirmationBarClr = fastConfirmationBarBullish ? color.green : color.red

fastConfirmationChangeBullish = fastConfirmationBarBullish and fastConfirmationBarBearish[1]
fastConfirmationChangeBearish = fastConfirmationBarBearish and fastConfirmationBarBullish[1]

confirmationTrendBullish = request.security(syminfo.tickerid, confirmationTrendTimeframe, f_confirmationBarBullish(confirmationTrendValue), lookahead=barmerge.lookahead_on)
confirmationTrendBearish = not confirmationTrendBullish
confirmationTrendClr = confirmationTrendBullish ? color.green : color.red

// Plot trend labels
plotshape(showConfirmationTrend, style=shape.square, location=location.top, color=confirmationTrendClr, title='Trend Confirmation Bars')
plotshape(showConfirmationBars and (fastConfirmationChangeBullish or fastConfirmationChangeBearish), style=shape.triangleup, location=location.top, color=fastConfirmationChangeBullish ? color.green : color.red, title='Fast Confirmation Bars')
plotshape(showConfirmationBars and buy_signal and confirmationTrendBullish, style=shape.triangleup, location=location.top, color=color.green, title='Buy Signal')
plotshape(showConfirmationBars and sell_signal and confirmationTrendBearish, style=shape.triangledown, location=location.top, color=color.red, title='Sell Signal')

// Generate trade signals
buy_condition = buy_signal and confirmationTrendBullish and not (strategy.opentrades > 0)
sell_condition = sell_signal and confirmationTrendBearish and not (strategy.opentrades > 0)

strategy.entry("Buy", strategy.long, when=buy_condition, comment ="BUY CALLS")
strategy.entry("Sell", strategy.short, when=sell_condition, comment ="BUY PUTS")

// Take Profit
if (takeProfitEnabled)
    strategy.exit("Take Profit Buy", from_entry="Buy", profit=takeProfitValue)
    strategy.exit("Take Profit Sell", from_entry="Sell", profit=takeProfitValue)

// Stop Loss
if (stopLossEnabled)
    strategy.exit("Stop Loss Buy", from_entry="Buy", loss=stopLossValue)
    strategy.exit("Stop Loss Sell", from_entry="Sell", loss=stopLossValue)

// Close trades based on trend confirmation bars
if strategy.opentrades > 0
    if strategy.position_size > 0
        if not confirmationTrendBullish
            strategy.close("Buy", comment ="CLOSE CALLS")
    else
        if not confirmationTrendBearish
            strategy.close("Sell", comment ="CLOSE PUTS")

// Define alert conditions as booleans
buy_open_alert = buy_condition
sell_open_alert = sell_condition
buy_closed_alert = strategy.opentrades < 0
sell_closed_alert = strategy.opentrades > 0

// Alerts
alertcondition(buy_open_alert, title='Buy calls', message='Buy calls Opened')
alertcondition(sell_open_alert, title='buy puts', message='buy Puts Opened')
alertcondition(buy_closed_alert, title='exit calls', message='exit calls ')
alertcondition(sell_closed_alert, title='exit puts', message='exit puts Closed')