Cómo crear una Tarea Técnica al encargar un robot

MetaQuotes | 5 septiembre, 2018

Contenido

Qué necesitamos para encargar un robot comercial

Los robots comerciales son programas que ejecutan los algoritmos implementados en ellos. Los algoritmos son un conjunto de acciones que se deben ejecutar en caso de que aparezca cierto evento. Por ejemplo, la tarea que se encuentra con mayor frecuencia en el trading algorítmico es la determinación del evento "Nueva barra". Al surgir dicho evento, el robot comprueba la aparición de señales comerciales y actúa de acuerdo con ellas.

Pero antes de escribir o encargar un robot comercial, hay que tener un sistema comercial con reglas claras para definir los momentos oportunos para la ejecución de transacciones. El desarrollo de cualquier sistema comercial, incluso el más complejo, comienza desde las cosas básicas, y más concretamente, desde la definición de las señales comerciales de compra y venta. Más tarde podrá añadirle diferentes opciones de gestión y cierre de transacciones.

Usted no tiene por qué pasar años delante del monitor del terminal comercial para desarrollar una estrategia comercial. Ya existen cientos de ideas comprobadas disponibles en la web. E incluso si usted no está completamente seguro de sus capacidades en la esfera de la progrmación, esto ya no será una dificultad. El servicio Freelance le ayudará a encontrar el desarrollador adecuado y pagar con toda seguridad por el trabajo realizado.

Pero antes de sumergirse en el interesante mundo del trading algorítmico, le recomendamos leer varios artículos útiles sobre el tema:

Por qué es importante crear una buena Tarea Técnica

A la hora de encargar un asesor es necesario formular los requisitos técnicos para el mismo: qué tareas debe resolver, en qué condiciones debe usarse, qué sucederá en situaciones imprevistas, qué método de gestión requerirán estas, etc. Los robots comerciales son programas que deben funcionar con precisión y de acuerdo con la lógica que se ha implementado en los mismos. Pero antes de programar el algoritmo de las acciones, debemos describirlo con precisión y exactitud.

La descripción de una estrategia comercial se realiza en forma de Tarea Técnica. Y cuanto más detallada sea su composición, menos malentendidos surgirán entre usted (el Cliente) y el programador (el ejecutor de su Encargo).

Lo más importante en la Tarea Técnica es presentar unas reglas comerciales bien descritas y unívocas. Incluso si usted no tiene la intención de encargar un experto y va a escribirlo por sí mismo, comience definiendo claramente estas reglas. Cree una Tarea Técnica e incluya en la misma opciones sobre la simulación/optimización del asesor. Añada asimismo las hipótesis que le ayudarán a comprobar la calidad y estabilidad de su estrategia comercial: los criterios por los que va a elegir los parámetros óptimos y por qué los considera importantes.

Incluya todas estas etapas de creación del robot comercial en la Tarea Técnica, de esta forma, facilitará la comprensión de la esencia del algoritmo no solo al ejecutor, sino también a usted mismo, incluso tras el paso de semanas, meses y años. Recuerde que el trading algorítmico no es una afición, sino un largo camino de investigación, cuyas etapas deben estar debidamente documentadas. Usted necesita esto más incluso que el programador que le escribirá el trabajo.

Debe aprender a desarrollar las habilidades de un oficinista que clasifica todo en archivadores. A la hora de comprobar una nueva idea, le vendrá muy bien un diario de desarrollos para cada sistema comercial. Además, a los programadores le gustan los encargos bien trabajados y formulados.

Ejemplo de Tarea Técnica

Vamos a poner un ejemplo sobre cómo se podría formular una Tarea Técnica para el asesor MACD Sample, incluido en el paquete estándar de MetaTrader 5.

1. Idea del sistema comercial: entrada en el cruce de las líneas de señal y principal del indicador MACD en la dirección de la tendencia actual.

2. La tendencia se define según una media móvil exponencial con el periodo indicado (InpMATrendPeriod). Si el volumen actual de la EMA (media móvil exponencial) es superior al anterior, la tendencia será ascendente (ema_current > ema_previous); en el caso contrario, si el valor actual de la EMA es inferior al anterior, la tendencia será descendente (ema_current< ema_previous).

3. Señales comerciales:

4. El cierre de posiciones tiene lugar al darse las señales opuestas: las posiciones Buy se cierran según las señales de venta, y las Sell se cierran según las señales de compra.

5. La apertura de posiciones tiene lugar según el mercado al abrirse una nueva barra. El asesor está pensado solo para la simulación con los precios de apertura, por eso no se requieren funciones adicionales para la prohibición del trabajo dentro de la barra.

