Estratégia de negociação de longo prazo baseada no SuperTrend


Data de criação: 2023-09-20 17:14:33 última modificação: 2023-09-20 17:14:33
cópia: 0 Cliques: 770
1
focar em
1617
Seguidores

Visão geral

A estratégia identifica oportunidades de entrada de longo prazo através do indicador SuperTrend. Utiliza o ATR médio real e a multiplicação para determinar o suporte dinâmico para entrar em posições longas. A estratégia se concentra nas oportunidades de negociação de longo prazo.

Princípio da estratégia

  1. A ascensão e a descensão são calculadas de acordo com o ciclo e a multiplicação do ATR. Quando o preço entra na ascensão, ele sobe, e quando ele entra na descensão, cai.

  2. Para calcular a tendência atual, 1 representa um aumento e - 1 representa uma diminuição. Quando o preço se eleva, a tendência é invertida por uma queda, provocando um sinal de compra. Quando a tendência é revertida por uma queda, provocando um sinal de venda.

  3. Combinando a média móvel como um filtro de tendência, a ruptura da linha de alta exige que o preço seja superior ao MA para comprar, e a ruptura da linha de baixa exige que o preço seja inferior ao MA para vender, para evitar falsas rupturas.

  4. Apresentação visual de trends, sinais de negociação, etc., para auxiliar o julgamento.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O indicador SuperTrend permite acompanhar dinamicamente as mudanças de preço e refletir sobre as reversões de tendência em tempo real.

  2. O ATR pode ser usado para bloquear o lucro, ajustando o ponto de parada de acordo com as flutuações do mercado.

  3. Combinado com a eliminação de falsas rupturas de MA, pode efetivamente filtrar os sinais de negociação de ruído do mercado de turbulência.

  4. A visualização é projetada para mostrar de forma intuitiva a estratégia de negociação e a situação do mercado, e é fácil de operar.

  5. O que significa que os investidores devem ter em conta os pontos de inflexão de tendências para manter posições de longo prazo.

Análise de Riscos

A estratégia tem os seguintes riscos:

  1. Os indicadores SuperTrend são sensíveis aos parâmetros, com ajustes frequentes de linha aérea, podendo ocorrer negociações frequentes.

  2. Em situações de tremores, a linha de parada é ativada com frequência.

  3. Os investimentos pequenos são mais afetados pelas taxas de transação, sem levar em conta os custos de transação.

  4. Não há stop loss, o risco de retração é maior.

  5. A tendência pode ter perdido algumas oportunidades.

Os riscos podem ser reduzidos através das seguintes medidas:

  1. Otimizar os parâmetros ATR para reduzir a frequência de ajuste de linhas aéreas múltiplas.

  2. Aumentar o filtro de linha K equivalente, evitando o estorvo de pequenas ondas de alta frequência.

  3. Configure um Stop Loss para proteger o lucro.

  4. Ajustar adequadamente a média móvel para equilibrar o efeito de filtragem.

  5. Otimizar a gestão de fundos e reduzir os custos de transação.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Teste diferentes fontes de preços, como o preço de fechamento, o preço mais alto, etc.

  2. Tente outros indicadores de stop loss dinâmicos, como o Chandelier Exit.

  3. Adição de módulos de gestão de posições e otimização da eficiência do uso de fundos.

  4. Refine o tempo de entrada em combinação com os indicadores de volatilidade.

  5. Adição de módulos de stop loss e de paralisação para controlar o risco.

  6. Parâmetros de ajuste para diferentes mercados.

  7. Explorar algoritmos de aprendizagem de máquina para otimização de parâmetros.

  8. Combinação de outros indicadores de julgamento para melhorar a precisão da filtragem.

Resumir

A estratégia usa o SuperTrend para integrar a determinação de tendências de stop loss dinâmicas e é auxiliada pelo filtro de tendências do MA para identificar o momento de compra da linha longa. O design visual simplifica a operação.

Código-fonte da estratégia
/*backtest
start: 2020-09-13 00:00:00
end: 2023-09-19 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SuperTrend Long Strategy", overlay=true, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2

up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1 and close > ma
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0))

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1 and close < ma
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 70) : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 70) : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       

window()  => time >= start and time <= finish ? true : false

longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())

shortCondition = sellSignal
if (shortCondition)
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short, when = window())

buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)