A estratégia é comparada com o preço por meio do cálculo do ATR, que é a média real de variação, para determinar a direção da tendência dos preços, e é auxiliada por uma média móvel. Em comparação com outros métodos de determinação de tendências, a estratégia é capaz de capturar a tendência de mudança dos preços mais rapidamente e retroceder menos.
A estratégia é baseada em um conjunto de passos para determinar a tendência dos preços:
Calcule o ATR da média real de variação dos últimos N dias. O método de cálculo do ATR definido por Wilder é usado para melhor refletir as flutuações atuais do mercado.
Calcula-se a linha de encalço e a linha de encalço de acordo com o coeficiente de ajuste do ATR e do atk. A linha de encalço de encalço = preço - ((atk multiplicado por ATR); a linha de encalço = preço + ((atk multiplicado por ATR)) onde o atk é geralmente definido entre 2 e 3.
Comparar a relação entre o preço e a linha de alta e baixa, para determinar a direção da tendência. O preço acima da linha de alta é um sinal de otimismo; o preço abaixo da linha de baixa é um sinal de baixa.
Quando ocorre um sinal de negociação, faça mais ou faça menos. Aqui, a combinação da média móvel determina a qualidade do sinal.
A estratégia de controle de risco de Stop Loss.
O uso de marcas de cores em situações de comportamento para auxiliar o julgamento.
A estratégia aproveita as vantagens do ATR para capturar rapidamente as tendências de mudanças de preço e realizar operações de baixa retração, uma estratégia de acompanhamento de tendências mais típica.
A estratégia tem as seguintes vantagens:
Rápida resposta às mudanças de preços. A ATR pode responder rapidamente às últimas tendências, o que ajuda a capturar as mudanças de tendência em tempo hábil.
Retirada pequena. Há uma certa zona de amortecimento na linha ascendente e descendente, que reduz a probabilidade de quebrar o estorvo e reduz a retirada.
Os sinais de negociação são claros. A ruptura do alcance de compilação é um sinal de negociação de alta qualidade, e pode ser claramente feito em mais direções de vazio.
Alta personalização. O ciclo e o múltiplo do ATR podem ser ajustados para adaptar-se a diferentes condições de mercado.
Visualização forte. Utiliza ferramentas gráficas para mostrar o estado da estratégia, operação intuitiva.
É fácil de otimizar. Pode ser adicionado um módulo como Stop Loss móvel, Filtragem e outros, para otimizar ainda mais.
Em geral, a estratégia de retroceder é pequena, a vantagem é grande e é adequada para acompanhar tendências, sendo uma estratégia de negociação muito prática.
A estratégia também tem riscos:
Risco de erro de avaliação de tendências.
O risco de escolher o ponto de saída. É necessário escolher um ponto de parada razoável para evitar a saída prematura.
Risco de otimização de parâmetros. O ciclo ATR e o múltiplo requerem otimização de testes repetidos, e a configuração inadequada afeta o desempenho da estratégia.
A frequência de negociação pode ser excessiva em situações de alta volatilidade.
Risco de fraco desempenho. Em alguns mercados onde a tendência não é clara, o desempenho pode ser fraco.
Risco de ajuste de disco físico. Quando a operação é realizada em disco físico, também é necessário realizar a otimização de ajustes para pontos de deslizamento, taxas de processamento, etc.
Risco sistêmico. O controle de risco do sistema como um todo deve ser considerado e não pode depender da estratégia isoladamente.
Os riscos acima podem ser controlados com as seguintes medidas:
Optimizar os parâmetros do ATR para melhorar a precisão de julgamento.
Combinado com análise de múltiplos períodos de tempo, para determinar a tendência.
A utilização de stop loss móvel para bloquear lucros e reduzir a retirada.
Filtragem de condições para controlar a frequência das transações.
Parâmetros de estratégia adaptados a diferentes mercados.
Teste diferentes variedades para encontrar o melhor cenário de aplicação.
Os riscos de transação são considerados em todos os tipos de transações no mercado físico.
A estratégia pode ser otimizada em:
A introdução de indicadores como a linha média para filtragem, reduzindo os sinais errados. Pode ser adicionado um julgamento auxiliar de indicadores como MACD, KDJ.
Optimizar os parâmetros ATR. Você pode testar diferentes parâmetros ATR para encontrar o melhor valor.
Optimizar parâmetros de multiplicadores. Pode testar diferentes parâmetros de multiplicadores para determinar a sensibilidade do sinal gerado.
Adotar uma estratégia de parada móvel. A parada dinâmica de acordo com o ATR ou a taxa de flutuação pode reduzir ainda mais a retirada.
Combinado com a análise de múltiplos períodos de tempo, o julgamento de indicadores de períodos de tempo mais elevados permite filtrar os falsos sinais esporádicos.
Aprendizagem de máquina para aprimorar o julgamento de sinais. Aprendizagem de modelos de compra e venda usando treinamento de modelos como RNN.
Ajustar os parâmetros para as características da variedade. Por exemplo, para ações flutuantes, o ciclo ATR pode ser apropriadamente reduzido.
Optimizar o ponto de entrada. Pode-se encontrar melhores pontos de entrada através de métodos como a ruptura e a retração.
Indicador de potência de ligação. Adição de quantidade de transação e outros auxiliares para determinar a intensidade do sinal.
Adicionar estratégias de parada. Determinar o ponto de parada de acordo com o indicador de energia da tendência.
Esta estratégia de super tendências é muito prática em geral, com vantagens de resposta rápida, retração pequena e facilidade de otimização, é uma estratégia típica de acompanhamento de tendências. Mas também é necessário ter em conta os riscos de erro de julgamento e otimização de parâmetros, que devem ser considerados de forma abrangente no campo. Com a otimização adicional, a estratégia pode ser mais robusta e obter melhores resultados em mais mercados.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
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
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
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=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
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", 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() => true
longCondition = buySignal
if (longCondition)
strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
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)
//@version=3
//study(title="3 Moving Average Exponential", shorttitle="3 EMA", overlay=true)
//len1 = input(17, minval=1, title="Fast")
//len2 = input(72, minval=1, title="Medium")
len3 = input(305, minval=1, title="Slow")
//src1 = input(close, title="Source Fast")
//src2 = input(close, title="Source Medium")
src3 = input(close, title="Source Slow")
//out1 = ema(src1, len1)
//out2 = ema(src2, len2)
out3 = ema(src3, len3)
//plot(out1, title="EMA1", color=fuchsia)
//plot(out2, title="EMA2", color=orange)
plot(out3, title="EMA3", color=color.blue)