
Uma estratégia de negociação de ruptura reversa é uma estratégia de negociação baseada em operações de ruptura de preços em ascensão ou queda contínua. A estratégia opera de forma reversa para obter lucro, estabelecendo um ciclo de ascensão ou queda contínua de preços, após a formação de uma determinada tendência.
A estratégia é executada através das seguintes partes:
O comprimento de um ciclo em que os preços subem e descem consecutivamente, ou seja, consecutiveBarsUp e consecutiveBarsDown, é o comprimento de um ciclo em que as tendências de preços atuais atingem o comprimento definido para a ação de um sinal de negociação.
Calcule o aumento ou queda do preço atual em relação ao preço do período anterior, com base no aumento ou queda do preço atual.
Configure o intervalo de tempo de resposta, limitando a estratégia apenas no tempo de resposta por time_cond.
Configure o horário de negociação diário, limitando o sinal de negociação em apenas um período de tempo definido através dotimetobuy.
Quando o ciclo de alta contínua do preço atinge o comprimento definido, é emitido um sinal de multiplicação, através de strategy.long; quando o ciclo de queda contínua do preço atinge o comprimento definido, é emitido um sinal de curto, através de strategy.short。
Pode-se definir o preço de stop loss e de stop loss. Se você fizer um longo prazo, você pode definir um longo prazo. Se você fizer um longo prazo, você pode definir um longo prazo.
Pode-se configurar um aviso de notificações para o envio de sinais de transação.
De acordo com os parâmetros acima e o preço, emite um sinal de fazer mais ou fazer menos quando estiver em condições.
A estratégia de reversão tem as seguintes vantagens:
Capturar o ponto de reversão de preço, a reversão pode obter melhores lucros. Quando o preço se forma uma tendência, a reversão pode ser feita quando o preço se reverte.
Parâmetros de configuração flexíveis, podem ser ajustados de acordo com o mercado. Pode ajustar o número de ciclos de subidas e descidas contínuas, ajustar o ponto de parada de parada, limitar o período de negociação, pode ser otimizado de acordo com a situação real.
Pode-se adicionar um stop loss para controlar o risco. Pode-se pré-definir o stop loss e o stop stop para ajudar a controlar o risco de negociação.
Pode-se configurar mensagens de aviso de negociação para facilitar a automatização de negociação. Pode-se configurar mensagens de aviso quando o sinal de negociação é enviado, compatível com o uso do sistema de negociação automática.
Pode-se configurar um intervalo de tempo de retorno para facilitar o teste da estratégia. A adição de um intervalo de tempo de retorno permite observar o efeito da estratégia em diferentes condições de mercado.
A estratégia também apresenta alguns riscos que devem ser lembrados:
Evite eventos de notícias importantes. Quando as notícias importantes são divulgadas, não é possível determinar a tendência dos preços. A estratégia emite sinais simultâneos de cortes de preço, causando prejuízos.
Quando a inversão não é visível, não funciona muito bem. Quando a tendência não é visível, a inversão não é eficaz e deve ser usada com cautela.
Risco de adequação dos dados de retrospectiva. A otimização da estratégia deve evitar a dependência excessiva dos dados de retrospectiva, os dados de retrospectiva não representam tendências futuras. Os parâmetros devem ser adequadamente ajustados em tempo real.
A frequência de negociação excessiva é fácil de ser vendida. Se o ciclo de configuração for muito curto, a frequência de negociação será excessiva e prejudicará a estabilidade de lucro a longo prazo.
A estratégia de parada de perda pode ser apropriadamente otimizada para reduzir o risco. A parada de perda fixa existente pode ser otimizada ainda mais para parar a tendência.
A estratégia pode ser melhorada em alguns aspectos:
Aumentar o mecanismo de julgamento de tendências, evitar a reversão turbulenta do mercado não-trend. Pode detectar a taxa de flutuação dos preços, canais e outros indicadores, julgar o grau de tendência, evitar a perda de pontos de reversão de preços.
Optimizar a estratégia de stop loss para que ela possa ser automaticamente ajustada à variação do mercado. Pode-se adotar métodos como o stop loss porcentual de saldo, o stop loss ATR, etc., para tornar a configuração do stop loss mais inteligente.
Adicionar indicadores de capacidade de quantidade para julgar. Combinando indicadores como a mudança no volume de transação, evite sinais errôneos gerados apenas com base na forma da linha K.
Combinação multivariada. Aplicar estratégias para diferentes variedades, combinando-as, pode dispersar o risco de uma única variedade.
Optimização de parâmetros e aprendizagem de máquina. Recolha mais dados históricos e otimize os parâmetros automaticamente usando métodos de aprendizagem de máquina para tornar a estratégia mais estável.
A estratégia de negociação de ruptura reversa pode obter bons sinais de negociação através da captura de pontos de inversão de preços. A vantagem da estratégia é a configuração flexível, o risco controlado e adequado para a negociação automatizada.
/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Strategy
strategy("Up/Down Strategy - Contrarian", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
consecutiveBarsUp = input(1, title='Consecutive Bars Up')
consecutiveBarsDown = input(1, title='Consecutive Bars Down')
price = close
ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0
dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0
// Strategy Backtesting
startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')
time_cond = true
//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true
// Stop Loss & Take Profit Tick Based
enablesltp = input(false, title='Enable Take Profit & Stop Loss')
stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100
takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100
longStop = strategy.position_avg_price - stopTick
shortStop = strategy.position_avg_price + stopTick
shortTake = strategy.position_avg_price - takeTick
longTake = strategy.position_avg_price + takeTick
plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")
// Alert messages
message_enterlong = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")
// Strategy Execution
if (dns >= consecutiveBarsDown) and time_cond and timetobuy
strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong)
if (ups >= consecutiveBarsUp) and time_cond and timetobuy
strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort)
if strategy.position_size < 0 and timetoclose and enableclose
strategy.close_all(alert_message = message_closelong)
if strategy.position_size > 0 and timetoclose and enableclose
strategy.close_all(alert_message = message_closeshort)
if strategy.position_size < 0 and enablesltp and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size > 0 and enablesltp and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)