Esta estratégia visa detectar a variação percentual do preço das ações dentro de um determinado período de tempo e gerar sinais de negociação quando um limiar é excedido.
O parâmetro de entrada x representa o número de períodos de velas a verificar, com um padrão de 5 para velas de 5 minutos.
Calcular a variação percentual do preço de fechamento atual em relação ao preço de fechamento x períodos atrás, guardada como trueChange1 e trueChange2.
Os parâmetros de entrada percentChangePos e percentChangeNeg representam a variação percentual do limiar, com valores por defeito de 0,4% e -0,4%.
Quando trueChange1 é maior que percentChangePos, um sinal de compra é gerado.
Adicionar cores de texto e de fundo para status de compra e venda.
Definir regras de entrada e saída com base nos sinais.
Configurar alertas e desenhos.
Utilize a variação percentual em vez da variação absoluta do preço, adaptável a diferentes stocks.
Estabelecer limiares percentuais positivos e negativos flexíveis para identificar as rupturas das bandas de Bollinger.
Período de detecção ajustável para identificar alterações de tendência em diferentes prazos.
Alertas configuráveis para captar sinais importantes.
Lógica de sinal simples e direta, fácil de entender e usar.
Captar reversões de curto prazo no mercado aberto.
A variação percentual não determina a direcção da tendência, podendo gerar sinais enganosos.
Os parâmetros padrão podem não corresponder a todos os estoques, sendo necessário ajuste específico.
Sem stop loss no local, incapaz de limitar perdas.
Sinais frequentes, custos comerciais potencialmente elevados.
Incapaz de determinar a estrutura do mercado, propenso a falhas em mercados variados.
Soluções:
Combinar com indicadores de tendência como regressão linear para determinar a tendência geral.
Otimizar os parâmetros com base nas características das existências.
Implementar um stop loss adequado.
Filtrar sinais para evitar excesso de negociação.
Medir a estrutura do mercado a partir de prazos mais longos para evitar problemas comerciais.
Adicionar mecanismos de stop loss como stop loss para limitar as perdas.
Adicione condições de filtro como volume, médias móveis para evitar batidas.
Otimizar as regras de entrada e saída com indicadores como o MACD.
Usar aprendizagem de máquina para otimizar automaticamente parâmetros.
Incorporar uma análise da estrutura do mercado para evitar problemas.
Parâmetros definidos dinamicamente com base na volatilidade e liquidez.
Combinar com uma análise de prazo mais longo para determinar a tendência geral.
Esta estratégia gera negócios comparando a mudança percentual de preço com limiares pré-estabelecidos, tornando-se uma estratégia de reversão média de curto prazo. As vantagens estão em sua simplicidade, flexibilidade e capacidade de capturar movimentos repentinos do mercado. As desvantagens são riscos que podem ser abordados através de otimizações e uso adequado com análise de tendências e gerenciamento de riscos.
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // created by Oliver strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2) x = input(5, title = 'x candles difference', minval = 1) trueChange1 = (close - close[x]) / close[x] * 100 percentChangePos = input(0.4, title="Percent Change") //if (percentChange > trueChange) then Signal plotChar1 = if percentChangePos > trueChange1 false else true plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny ) trueChange2 = (close - close[x]) / close[x] * 100 percentChangeNeg = input(-0.4, title="Percent Change") plotChar2 = if percentChangeNeg < trueChange2 false else true plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny) //------------------------------------------------------------------------ UpColor() => percentChangePos < trueChange1 DownColor() => percentChangeNeg > trueChange2 //Up = percentChangePos < trueChange1 //Down = percentChangeNeg > trueChange2 col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white //-------- condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na //c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na //barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70) //Background Highlights //bgcolor(condColor, transp=70) //--------- barcolor(UpColor() ? color.lime: DownColor() ? color.red : na) bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na) //------------------------------------------------------------------------ buy = percentChangePos < trueChange1 sell = percentChangeNeg > trueChange2 //------------------------------------------------------------------------ /////////////// Alerts /////////////// alertcondition(buy, title='buy', message='Buy') alertcondition(sell, title='sell', message='Sell') //------------------------------------------------- if (buy) strategy.entry("My Long Entry Id", strategy.long) if (sell) strategy.entry("My Short Entry Id", strategy.short) /////////////////// Plotting //////////////////////// plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0) //plot for buy icon plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)