6. Filtros adicionales para la apertura de posición:

Para descartar las señales débiles, usamos el valor absoluto de la línea principal del indicador MACD: si dicho valor es superior al nivel de apertura establecido (open_level) en puntos, la señal se confirmará. De esta forma, las condiciones de confirmación de la fuerza de las señales tendrán el aspecto siguiente:

7. Filtros adicionales para el cierre de posición:

Para el cierre, también confirmamos la fuerza de las señales con la ayuda del valor absoluto de la línea principal del indicador MACD: si este es superior al nivel de cierre establecido (close_level) en puntos, la señal se confirmará. De esta forma, las condiciones de confirmación del cierre de posiciones según las señales tendrán el aspecto siguiente:

8. Cierre de posiciones según TakeProfit: al abrir una posición, se coloca de inmediato una orden TakeProfit a una distancia fija establecida del precio de apertura en puntos, dicha distancia se indica con el parámetro de entrada InpTakeProfit.

9. Gestión de posiciones

Para proteger los beneficios, se usa un TrailngStop. La orden StopLoss se coloca en el caso de que el beneficio en puntos supere un valor establecido, indicado con el parámetro de entrada InpTrailingStop. En lo sucesivo, si el precio continúa moviéndose en una dirección propicia, el StopLoss siempre lo seguirá a la distancia establecida. El StopLoss no puede desplazarse en una dirección desfavorable, es decir, el tamaño del stop no puede aumentarse. Si no se ha activado ni una sola de las órdenes de protección (TakeProfit o StopLoss), la posición se cerrará al darse una señal en la dirección opuesta. No existen otras salidas de la posición.


Qué debe contener una Tarea Técnica

La idea comercial

En el primer apartado de su Tarea Técnica es conveniente describir la idea general que representa su estrategia comercial. Por ejemplo: "Si el precio se acerca dos veces al nivel de resistencia y cada vez retrocede, la tercera vez el precio, como norma general, romperá dicho nivel". Aquí se puede adjuntar un gráfico con las lineas de apoyo/resistencia y los indicadores, además de rótulos descriptivos. Para describir la idea no es necesario adjuntar cifras concretas o algoritmos de cálculo. Es decir, en este ejemplo no es necesario explicar directamente cómo definimos:

Un nivel reducido de abstracción en la etapa inicial posibilitará concentrase en la propia idea, y no en los detalles técnicos. Este método permite, en lo sucesivo, generar múltiples variantes de su estrategia comercial: usted podrá cambiar unos bloques de la estrategia o indicadores por otros, añadir o sustituir filtros, etc. En este caso, además, la propia idea permanecerá intacta, solo cambiarán los nombres y los valores de los parámetros de entrada de su robot comercial.

A continuación, es necesario dar una descripción de todos los términos usados en la descripción de la idea. Si la tendencia es importante para la estrategia, defina claramente en qué indicador se va a basar la determinación de la dirección y la fuerza de la tendencia. En las características numéricas de estas definiciones se basan los parámetros de entrada del asesor, y van a ser estas precisamente las que usted optimice en el simulador de estrategias. Le proponemos que llame así al primer apartado de la Tarea Técnica: Idea Comercial.

Términos

Para describir los términos, le recomendamos crear un apartado homónimo en la Tarea Técnica. En este, para cada término se escribirá un párrafo aparte. Componga los términos en negrita para destacar los conceptos clave de su estrategia comercial. Si es necesario, añada a la descripción del término una ilustración en la que muestre lo imprescindible para la comprensión. Los parámetros de entrada del futuro asesor se pueden destacar en cursiva.

Señales Comerciales

El tercer apartado de la Tarea Técnica es el más importante: las Señales Comerciales. En este se describe en qué condiciones, estado de mercado o lecturas de indicadores se realiza la compra. Para describir cada condición necesaria para generar la señal de compra, debemos destacar el parámetro numérico del que depende la aparición de la señal. Por ejemplo, para la media móvil, se tratará del tipo de suavizado y el periodo. Estos importantes parámetros se usarán como parámetros de entrada del futuro experto.

Describa por separado las condiciones para la venta, incluso si estas son simplmente opuestas a las condiciones de compra. En ocasiones, aquí se pueden ocultar sutilezas que el programador puede comprender de forma distinta a usted. Por ejemplo, para la compra se ha establecido la condición "Valor > 0". En este caso, deberá aclarar exactamente la condición de venta: "Valor < 0" o "Valor <= 0".

