
La lógica central de esta estrategia es detectar si el precio de cierre de la línea K de raíz N consecutiva ha aumentado continuamente, si es así, haga más; si no es satisfactorio, ponga en pie. De esta manera, se puede capturar la tendencia al alza del precio de las acciones y obtener ganancias.
El indicador central de la estrategia es el nCounter, que determina si el precio ha subido comparando el precio de cierre y el precio de apertura de la línea K actual.
En concreto, si el “close”[1]>=open[1], entonces nCounter más 1, para el aumento; si close[1]
Luego comparamos el nCounter con el parámetro nLength, y cuando nCounter>=nLength, la señal de salida es C1=1; de lo contrario, C1=0。 Aquí el nLength es el número de líneas K que necesitamos definir para generar la señal。
Después de recibir la señal de C1=1, si no tiene una posición en ese momento, ejecuta más; si ya tiene una posición en ese momento, continúe manteniéndola.
Además, la estrategia también establece condiciones de stop loss y stop-loss. Si el precio está por debajo de una cierta proporción del precio de entrada, se detiene la posición de equilibrio; si es superior a una cierta proporción del precio de entrada, se detiene.
Esta es una estrategia de seguimiento de tendencias bastante típica, que tiene las siguientes ventajas:
La estrategia también tiene algunos riesgos, que se centran en los siguientes aspectos:
Para reducir estos riesgos, podemos establecer condiciones de stop loss más estrictas, optimizar los parámetros de nLength, agregar reglas de juicio de la bolsa grande o probar parámetros separados para diferentes acciones. Por supuesto, cualquier estrategia es difícil de evitar por completo las pérdidas y debe coincidir con las preferencias de riesgo de los comerciantes.
Teniendo en cuenta los riesgos mencionados, podemos seguir optimizando la estrategia en los siguientes aspectos:
La estrategia capta la tendencia de la subida mediante la detección de N raíces de subidas continuas de la línea K. La estrategia permite un seguimiento de tendencias eficaz. La ventaja es la simplicidad lógica, la flexibilidad de ajuste de parámetros y la posibilidad de filtrar falsos rebotes. Pero también existe un cierto riesgo, que requiere la adición de módulos como el stop loss, la optimización de parámetros y el juicio ambiental para mejorar la estrategia.
/*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)