N Estratégia de ruptura de fechamentos consecutivos mais elevados

Autora:ChaoZhang, Data: 2023-12-08 10:50:54
Tags:

img

Resumo

A lógica central desta estratégia é detectar se o preço de fechamento de N velas consecutivas continua a subir. Se assim for, vá longo; caso contrário, feche a posição. Isso pode capturar a tendência de alta do preço das ações e obter lucro.

Princípio da estratégia

O indicador central desta estratégia é o nCounter. Ele compara o preço de fechamento e o preço de abertura da vela atual para julgar se o preço sobe.

Especificamente, se close[1]>=open[1], nCounter adiciona 1, indicando aumento; se close[1]

Em seguida, compare o nCounter com o parâmetro nLength. Quando o nCounter>=nLength, o sinal de saída C1=1; caso contrário, C1=0.

Após receber o sinal C1=1, se não houver posição atual, vá longo; se já estiver em posição longa, mantenha a espera.

Além disso, esta estratégia define condições de stop loss e take profit. Se o preço cair abaixo do preço de entrada em uma certa porcentagem, o stop loss sai da posição; se subir acima do preço de entrada em uma certa porcentagem, take profit.

Análise das vantagens

Esta é uma tendência típica que segue uma estratégia com os seguintes pontos fortes:

  1. Pode aproveitar as oportunidades de tendência de alta do preço das ações, adequado como estratégia longa
  2. N ascensões consecutivas como sinal de entrada pode efetivamente filtrar a falha de ruptura e reduzir as negociações desnecessárias
  3. A definição de stop loss e take profit pode limitar o risco de queda e bloquear os lucros
  4. A lógica é simples e clara, fácil de entender e modificar
  5. A frequência de negociação pode ser controlada ajustando o parâmetro nLength

Análise de riscos

Esta estratégia apresenta alguns riscos, principalmente nos seguintes aspectos:

  1. Se a tendência de alta se inverter, a falha em parar a perda a tempo pode levar a perdas enormes
  2. Se o conjunto nLength for muito grande, podem ser perdidas boas oportunidades de entrada
  3. Não considera o ambiente de mercado.
  4. A utilização de parâmetros unificados sem ajustamento com base em diferentes características das unidades populacionais pode não ser aplicável a algumas unidades populacionais

Para reduzir esses riscos, podemos definir um stop loss mais rigoroso, otimizar o nLength, adicionar regras de condições de mercado ou testar parâmetros separadamente para diferentes ações.

Orientações de otimização

Considerando os riscos acima, podemos otimizar a estratégia a partir dos seguintes aspectos:

  1. Eles podem ajustar o ponto de stop loss em conformidade com a mudança de preço para reduzir o risco de perda
  2. Otimize o parâmetro nLength. Teste respectivamente para diferentes tipos de estoques para descobrir valores de parâmetro mais adequados
  3. Adicionar julgamento do ambiente do mercado. Por exemplo, pausa a negociação quando o mercado cai para evitar perdas extras no mercado de baixa
  4. Adicionar outros fatores como volume como condições auxiliares.
  5. Configure o controle de retirada, como a percentagem máxima de perda permitida, o tempo máximo de perda consecutiva, etc., para parar a perda, controlando automaticamente a perda total

Conclusão

Esta estratégia capta a tendência de alta detectando N velas ascendentes consecutivas. Pode efetivamente conduzir a tendência seguinte. As vantagens são lógica simples, ajuste flexível de parâmetros, filtragem de falha de ruptura. Mas também há alguns riscos. Precisa adicionar módulos como stop loss, otimização de parâmetros, julgamento do ambiente para melhorar. De um modo geral, esta estratégia fornece um modelo básico valioso para negociação quantitativa. Pode se tornar uma poderosa ferramenta de negociação após melhoria contínua.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/02/2020
// Evaluates for n number of consecutive higher closes. Returns a value 
// of 1 when the condition is true or 0 when false.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="N Bars Up", shorttitle="NBU Backtest", overlay = false) 
nLength = input(4, minval=1)
input_takeprofit = input(20, title="Take Profit pip", step=0.01)
input_stoploss = input(10, title="Stop Loss pip", step=0.01)
nCounter = 0
nCounter := iff(close[1] >= open[1], nz(nCounter[1],0)+1,
             iff(close[1] < open[1], 0, nCounter))
C1 = iff(nCounter >= nLength, 1, 0)
posprice = 0.0
pos = 0
barcolor(nz(pos[1], 0) == -1 ? color.red: nz(pos[1], 0) == 1 ? color.green : color.blue ) 
posprice := iff(C1== 1, close, nz(posprice[1], 0)) 
pos := iff(posprice > 0, 1, 0)
if (pos == 0) 
    strategy.close_all()
if (pos == 1)
    strategy.entry("Long", strategy.long)
posprice := iff(low <= posprice - input_stoploss and posprice > 0, 0 ,  nz(posprice, 0))
posprice := iff(high >= posprice + input_takeprofit and posprice > 0, 0 ,  nz(posprice, 0))
plot(C1, title='NBU', color=color.green)

Mais.