Incluso la idea comercial más simple comienza a generar muy rápido condiciones y filtros adicionales, que confirman o cancelan la señal comercial. Por eso es importante crear capturas de pantalla aclaratorias en las que se muestren visualmente los indicadores y configuraciones utilizados. Esto permitirá en lo sucesivo aclarar con rapidez situaciones en las que el asesor ha omitido una señal comercial aparentemente obvia, o de repente ha realizado una transacción en un momento inconveniente.

Capturas de pantalla y diagramas de flujo

En internet hay multitud de programas cómodos y gratuitos para crear capturas de pantalla y diagramas. En el artículo Cómo crear una Tarea Técnica al encargar un indicador se describe una serie de consejos para trabajar con ellos. Allí también podrá encontrar consejos sobre el encargo de un indicador que muestra con flechas en el gráfico los momentos de aparición de las señales de compra y venta. Un indicador así, que funcione aparte del asesor, facilitará la comprobación y el control del trabajo del robot comercial tanto online como en la simulación visual.

Vida útil de las señales/órdenes/posiciones

La segunda parte importante de la estrategia comercial es la salida de una posición abierta y la eliminación de órdenes pendientes. Además, las propias señales comerciales pueden ser canceladas después de cierto tiempo, o por la llegada de un cierto evento. Como sucede con las Señales Comerciales, debemos describir en qué condiciones se cerrará la compra/venta, se quitarán las órdenes pendientes o cuándo se cancelará la propia señal.

Gestión de posiciones abiertas y órdenes pendientes

Si su estrategia comercial usa el cierre según los niveles de StopLoss y TakeProfit, adjunte el algoritmo de cálculo. Para trasladar/desplazar estos niveles de forma flexible describa las condicones y el algoritmo de trailing. La modificación de los niveles de SL/TP se puede realizar tanto en la apertura de una nueva barra, como en cada tick. Es necesario indicar claramente este punto en la Tarea Técnica y comprender la diferencia entre los modos de simulación de estrategias comerciales. Le recomendamos encarecidamente que lea el artículo Simulación de estrategias comerciales con ticks reales.

Dónde encontrar una Tarea Técnica, si no puede crearla usted mismo

La composición errónea de una Tarea Técnica o su práctica inexistencia suelen indicar que las reglas del sistema comercial no han sido creadas, o simplemente no existen. Lo que el Cliente llama "sistema comercial", en realidad es simplemente una idea. En semejantes condiciones es imposible empezar a trabajar, porque durante el proceso de escritura del código quedarán rápidamente al descubierto todos los matices imprevistos o la ausencia de algoritmo para las situaciones imprevistas en el mercado. En este caso, el programador comienza en la práctica a inventar vairantes en lugar del Cliente.

Al final, el Ejecutor puede terminar el trabajo por su cuenta y riesgo y entregar al Cliente su robot comercial. Pero este hecho viene inevitablemente acompañado por pérdidas de tiempo, provocadas por la discusión de cada nueva cuestión. Además, aumenta la probabilidad de que el trabajo acabe en el Arbitraje, si a la hora de recibir y comprobar el trabajo, el Cliente nota de repente que las transacciones se ejecutan de una forma distinta a la que él suponía: en realidad él mismo ha sido incapaz de describirlas correctamente. Y por supuesto, el Cliente culpará en este caso al Ejecutor de no haber respetado tal o cual punto de la Tarea Técnica y de haber programado el robot de forma incorrecta. En estas circunstancias, el Arbitraje comprende rápidamente la diferencia en el nivel de competencia de ambas partes y emite un veredicto basándose en la tarea Técnica adjunta al encargo. De acuerdo con las Reglas de Freelance, a la hora de analizar una situación conflictiva, no se tomará en cuenta ninguna correspondencia emitida por parte de terceras personas:

A la hora de analizar el motivo del conflicto y tomar una decisión, en el Arbitraje solo se tiene en cuenta la Tarea Técnica.

En la vida real también es posible esta opción: el cliente tiene unas reglas comerciales rigurosas, pero por algún motivo, es incapaz de crear po sí mismo su propia Tarea Técnica. Por ejemplo, usted no está seguro de cómo describir correctamente algunas cosas, o necesita la ayuda de un especialista en matemáticas, redes neuronales, aprendizaje de máquinas, programación, etc. En este caso, podrá pedir que alguien cree la Tarea Técnica por usted. Para ello, en Freelance existe la categoría "Consultas sobre programación" y "Otras cuestiones".

