
A lógica central desta estratégia é detectar se o preço de fechamento de uma linha K de raiz N contínua está aumentando continuamente, e, se for, fazer mais; se não estiver satisfeito, feche a posição. Assim, é possível capturar a tendência de aumento do preço da ação e obter lucro.
O indicador central da estratégia é o nCounter, que determina se o preço subiu ou não comparando o preço de fechamento e o preço de abertura da linha K atual.
Afinal, se o “close”[1]>=open[1], então nCounter mais 1, para cima; se close[1]
O nCounter é então comparado com o parâmetro nLength, e quando nCounter> = nLength, o sinal de saída é C1 = 1; caso contrário, C1 = 0 ≠ nLength, onde nLength é o número de linhas K de ascensão contínua que precisamos definir para produzir o sinal ≠
Após receber o sinal de C1 = 1, se não houver nenhuma posição atual, execute mais; se já houver mais de um titular, continue a manter a posição.
Além disso, a estratégia também estabelece condições de stop loss e stop-loss. Se o preço estiver abaixo de uma certa proporção do preço de entrada, a parada é parada; se for acima de uma certa proporção do preço de entrada, a parada é feita.
Esta é uma estratégia típica de acompanhamento de tendências e tem as seguintes vantagens:
A estratégia também apresenta alguns riscos, que se concentram nos seguintes aspectos:
Para reduzir esses riscos, podemos definir condições de stop loss mais rigorosas, otimizar o parâmetro nLength, adicionar regras de julgamento de grande porte ou testar parâmetros separadamente para diferentes ações. Claro, qualquer estratégia é difícil de evitar perdas completamente e precisa ser correspondida às preferências de risco do comerciante.
Considerando os riscos acima, podemos continuar a otimizar a estratégia em alguns aspectos:
A estratégia capta a tendência de ascensão através da detecção de N raízes de ascensão contínua e K linhas de ascensão, permitindo um acompanhamento eficaz da tendência. A vantagem é a simplicidade lógica, a flexibilidade de ajuste de parâmetros e a possibilidade de filtrar falsas rupturas. Mas também há certos riscos, e é necessário adicionar módulos como stop loss, otimização de parâmetros e julgamento ambiental para melhorar a estratégia de forma mais abrangente e estável.
/*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)