
Esta estrategia determina la dirección de la línea K en el futuro mediante el análisis de los precios de cierre de las líneas K de N-raíz en el pasado, que son más altos / más bajos que los precios de apertura. De acuerdo con la situación de mayor vacío en la dirección de la línea K, se toman operaciones de sobre-o bajo-vacío.
La lógica central de esta estrategia es la siguiente:
Configura el parámetro NUM_CANDLES para determinar el número de líneas K que se necesitan analizar.
Define la función candle_dir, que determina la dirección de una sola línea K. close>open es la dirección de varios puntos, close
Define la función count_candles para calcular el número de líneas K de diferentes direcciones en el pasado en la raíz K de NUM_CANDLES.
Calcula el número de cabezas, cabezas vacías y cabezas de vibración en las líneas K de la raíz NUM_CANDLES pasada, almacenadas en ups, dns, neu.
Define el indicador indic, cuyo valor es igual a los valores de ups-dns más el valor positivo negativo de neu。
El índice indica cuándo hacer más y cuándo menos.
Esta estrategia determina la probabilidad de una futura dirección de la línea K mediante la estadística de un determinado número de líneas K, para tomar decisiones comerciales. El parámetro NUM_CANDLES permite controlar la cantidad de líneas K estadísticas y ajustar la sensibilidad de la estrategia.
Las ideas estratégicas son claras y fáciles de entender, interpretar y verificar.
No es necesario calcular indicadores complejos, solo se requieren datos de línea K, lo que reduce el costo de cálculo.
Se puede ajustar el número de líneas K estadísticas mediante parámetros para controlar la sensibilidad de la estrategia.
Se puede usar en cualquier variedad y en cualquier ciclo, es muy útil.
Fácil optimización de parámetros para encontrar la combinación óptima de parámetros.
No se puede manejar la liquidación de mercados convulsivos, lo que puede ocasionar la apertura y liquidación frecuentes de las posiciones.
Un ciclo estadístico incorrecto puede causar un retraso en la señal, por lo que es necesario configurar los parámetros de manera razonable.
La falta de capacidad para manejar una reversión de la tendencia puede conllevar el riesgo de pérdidas adversas.
Se debe considerar el impacto de los costos de las transacciones para evitar que las transacciones sean demasiado frecuentes.
Se debe tener en cuenta la optimización de los parámetros para el problema de la sobreadaptación, y se debe verificar con más pruebas de retroalimentación del mercado.
Se puede considerar la adición de una lógica de stop loss para reducir el riesgo de pérdidas.
Se puede combinar con indicadores de tendencia para evitar operaciones de reversión.
Se pueden aumentar los ciclos estadísticos o utilizar ciclos bajos, optimizando los parámetros para mejorar la estabilidad de la estrategia.
Se puede considerar la combinación de varias variedades para mejorar la estrategia de éxito.
Los parámetros de optimización automática se pueden combinar con métodos de aprendizaje automático.
Esta estrategia se basa en el análisis de la dirección de la línea K para determinar la dirección de la negociación, la idea es clara y fácil de entender, la sensibilidad de la estrategia se puede controlar a través de la configuración de parámetros. Las ventajas de la estrategia son la sencillez lógica, los requisitos de uso bajos y la amplia gama de aplicaciones, pero también existe un cierto riesgo que requiere una optimización adicional para mejorar la estabilidad de la estrategia. En general, esta estrategia proporciona una idea de negociación simple y práctica para la negociación cuantitativa.
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Refined CandleCounter Strategy by origo", overlay=true)
// how many candles to count
NUM_CANDLES = 7
// determine candle direction
candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1)
// return # of candles with a given direction
count_candles(dir, max) =>
count = 0
for i = 0 to max
if candle_dir[i] == dir
count := count + 1
count
ups = count_candles(1, NUM_CANDLES)
dns = count_candles(-1, NUM_CANDLES)
neu = count_candles(0, NUM_CANDLES)
indic = ups-dns
if indic > 0
indic := indic+neu
else
indic := indic-neu
plotarrow(neu, title="UP vs DN")
longCondition = (indic) > 0
shortCondition = (indic) <= 0
strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition)
strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)