Elija una de estas dos categorías, póngale al trabajo el nombre "Creación de la TT para encargar un robot comercial" e indique el precio inicial del trabajo. Un desarrollador de sistemas comerciales experimentado le ayudará a formular correctamente las Reglas de su estrategia, de forma que sean comprensibles a otro programador. En este caso, además, usted deberá saber trabajar con gráficos, indicadores y objetos gráficos, para mostrar con ayuda de capturas de pantalla la configuración de sus señales comerciales.

El programador analizará su sistema comercial y le ayudará a crear la descripción del algoritmo comercial, si esto es posible. Si usted no puede formular algún concepto por sí mismo (por ejemplo, "impulso" o "retroceso con respecto al nivel"), el especialista le dará ideas preparadas partiendo de su experiencia. Normalmente, cualquier situación en el mercado se puede describir de forma lógica (y después de manera programática) con algún modelo sencillo con parámetros de variación. Y esta variación se puede expresar con un cierto parámetro que usted optimizará posteriormente en su asesor.

No existen patrones ideales, y es que, por una parte, el mercado nunca repite el mismo escenario, aunque, por otra, en la historia siempre se pueden encontrar situaciones similares. El resultado de su trabajo conjunto deberá ser una Tarea Técnica preparada para encargar un robot comercial según su estrategia.

Qué términos usar

En general, en el sistema comercial existen varios conceptos importantes que describen el estado del mercado o el carácter del movimiento del precio. Incluso si a usted le parece que está utilizando en la Tarea Técnica un concepto sencillo y de uso extendido, lo mejor es que lo describa con detalle. Cree un párrafo para la descripción de cada término.

Por ejemplo, según Bill Williams, una tendencia ascendente implica que las tres líneas de Alligator se ubiquen en este orden de abajo hacia arriba: Azul, Roja, Verde.


Otra definición clásica de la tendecnia es la de Larry Williams, cuando cada nuevo pico está por encima del anterior, y cada nuevo valle no está por debajo del anterior.


En la descripción de los términos se pueden utilizar capturas de pantalla de gráficos, serán de gran ayuda. Le recomendamos que destaque con negrita en la propia Tarea Técnica los términos introducidos, para que despues el Ejecutor pueda encontrarlos directamente en el texto en el caso de duda.

Al describir un término no se debe redirigir al Ejecutor a otras fuentes (sitios web, libros, foros, etc.), en lugar de darle explicaciones. Todo deberá describirse aquí y ahora, no se permiten evasivas del tipo "luego te explico por Skype" en la TT. Anotar todos los términos en la TT le ocupará solo media hora, y le ahorrará tiempo que podrá invertir en la corrección de errores provocados por malentendidos.

Qué escribir en la descripción de un trabajo en Freelance

Al crear el trabajo, describa en varios párrafos la esencia general de su idea comercial, para que los ejecutores potenciales puedan entender qué es lo que necesita. En la descripción del trabajo no hay que exponer las reglas del sistema comercial o mostrar detalles de los indicadores utilizados.

La descripción puede tener el aspecto siguiente:

Escribir un asesor para comerciar en los virajes de la tendencia. Los patrones Price Action serán señales de viraje. Para definir la tendencia se usarán los indicadores ADX, Alligator y MACD; la elección del indicador se establecerá con los parámetros de entrada del asesor.

La idea general de una estrategia comercial

Aquí podemos indicar con qué instrumentos comerciará el robot, si se va a comerciar según la tendencia, cómo se define y con que marco temporal. Si se comercia según la tendencia, describa cómo tiene lugar la entrada, en el retroceso, en la ruptura, etc.

En general, existen solo dos estrategias de comercio en los mercados financieros: de continuación del movimiento y de retorno al valor medio. Su idea comercial deberá relacionarse con una de estas estrategias. Hay que explicar cómo se abrirán las transacciones: según el mercado, después de confirmar la ruptura/retroceso o según el precio más adecuado.

Descripción de la configuración que precede a la señal

Las propias señales pueden ser sencillas y describirse fácilmente con la ayuda de algoritmos. Por ejemplo, son bien conocidos y populares los patrones "Envolvente" y "Barra Pin". Normalmente, no se puede construir una estrategia solo con estas figuras tan bién formalizadas. Semejantes patrones usan para la definción el viraje de tendencia. Y eso significa que la configuración de espera del patrón "Envolvente bajista" será la presencia de tendencia ascendente.

