Esta estratégia mostra o que aconteceria se você seguir cegamente o indicador Supertrend. Como sabemos, o Supertrend não aparece imediatamente e precisamos esperar pela próxima barra para decidir se entrar ou não em uma posição. Então você pode ver o que acontecerá se você tomar uma posição depois que o Supertrend finalmente for formado. Este indicador é extremamente perigoso sem outras ferramentas e pode dar drawdowns muito sérios.
Esta estratégia usa o indicador Supertrend para determinar a tendência de preços.
Quando o preço de fechamento está acima da linha superior, representa uma tendência ascendente sustentada; quando o preço de fechamento está abaixo da linha inferior, representa uma tendência descendente sustentada.
Esta estratégia define dois parâmetros: Fator e Pd. O fator controla a largura do canal Supertrend e Pd controla o comprimento do período para calcular o ATR. Com base nestes dois parâmetros, os trilhos superior e inferior podem ser construídos.
Fórmula do trilho superior: hl2 - (Fator * ATR(Pd)) Fórmula do trilho inferior: hl2 + (fator * ATR(Pd))
Onde hl2 representa o ponto médio dos preços altos e baixos.
Em seguida, compare o preço de fechamento atual com os trilhos superior e inferior para determinar se é uma tendência ascendente ou descendente, e sai uma variável de tendência booleana.
Trace os trilhos superior e inferior da Supertrend com base na tendência e coloque sinais de entrada e saída quando o status da tendência mudar.
Definir a lógica de entrada da estratégia com base nos sinais.
Esta estratégia tem as seguintes vantagens:
Usa o indicador Supertrend, que pode determinar claramente a tendência de preços e pontos pivô.
Estabelece uma lógica clara de entrada e saída.
Visualiza o tempo de entrada com setas.
Uma lógica estratégica simples e fácil de entender.
Esta estratégia apresenta os seguintes riscos:
Seguir cegamente a Supertrend sem outros indicadores auxiliares e gerenciamento de dinheiro pode levar a grandes quedas.
Sem stop loss, incapaz de controlar perdas individuais.
Os sinais podem atrasar-se, não conseguindo entrar a tempo em torno dos pontos de viragem.
Configurações incorretas dos parâmetros podem fazer com que o canal Supertrend seja demasiado largo ou demasiado estreito.
Medidas de gestão de riscos:
Combine com outros indicadores como MACD, KDJ para validação de eficácia, evitando seguir cegamente.
Configurar um stop loss razoável para maximizar o controlo sobre uma única perda.
Ajustar os parâmetros para fazer o canal Supertrend razoável, evitar muito largo ou muito estreito.
Esta estratégia pode ser otimizada nos seguintes aspectos:
Adicionar indicadores auxiliares para validação da eficácia para evitar falhas.
Configure uma lógica de stop loss razoável, pode definir percentagem de stop loss baseada no ATR.
Otimize os hiperparâmetros Fator e Pd para encontrar as melhores combinações de parâmetros.
Otimizar o tempo de entrada para evitar o atraso do sinal. Por exemplo, os indicadores de momento podem ser introduzidos para ajustar o tempo de entrada com base na força e fraqueza.
Adicionar estratégias de dimensionamento de posição. Por exemplo, pode-se adotar dimensionamento de posição fracionário fixo.
Esta estratégia usa o indicador Supertrend para determinar a tendência de preços e encontrar pontos de virada. Seguir cegamente a Supertrend sem indicadores auxiliares e meios de stop loss traz enormes riscos. Propusemos melhorias em aspectos como gerenciamento de risco, estratégias de stop loss, otimização de parâmetros, tempo de entrada, etc., o que pode melhorar significativamente a estabilidade e lucratividade da estratégia.
/*backtest start: 2022-12-06 00:00:00 end: 2023-12-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Supertrend blind follow", overlay=true) Factor=input(3, minval=1,maxval = 100) Pd=input(7, minval=1,maxval = 100) Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1) Tsl = Trend==1? TrendUp: TrendDown linecolor = Trend == 1 ? green : red plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend") plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0) plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0) //plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend") plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0) plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0) longCondition = cross(close,Tsl) and close>Tsl if (longCondition) strategy.entry("long", strategy.long) shortCondition = cross(Tsl,close) and close<Tsl if (shortCondition) strategy.entry("short", strategy.short)