Hoy quiero hablarles sobre la implementación de un clasificador basado en k-vecinos más cercanos. Este enfoque no ha dado los resultados esperados, probablemente por el tiempo limitado que dediqué a su ajuste y tal vez por la falta de algunos conocimientos técnicos. Pero, como siempre, es bueno compartir ideas y discutir, ¡quizás juntos podamos hacer que esto funcione!
La función Euclidean_Metric es nuestro clasificador. Utilizando la base de vectores que describe las operaciones o situaciones del mercado, esta función determina si un vector de entrada pertenece a algún grupo de la base. Los vectores son agrupados por el usuario; en este caso, si una operación cerró con resultados positivos, se clasifica como clase 1, y si fue negativa, como clase 0. La búsqueda de los vecinos más cercanos de un vector multidimensional se realiza utilizando la distancia euclidiana. Luego, cuenta cuántos de esos k-vectores pertenecen a la clase 1. Después, divide este valor por el total de vecinos (es decir, por k) y obtiene la probabilidad de que el vector dado pertenezca a la clase 1. Debido a la selección inadecuada de las coordenadas de los vectores, esta clasificación no siempre es completamente confiable (simplemente por encima de 0.5 o por debajo de 0.5). Por ello, se incluyó un umbral adicional: si la probabilidad de que una operación futura sea rentable es mayor a 0.7, entonces se debe entrar al mercado. Se han tomado las relaciones de las medias móviles como medidas (coordenadas) de los vectores, suponiendo que estas relaciones son estáticas y que, después de clasificar los vectores (operaciones) una vez, esta clasificación podría utilizarse también en pruebas futuras. Pero, no es tan sencillo :) ¿Por qué elegimos k-vecinos más cercanos? Simplemente porque al considerar el primer vecino más cercano, podría tratarse de un pico anómalo de un valor aleatorio que se seleccionará para la clasificación sin considerar que hay un grupo de vectores opuestos muy cerca. Para más información, pueden consultar el libro de S. Haykin «Redes Neuronales: Una Fundación Integral» (Métodos de Aprendizaje).
Ahora, hablemos de los problemas que enfrenta nuestro clasificador:
- 1) Encontrar datos estáticos que describan las situaciones del mercado (o futuras operaciones) con la precisión requerida y el nivel de clasificación adecuado.
- 2) Gran volumen de operaciones matemáticas, lo que significa que los cálculos pueden tardar un buen rato… (por cierto, un poco menos que el PNN).
En pocas palabras, los problemas son casi los mismos que en un Sistema de Trading convencional. La ventaja es que el clasificador puede formalizar condiciones que el trader no puede ver, pero que intuimos que ciertos valores de indicadores afectan la decisión de abrir una operación.
Ahora, sobre la implementación específica:
- Base - true escribe un archivo con la base de vectores, false opera con clasificación…
- buy_threshold = 0.6 umbral para todas las posiciones de Compra
- sell_threshold = 0.6 igual para Venta
- inverse_position_open_? = true; Este es un punto interesante. Si la probabilidad de una operación rentable es muy baja, ¿por qué no entrar al mercado con una posición inversa? Este flag permite esas posiciones.
- invers_buy_threshold = 0.3; umbral en el que, si la probabilidad de una posición Compra rentable es menor, se abre una operación de venta.
- invers_sell_threshold = 0.3; igual para…
- fast = 12 parámetros de MACD
- slow = 34;
- tp = 40; Take Profit
- sl = 30; Stop Loss
- close_orders = false; flag para habilitar el cierre solo con una señal opuesta si la orden está en ganancias…
Uso: Primero, activa el flag Base - true, ajusta sl = tp y ejecuta sobre la historia (¡una vez!), se escribirá el archivo de vectores. La próxima vez, configura Base - false y se recomienda optimizar los umbrales; los elijo según el primer informe (sin clasificación). Si la probabilidad de éxito = 0.5, entonces los umbrales son 0.6 y 0.4 (para invertir la posición).
Una vez más, esto es solo un ejemplo; el clasificador puede aplicarse a otros Sistemas de Trading de la misma manera, utilizando otros datos de entrada.
Antes de la clasificación:

Después, con optimización de umbrales.



Publicaciones relacionadas
- Promedio Móvil: Asesor Experto para MetaTrader 5
- Señales de Trading con MQL5: Patrones de Estrellas y MFI
- Crossover de 2 MA: Tu Asesor Experto para MetaTrader 4
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Dark Cloud Cover y Piercing Line
- Crea tu Asesor Experto en MetaTrader 5: Señales de Trading con Harami y MFI