Por eso, en la Tarea Técnica es necesario describir no solo la propia Señal Comercial, sino también mostrar la configuración necesaria para la misma.

Descripción de la señal

La señal de compra o venta aparece al cumplirse cierta condición. Por ejemplo, la señal clásica de compra aparece cuando el precio cruza de abajo hacia arriba la media móvil. Al describir una señal así, es necesario indicar los parámetros:

También se debe matizar la frase "el precio cruza la media": en esta aseveración no todo es tan simple como parece. La señal puede aparecer inmediatamente en el momento del cruce de la media móvil. O usted puede elegir que la vela no solo rompa el nivel de la media, sino que se cierre por encima de él. De ello depende no solo cómo se va a escribir el código, sino también el modo de generación de ticks que se debe utilizar al probar el asesor en el simulador de estrategias.

Por eso debemos describir con precisión conceptos tales como "tendencia", "nivel", "ruptura", "retroceso" y "cruce"; si nos referimos al trabajo con ticks, barras o precios de cierre. Todos estos conceptos deben tener una descripción formal con parámetros numéricos, que usted deberá optimizar más tarde en el simulador de estrategias. Por ejemplo, la fuerza de la tendencia se puede medir con la ayuda del indicador ADX; el indicador Ichimoku Kinko Hyo, sin embargo, no resulta conveniente.

Cuanto mayor número de condiciones y filtros se use en el sistema comercial, más complejo será el robot, eso por no hablar de estrategias complejas que tienen multitud de parámetros de entrada que después requieren de una enorme cantidad de pasadas durante la simulación. Y aunque el simulador de estrategias en MetaTrader 5 permite acelerar el tiempo de simulación decenas y miles de veces, gracias al algoritmo genético y a MQL5 Cloud Network, el volumen de datos obtenidos en esta caso aumenta exponencialmente.

Por eso recomendamos respetar varias reglas a la hora de desarrollar y depurar un robot comercial.

Puede incluso optimizar los parámetros por separado para la compra y la venta, para después reunir el algoritmo en un solo robot comercial. Así invertirá menos tiempo en la búsqueda de los parámetros óptimos y cometerá menos errores. Aunque, en este caso, tendrá que pagar aparte la creación de un indicador/indicadores y asesores intermedios. Pero una buena idea comercial merece la pena. ¿No es cierto?

Vida útil de la señal

En algunos sistemas comericiales, la aparición de una señal no significa la apertura inmediata de una posición. En estas estrategias necesitará la confirmación/autorización de una señal adicional. Por ejemplo, después de la ruptura del nivel de resistencia, hay que esperar el retroceso del precio con respecto al nivel roto, para entrar en las mejores condiciones. En este caso, nos encontramos con el factor temporal: cuánto tiempo o durante cuántas barras estará activa la señal "El nivel ha sido atravesado y esperamos el retroceso". Es posible que tenga sentido esperar el retroceso durante 5 barras o hasta la finalización de la sesión comercial, y después la señal se cancela.

La adición del parámetro "Vida útil" permite introducir filtros adicionales que pueden mejorar la calidad de las señales comerciales.

Colocar órdenes y abrir posiciones

Al escribir las funciones responsables del envío de órdenes comerciales, tiene sentido prever de antemano las funciones adicionales. Por ejemplo, usted puede indicar en su robot comercial distintos MagicNumber y comentarios para el posterior análisis de los resultados del comercio y los resultados de la optimización. En el MagicNumber se puede implementar la hora y el día de entrada, el número del patrón comercial y otra información importante que permite realizar un análisis adicional sobre los datos incorporados en el MagicNumber. De esta forma, usted podrá incorporar en el asesor varias estrategias comerciales y realizar una optimización para todas a la vez, de manera que podamos descartar un tiempo de entrada desfavorable o un patrón/señal con pérdidas. Si usted quiere conseguir esta funcionalidad en el asesor, deberá escribir claramente el algoritmo de cálculo del MagicNumber para cada patrón/configuración/señal.

Además, la orden comercial no siempre se ejecuta con éxito a la primera. Es necesario prever las situaciones en las que no se puede abrir/cerrar a la primera. ¿Qué debe hacer en este caso el asesor, permanecer pausado o esperar la llegada de un nuevo tick? ¿Cuántos intentos se permiten para ejecutar una operación comercial? ¿Qué información debe registrar el asesor en los logs en estas situaciones? ¿En qué formato se deberá realizar el registro? ¿Es necesario enviar al tráder un mensaje sobre eventuales problemas, y cómo hacerlo para no crear un ataque DDoS?

