O recurso está a ser carregado... Carregamento...

Sistema de negociação de breakout de diferença de tendência com filtro SMA

Autora:ChaoZhang, Data: 2024-11-29 15:07:43
Tags:GAPSMAMA

img

Resumo

Este é um sistema de negociação baseado em diferenças de preço e filtragem de média móvel. A estratégia capta oportunidades de tendência identificando diferenças de preço estatisticamente significativas combinadas com filtros de tendência SMA, executando negociações quando surgem tendências claras de mercado. O conceito central é capitalizar as oportunidades de continuação de tendência criadas por desequilíbrios de oferta e demanda que se manifestam como diferenças de preço.

Princípios de estratégia

A estratégia baseia-se em vários elementos essenciais:

  1. Identificação de lacunas - O sistema identifica as lacunas através do cálculo da diferença percentual entre o preço de abertura e o preço de fechamento anterior, com um limiar mínimo de lacunas para filtrar flutuações menores.
  2. Seleção direccional - Oferece vários modos de negociação de gap (gap long up, gap short down, etc.), permitindo aos utilizadores adaptarem-se às condições do mercado.
  3. Filtro de tendência SMA - Usa a média móvel simples para determinar a tendência geral, entrando apenas em posições quando o preço se alinha com a direção da tendência.
  4. Gestão de posições - Emprega períodos de detenção pré-estabelecidos para a gestão de posições e controlo de riscos.

Vantagens da estratégia

  1. Sinais claros - Os sinais de lacuna são visualmente distintos e fáceis de identificar e executar.
  2. Risco controlado - Prazos mínimos de diferença e períodos de detenção fixos gerem eficazmente o risco.
  3. Alta flexibilidade - podem ser selecionadas diferentes direcções de negociação de diferença com base nas condições do mercado.
  4. Confirmação de tendência - o filtro SMA fornece confirmação de tendência adicional, melhorando a taxa de sucesso.
  5. Alta automação - A lógica de estratégia clara facilita a implementação de negociações automatizadas.

Riscos estratégicos

  1. Risco de Falso Escândalo - As lacunas podem preencher-se rapidamente, levando a sinais falsos.
  2. Risco de deslizamento - As operações de abertura de lacunas podem sofrer deslizamento significativo.
  3. Risco de reversão da tendência - Os períodos de retenção fixos podem não incluir reversões da tendência.
  4. Dependência do ambiente de mercado - Menos sinais eficazes em mercados de baixa volatilidade.

Orientações para a otimização da estratégia

  1. O valor da posição em risco deve ser calculado de acordo com o método de cálculo da posição em risco.
  2. Confirmações múltiplas - Incorporar indicadores de volume e volatilidade para confirmação do sinal.
  3. Optimização de Stop Loss - Adicione trailing stops ou stops baseados em volatilidade.
  4. Classificação do sinal - dimensionamento de posição em camadas de projeto com base na magnitude da lacuna.
  5. Selecção de mercado - Desenvolver mecanismos de identificação das condições de mercado para a negociação selectiva.

Resumo

Esta estratégia combina diferenças de preço e filtragem de tendência média móvel para criar um sistema de negociação com lógica clara e risco controlado. Através de configurações de parâmetros apropriadas e otimização contínua, a estratégia pode alcançar retornos estáveis em mercados de tendência.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simplified Gap Strategy with SMA Filter", overlay=true)

// Input fields for user control
long_gap_threshold = input.float(0.1, title="Gap Threshold (%)", minval=0.01, step=0.01)  // Minimum percentage for gaps
hold_duration = input.int(10, title="Hold Duration (bars)", minval=1)  // Duration to hold the position
gap_trade_option = input.string("Long Up Gap", title="Select Trade Option", options=["Long Up Gap", "Short Down Gap", "Short Up Gap", "Long Down Gap"])  // Combined option
use_sma_filter = input.bool(false, title="Use SMA Filter")  // Checkbox to activate SMA filter
sma_length = input.int(200, title="SMA Length", minval=1)  // Length of the SMA

// RGB color definitions for background
color_up_gap = color.new(color.green, 50)    // Green background for up gaps
color_down_gap = color.new(color.red, 50)    // Red background for down gaps

// Gap size calculation in percentage terms
gap_size = (open - close[1]) / close[1] * 100  // Gap size in percentage

// Calculate gaps based on threshold input
up_gap = open > close[1] and gap_size >= long_gap_threshold  // Long gap condition
down_gap = open < close[1] and math.abs(gap_size) >= long_gap_threshold  // Short gap condition

// Calculate the SMA
sma_value = ta.sma(close, sma_length)

// Define the trading logic based on selected option and SMA filter
if (gap_trade_option == "Long Up Gap" and up_gap and (not use_sma_filter or close > sma_value))
    strategy.entry("Long", strategy.long)
if (gap_trade_option == "Short Down Gap" and down_gap and (not use_sma_filter or close < sma_value))
    strategy.entry("Short", strategy.short)
if (gap_trade_option == "Short Up Gap" and up_gap and (not use_sma_filter or close < sma_value))
    strategy.entry("Short", strategy.short)
if (gap_trade_option == "Long Down Gap" and down_gap and (not use_sma_filter or close > sma_value))
    strategy.entry("Long", strategy.long)

// Exit position after the hold duration
if (strategy.opentrades > 0)
    if (bar_index - strategy.opentrades.entry_bar_index(0) >= hold_duration)
        strategy.close("Long")
        strategy.close("Short")

// Background coloring to highlight gaps on the chart
bgcolor((gap_trade_option == "Long Up Gap" and up_gap) ? color_up_gap : na, title="Up Gap Background")
bgcolor((gap_trade_option == "Short Down Gap" and down_gap) ? color_down_gap : na, title="Down Gap Background")
bgcolor((gap_trade_option == "Short Up Gap" and up_gap) ? color_down_gap : na, title="Short Up Gap Background")
bgcolor((gap_trade_option == "Long Down Gap" and down_gap) ? color_up_gap : na, title="Long Down Gap Background")

// Plot the SMA for visualization
plot(use_sma_filter ? sma_value : na, color=color.white, title="SMA", linewidth=1)


Relacionados

Mais.