Para analizar con rapidez la historia comercial en el terminal, utilice comentarios que se puedan anotar en las solicitudes comerciales. Pero no olvide que, en ciertos casos, el servidor comercial escribe en este campo la información correspondiente. Por eso estaría bien que su robot escribiera un registro diario para los operaciones comerciales, que le ayude a aclararse en situaciones difíciles.

Si su estrategia comercial usa niveles de protección StopLoss y TakeProfit, adjunte un algoritmo para su cálculo y orden de instalación. Por ejemplo, puede resultar que haya que colocar un StopLoss solo cuando el movimiento se dé en una dirección favorable en el número de puntos indicado. Si los niveles de SL y TP se colocan solo después de abrir una posición con éxito, matice cómo se comprobará la propia apertura de posición: justo después del envío de la orden comercial o en el siguiente tick.

Gestión de una posición/orden comercial

La regla clásica dicta: "Deja que fluya el beneficio y corta las pérdidas". Traduciendo esto al trading algorítmico, nos encontraríamos: "Coloque para cada orden abierta un StopLoss de protección y no limite el beneficio potencial con la ayuda de las órdenes TakeProfit".

El tamaño del stop puede influir considerablemente en los resultados del comercio. Por eso los tráders intentan elegir distancias óptimas para colocar SL/TP, de forma que optimicen los beneficios. Pero una iteración general de todos los tamaños posibles de SL/TP supondrá el mismo recorrido por la historia. Intente usar algoritmos de cálculo de la distancia que tengan en cuenta la volatilidad del mercado, la dirección de la tendencia y la cercanía de los niveles de apoyo/resistencia.

Si no se hace una idea exacta de los tamaños que deben tener los SL/TP, puede estudiar los sistemas comerciales existentes. Muchos programadores y tráders algorítmicos tienen sus propias bibliotecas preparadas, que se pueden utilizar al crear un robot comercial según la idea del cliente.

Piense y describa en la Tarea Técnica los siguientes puntos:

Cancelar una orden y cerrar una posición

Existe otro método para gestionar las posiciones y órdenes: según el tiempo y las señales opuestas. Usted puede añadir a la Tarea Técnica variantes adicionales de eliminación y cierre:

Cáculo del lote para colocar una orden

Algunos tráders, al crear un robot comercial, añaden directamente las funciones de gestión del tamaño de la posición. No se recomienda incluir en el asesor algoritmos de gestión de dinero para calcular el lote en la etapa inicial, ya que los parámetros de entrada adicionales pueden causar un reajuste basado en un segmento concreto de la historia.

Si usted está creando la primera versión de un robot según su propio sistema comercial, será mejor realizar la simulación y optimización con un lote fijo. Solo después de realizar la simulación en tiempo real (forward testing) en la historia y en el comercio real durante varios meses usted logrará ver los puntos fuertes y débiles de su algoritmo, pudiendo ya comenzar a pensar en la gestión de capital.

Aquí tenemos varios enfoques referentes al cálculo del tamaño del lote al abrir una posición:

En cualquier caso, antes de añadir al asesor el cálculo del tamaño de lote, usted deberá estar firmemente convencido de que su estrategia comercial tiene ventaja sobre el comercio aleatorio. De lo contrario, solo se estará engañando a sí mismo. Un sistema perdedor no se puede transformar en uno rentable solo gracias a la gestión de dinero.

Procesamiento de errores comerciales y estado del entorno

Un robot comercial es un programa autónomo que trabaja las 24 horas del día. Por eso es necesario prever medios para el control y la comprobación de su funcionamiento. Como "caja negra" de su asesor actuará el diario "Expertos", donde se muestran todos los mensajes con la ayuda de la función Print(). En general, recomendamos registrar en dicho diario la aparición de señales, patrones y configuraciones, el precio actual de mercado y los parámetros de la solicitud comercial antes de enviar una orden a la ejecución.

En el caso de que una solicitud comercial no se ejecute con éxito, será necesario mostrar en el diario sus resultados. El análisis de los códigos de respuesta del servidor comercial permitirá entender el motivo del error comercial y corregirlo. Describa la Tarea Técnica:

Unos logs detallados sobre las solicitudes comerciales y sus resultados de ejecución le permitirán detectar rápidamente errores comerciales y ahorrar dinero.

Otras siatuaciones importantes que olvidan con frecuencia los tráders algorítmicos principiantes son el reinicio del terminal y la pérdida de conexión con internet o con el servidor. En estas situaciones, no estaría mal pensar en posibilitar el contacto con el robot a través de los servicios de mensajería o vía e-mail.

Diferencia entre comercio en la apertura de una barra y dentro de una barra

Con cada cambio de precio, el robot comercial inicia el procesamiento del evento NewTick: la función OnTick(). Durante la vida útil de la barra llegan multitud de ticks, y esto significa que el asesor en cada uno de ellos ejecutará la lógica implementada en este. Si su estrategia comercial genera señales comerciales solo en la apertura de una barra, habrá que solucionar dos cuestiones:

  1. cómo calcular las señales comerciales, obtener los valores de los indicadores y el estado del entorno comercial solo en el primer tick, omitiendo los siguientes;
  2. qué hacer si no hemos logrado ejecutar todas las acciones en el primer tick: cerrar/abrir posiciones, establecer/eliminar órdenes pendientes.

Tomemos el ejemplo más sencillo: la señal de cruce de medias móviles. Si su asesor va a comprobar la presencia de señales en cada tick, podría suceder que la señal aparezca y desaparezca alternativamente. Como resultado, el asesor abrirá y cerrará la posición varias veces en el transcurso de una barra. Al comerciar online, esto puede tener consecuencias poco deseables.

Para evitar semejantes problemas, ponga a prueba el asesor en los modos de modelado "Cada tick" o "Todos los ticks basados en ticks reales". Si usted detecta muchas operaciones comerciales del mismo tipo durante una barra, revise el código de su robot. Asimismo, le recomendamos encarecidamente que inicie la simulación visual del asesor y los indicadores utilizados para comprobar su funcionamiento directamente en el gráfico en diferentes segmentos de la historia.

Estrategias de tick/scalping

Si usted acaba de comenzar a comerciar en el mercado, utilice sistemas que funcionen en la apertura de una nueva barra. Estas estrategias son más sencillas de desarrollar y depurar, solo deberá entender y esteblecer cómo procesar correctamente el evento "Nueva barra". Puede comprobar fácilmente si ha escrito bien el asesor para comerciar con la apertura de barras: los resultados de la simulación para el modo "Solo precios de apertura" deberán coincidir con los resultados del modo "Cada tick"/"Todos los ticks basados en ticks reales".

Los sistemas comerciales que funcionan dentro de la barra son más complejos. Le recomendamos leer el artículo Cómo desarrollar y depurar rápidamente cualquier estrategia de scalping en MetaTrader 5, en el que se describen todos los pasos de creación, depuración y optimización del cógigo de las estrategias basadas en el análisis del flujo de ticks ininterrumpido.

Al desarrollar un robot de scalping debemos ser conscientes de que estas estrategias son extremadamente sensibles al tamaño del spread, las comisiones, los retrasos de red, la calidad de la historia disponible y la propia rapidez del robot. Cualquier empeoramiento en las condiciones comerciales puede "matar" una estrategia que obtenga beneficio con los ticks.

Y, por supuesto, no debemos confundir las estrategias de scalping que pretenden entrar y salir rápidamente del mercado con un beneficio pequeño pero relativamente garantizado de un par de puntos, las así llamadas estrategias de pips. Las estrategias de pips son aquellas en las que se permite una reducción de decenas y centenares de puntos por obtener un beneficio de solo unos puntos. Los desarrolladores de estos sistemas consideran con toda justicia que la probabilidad de que el precio pase varias puntos en la dirección de la posición abierta es mayor que la probabilidad de que pase 50-100-300 en una dirección desfavorable. Como resultado, la optimización logra resultados impresionantes en la historia: el 90-99% de las transacciones resulta rentable. Al iniciar este robot en una cuenta real, tendremos suerte durante un tiempo y la estrategia dará los beneficios esperados. Pero en algún momento, el mercado hará un movimiento brusco y arrebatará al tráder todo lo ganado anteriormente.

Cuadrículas, martingales, promediaciones y la otra cara de estas técnicas

En ocasiones, los tráders algorítmicos intentan mejorar los datos comerciales no gracias a la calidad de las señales (decisiones estratégicas), sino aumentando el número de órdenes/posiciones en una dirección y manipulando el tamaño del lote dependiendo del nivel de precio/reducción/pérdidas (decisiones técnicas).

La adición al algoritmo de una cuadrícula de órdenes, elementos de martingale/anti-martingale y tácticas de promediación de posiciones con pérdidas, en el mejor de los casos, complica el propio código y aumenta la posibilidad de errores programáticos. Además, este tipo de parámetros adicionales del experto aumentan el riesgo de sobreajuste según la historia. El uso de semejantes tácticas en el comercio no aumenta la estabilidad y la rentabilidad del sistema comercial: solo pospone un fiasco inevitable.

En lugar de usar estos trucos estadísticos, recomendamos tomar otro camino:

Un portafolio de sistemas comerciales sencillos será significativamente más estable ante los cambios del mercado que un sistema complejo con multitud de parámetros de entrada para la optimización.

A qué prestar atención a la hora de elegir un ejecutor

Bien, usted ha decidido implementar su estartegia comercial en forma de asesor: ha creado un Trabajo en Freelance y este ha recibido respuesta de un nutrido grupo de desarrolladores. ¿Cómo elegir al Ejecutor óptimo en cuanto a calidad y precio?

Un desarrollador de robots comerciales experimentado y documentado comenzará a hacer preguntas sobre la esencia de su Tarea Técnica, y no a hablar sobre los complejos sistemas que ha creado o cuántas variantes distintas existen de este sistema. En otras palabras, no va a intentar impresionarle utilizando multitud de posts y términos complicados. Para un profesional importa el tiempo, y no va gastarlo en juicios filosóficos sobre la naturaleza del trading o en los recovecos de la programación.

Basándose en el resumen, tratará de conseguir detalles adicionales sobre su encargo, si usted no ha adjuntado la Tarea Técnica. El programador, al igual que usted, intenta resolver la tarea "Merece la pena tener negocios con este Cliente", basándose en los requisitos presentados. Si la tarea se entiende a grandes rasgos, el desarrollador le dirá el plazo real de ejecución y el precio del encargo.

Un Ejecutor responsable le indicará de inmediato los puntos incomprensibles de su Tarea Técnica, no lo hará 2 meses después de formalizar el contrato. Si su encargo no se ha desarrollado con detalle, entonces usted y el desarrollador podrán discutir en el proceso de programación los pormenores de los puntos incomprensibles; también podrá pagarle por sus consultas, aumentando el plazo y el precio del trabajo.

Un buen programador valora el tiempo del cliente y el suyo propio, por eso no le gustará una Tarea Técnica poco trabajada y contradictoria, y puede corregir sus defectos al mismo inicio.

Qué es lo que un programador no puede hacer por usted

Podría suceder que el robot escrito según su sistema muestre pérdidas durante la simulación, aunque en la comprobación manual usted esté convencido de que la estrategia funciona. Normalmente, el motivo de tal comportamiento reside en que el Cliente solo ha podido comprobar su sistema comercial en un periodo corto de tiempo. Mientras tanto, el simulador permite obtener los resultados del comercio en cualquier intervalo disponible de la historia. ¿Qué hacer en tal caso? El programador no puede convertir una estrategia con pérdidas en una rentable, pero puede darle algunas ideas en cuanto a la mejora de la calidad de las entradas. Por ejemplo, añadir algún filtro de tendencia, volumen, etcétera, que permita descartar las señales desfavorables.

Es posible que su estrategia funcione con otros parámetros más adecuados para este estado del mercado. Realice una optimización e investigue cómo cambian los valores óptimos encontrados dependiendo del año, la volatilidad y otros factores. Esto la ayudará a detectar los defectos o limitaciones de su sistema. Pero tendrá que hacerlo por sí mismo, el programador se encarga solo de escribir el código, no es un experto en analítica de sistemas comerciales.

Y en último lugar: los errores del programador. Escribir un programa sin errores es prácticamente imposible, haberlos, siempre los habrá. Pueden ser tanto errores de código (cuando se escribe un código erróneo para un algoritmo correcto), como errores lógicos, es decir, los errores de usted. En ambos casos, tendrá que buscarlos por su propia cuenta, porque resulta complicado que alguien pueda hacerlo por usted.

  • Por eso, es deseable que usted tenga una idea sólida de qué significan los códigos de retorno del servidor comercial y cómo leer los errores de tiempo de ejecución.
  • Incluya en la Tarea Técnica la necesidad de procesar los resultados de ejecución de cada operación importante y mostrar los códigos de error en el log. Puede enumerar en una sección aparte de la TT qué es precisamente una operación importante: el envío de una solicitud comercial, el cálculo del precio de StopLoss, etc.
  • Le recomendamos que use en estos mensajes las macro substituciones predefinidas. Esto le permitirá encontrar con mayor rapidez el motivo y el lugar exacto del comportamiento erróneo.

El uso de estas tres sencillas normas le facilitará el análisis de la situación y la interacción con el ejecutor.