Cómo solicitar un EA y obtener el resultado deseado

Andrey Khatimlianskii | 19 diciembre, 2013


Introducción

El comercio automatizado está ganando un nuevo impulso - La liberación del MetaTrader 5, con el nuevo MQL5, se ha completado. Ha pasado con éxito el Automated Trading Championship 2010, y la nueva versión de la plataforma de negociación está siendo promovida activamente por brokers. El predecesor de MetaTrader 5, - MetaTrader 4 - todavia se utiliza activamente por cientos de corredores y por millones de traders de todo el mundo.

A pesar de tanta popularidad (o más bien, a causa de ello), el nivel profesional del trader promedio es cada vez menor - e igual que en cualquier otra área, la cantidad rara vez se transforma en calidad. Si consideramos trading automatizado (la conexión entre el trading y la programación), la situación es aún peor - muy pocos comerciantes tienen un grado de programación informática, y para la mayoría de la gente, incluso para aquellos con una opinión técnica, la masterización de la programación puede ser muy difícil. Sin olvidarnos de los que simplemente no están interesados en la programación. "Tenemos que hacer lo mejor que hacemos" - dicen, y no puedo estar de acuerdo.

Todo esto nos lleva poco a poco al tema de nuestro artículo. Hay una demanda de servicios de programación de MetaTrader, y esta demanda sigue creciendo. Donde hay demanda, hay un suministro - ésta es la ley del mercado. De hecho, hay bastantes traders que desean automatizar su estrategia y programadores que desean ganar dinero. Pero, lamentablemente, su comunicación no siempre resulta un beneficio mutuo - hay un montón de clientes insatisfechos, así como programadores que están cansados de explicar conceptos.

Este artículo aborda los problemas que puedan surgir durante la comunicación "Cliente – Programador". En primer lugar, para los traders se pretende - el trato con personas de una estructura mental diferente y que carecen de experiencia. Pero no hay duda que para los programadores, este artículo será muy útil - una relación siempre tiene dos lados, y el éxito de la empresa igualmente depende de los dos.


Contenido

  1. Verificar la Idea
  2. Deshacerse de las ilusiones
  3. Determinar las Metas
  4. Sincronizar los vocabularios
  5. Preparación de las especificaciones de requisito
  6. Selección del Desarrollador
  7. Protegerse de ser engañados
  8. Compruebe los resultados
  9. Respuestas de los Clientes.


1. Verificar la Idea

Verificar la ideaLa causa más común de la frustración del cliente es la pérdida de su estrategia. Cuando se trata de un sistema completo de trading, en lugar de un EA o un indicador semiautomatizado, el trader solo espera una cosa de la EA - un trade rentable

Y así consigue el texto esperado del programador, lanza el terminal, inicia las pruebas... y ve cómo su brillante idea conduce a la pérdida del depósito. Vuelve a verificar los parámetros, actualiza los datos históricos... y ve una vez más vemos la pérdida del depósito. Algunos traders al mismo tiempo comienzan a escribir una carta furiosa para el programador (por supuesto es su culpa!) y los mas pacientes comprueban los resultados y tratan de averiguar cuál es el problema. Pero eso no cambia el hecho: la idea de creían ellos creían resultó ser poco rentables.

A continuación hay una serie de diferentes opciones posibles. Algunos culpan al programador de torpe y sin pagar por el trabajo, comienzan a buscar otro programador. Otros tratan insistentemente de averiguar cómo arreglar la situación y pedir hacer "algunos pequeños cambios" (por supuesto, gratuitamente porque son tan pequeños!). A menudo, debo señalar que también existen clientes que aceptan su error y no trasladan la responsabilidad al programador. Pero este capítulo no fue escrito para ellos, tienen un buen sentido de la autocrítica.

Esto son sólo las consecuencias, no hay ningún punto que desmontar, tiene mucho más sentido encontrar y eliminar las causas del problema. El problema es que el trader es demasiado perezoso para comprobar su idea. Para hacerlo, es necesario elegir un intervalo arbitrario de datos históricos y cuidadosamente, día tras día, observar cómo la estrategia funcionaria y cuál seria el resultado. Es más fácil y rápido en el modo visual de la prueba de estrategia (seguro que esto pronto estará disponible en MetaTrader 5), pero también se puede hacer la prueba en tiempo real - una o dos semanas de trabajo en una cuenta demo.

Realmente, no todas las estrategias pueden ser probadas con los datos históricos. Sé por experiencia propia, que la comprobación de algunas ideas puede ser muy lenta. Entiendo que a veces es más fácil pagar por el EA que sentarse durante horas con un lápiz sobre los gráficos. Pero ten en cuenta que el resultado puede ser una desagradable sorpresa al implementar una idea no probada.

Recuerda! El programador no es responsable de la rentabilidad de tu estrategia, su tarea consiste en escribir un programa que trabajará con el algoritmo que aprobaste.

A veces el programador puede indicarte debilidades de tu sistema (no eres el único que ha hecho esto), pero sólo se basa en su buena voluntad. Él no está obligado a protegerte de errores o consultarte y ciertamente, no es responsable de verificar tu idea de forma gratuita. Al contratar un EA, deberías tener total confianza en su estrategia, o entender que esto es sólo un intento, y el resultado es poco probable que te desconcierte con su exclusividad.

Así que nuestra conclusión intermedia es que es mejor consultar la estrategia varias veces, antes de contratar su implementación.


2. Deshacerse de las ilusiones

Escher's impossible cubeVemos sólo lo que queremos ver. Y queremos un yate, una isla en el océano y una maleta llena de dinero. Miramos los gráficos y sólo vemos las señales exitosas del indicador. Cerramos nuestros ojos y mentalmente cuentamos el número de ceros en el saldo de nuestra cuenta... Y el programa sólo funciona basado en algoritmos, y expone nuestras ilusiones.

Las causas de las grandes y frecuentes decepciones - son la confusión y el engaño. Si decides dar el primer paso y comprobar tu idea, toma críticamente el proceso. En esta etapa pueden evitarse muchas decepciones - Tan solo quítate las gafas de color de rosa y mira la estrategia sensata.

Una situación muy común: que hayas leído en Internet (en un foro, blog, en un libro online) una estrategia y decides hacer un EA sobre ésta. Miraste los gráficos, estimas las correcciones de los cálculos, y el piensas - "Bueno, finalmente aquí tengo - el Santo Grial!". La situación se ve agravada por la descarga (o, Dios no lo quiera, la compra) de ese superindicador mediante el cual la estrategia trabaja - ahora usted tiene la ilusión de que el 90% de la tarea ya se ha completado, y queda un poquito por hacer.

Si la mitad de vosotros en este momento os hacéis una simple pregunta - "¿por qué esta estrategia es de dominio público. (o, en el caso de una compra, "¿por qué el autor la vende en lugar de usarla?") -Tendría exactamente la mitad de número de clientes que ahora tiene... Pero creemos en los milagros y no nos convencemos de lo contrario! De acuerdo, no lo haré. Pero, ¿qué te impide comprobar en que te vas a gastar tu dinero personal?

Aquí hay algunas reglas que te ayudarán a evitar caer en la trampa de tus propias ilusiones, o de algunas malas intenciones. Ellos no pueden resolver todos los problemas posibles, pero os aliviará de los errores más comunes.

  1. Sed muy escépticos acerca de indicadores sin un código fuente!
    • Sólo serás capaz de entender un poco cómo funcionan, y nadie será capaz de garantizar la inmutabilidad de su comportamiento en el futuro.
    • Pueden contener cualquier cosa, desde los errores de codificación que conducen a re-dibujo de las antiguas señales, o el comportamiento inapropiado cuando se trabaja con ciertos instrumentos o tipos de cuenta, a un engaño deliberado (dibujo de señales exitosas conocidas de antemano en los datos históricos), o una simple restricción en el tiempo de trabajo o un número de cuenta.

    Aunque no entiendas absolutamente nada de programación, siempre Pregúntale a un programador que sabe como "examinar" el programa - para estar seguros, o directamente antes de contratar el EA.

  2. Observar el trabajo de los indicadores en tiempo real!
    • Sin saber cómo funciona el indicador en línea, no tiene sentido considerar sus señales con el histórico - simplemente puede ser una bonita (pero inútilmente desafortunada) imagen.
    • Prácticamente todos los indicadores pueden cambiar el valor en la última (incompleta) barra - esto es normal. Debe entenderse que con el histórico con las barras formadas), estos cambios no son visibles, los datos del indicador trazan velas completas. Significa que las señales (flechas, cruce de líneas de indicador/precio) pueden utilizarse en el sistema (para abrir una posición) sólo en la próxima barra después de su aparición. Si intentamos usar señales (sin esperar el cierre de la barra), durante las pruebas del EA, se apagarán cuando haya un montón de flechas y cruces (y por lo tanto, las posiciones abiertas), pero en el momento del cierre de la barra, la mayoría de ellas habrán desaparecido. Veréis la posición en el gráfico, pero no la señal correspondiente - que es visible sólo con el seguimiento de la formación de las barras.
    • Algunos indicadores pueden cambiar el valor, no sólo para la última, sino también para varias barras anteriores. A veces es causa de la esencia del indicador (por ejemplo, para la formación de un Fractal, debe haber 2 barras en su derecha, y en el último tramo del zig-zag puede redibujarse nuevamente por un largo tiempo, hasta que se cumplan las condiciones en una nueva sección), pero a menudo, este tipo de comportamiento es una prueba de un engaño deliberado - muchos indicadores son creados solamente para una buena gráfica basada en datos históricos (con el fin de venderlos), y es prácticamente imposible utilizarlos en el trade.

      Si el indicador, sobre el histórico, muestra las señales de compra en la parte inferior más baja y de venta- en la parte mas superior, no es una prueba de que se trate de un indicador muy bueno, pero por el contrario - está "predeciendo el pasado".

    • No es necesario sentarse y mirar durante horas el gráfico online - muchos indicadores pueden analizarse en modo de prueba visual Pero de todas formas, la mejor manera de realizar una prueba - es ejecutarlo en una cuenta demo y realizar un seguimiento. Puedes colocar el indicador del gráfico, esperar un poco y adjuntarlo otra vez (con los mismos parámetros) - si es "real" (no usar el nuevo trazado con los anteriores valores), la imagen en ambas copias del indicador debe ser idéntica. Si la nueva copia del indicador muestra señales diferentes, es inútil analizar estas señales en la histórico.

  3. Revisar la estrategia en diferentes intervalos del histórico.
    • A menudo pasa que inconscientemente elijes para la prueba un intervalo muy conveniente (para tu sistema) del histórico. Tanto si se trata una entrada de la señal del indicador, como de una cuadricula de ordenes o de un reconocedor de patrones - siempre habrá un intervalo, en el cual la estrategia ganará dinero. Pero cuando pruebes el EA con todos los datos históricos disponibles, inmediatamente verás los intervalos de mayor éxito. Trata de encontrar tu mismo.
    • Selecciona unos intervalos al azar del histórico. Por ejemplo, tomar enero de 2008, octubre de 2009 y agosto de 2010 - escanearlos con tus ojos y calcular la proporción de señales rentables y perdedoras. Intenta mirar la calidad de señales de otros instrumentos y time-frames. Si la idea tiene un núcleo, es más probable que funcione en otras condiciones (posiblemente con parámetros del indicador ligeramente modificados o niveles de stop).
    • No cambies los parámetros del sistema para una sola comprobación. Si mientras se mira en agosto, utilizan ciertos parámetros del indicador y, cuando vas al septiembre, toma otros parámetros (los que se ajusten mejor) - simplemente te está engañando. La verificación debe hacerse bajo las mismas condiciones, de lo contrario sólo verás lo que quieres ver. No estoy diciendo que los parámetros del sistema deben seguir siendo siempre los mismos, pero si deseas cambiarlos "al vuelo", debes pensar en los criterios cambiarlos. Siempre es fácil sacar conclusiones sobre el histórico, pero ¿qué pasará en el futuro?
    • Encuentra el intervalo más complicado del histórico de la estrategia y prueba el sistema. Tácticas muy comunes - el uso de canales de tendencia y esperando el movimiento hacia atrás, a menudo respaldados por la duplicación del lote en la apertura de posiciones siguientes - funciona muy bien en algunos intervalos del histórico. Pero el mercado, a largo plazo, tiene unos movimientos en el canal y también tendencias fuertes, y ambos sistemas conducen periódicamente a la pérdida del depósito. Encuentra el intervalo del historial que sea más peligroso para el sistema (una tendencia plana - para una táctica de ataque y un fuerte movimiento unidireccional - tácticas, basadas en el retroceso) y ver los problemas cuando se opera en este intervalo.

      No te olvides - en el futuro puedes ver una tendencia aún más plana y movimiento de tendencia más extrema, el mercado está cambiando constantemente. Siempre reserva un "margen de seguridad".

  4. ¡Considera el costo de los gastos generales (speads, swaps, comisiones, requerimientos de margen, distancias mínimas para la colocación de las ordenes)!
    • Para las estrategias a más largo plazo, todos estos gastos no son importantes, puesto que es irrelevante un error de unos cuantos puntos. Pero la tendencia de desarrollo de trading automatizado ha demostrado que el desarrollo de estrategias de pequeños beneficios y una alta frecuencia de trading y el aumento del spread de 2 puntos o de niveles de stop de 10 puntos, puede llegar a ser muy notorio.
    • Recuerda que todas los gráficas del MetaTrader (las versiones 4 y 5) se crean utilizando el precio de compra (Bid), mientras que la apertura de posiciones largas y el cierre de las posiciones cortas se ejecutan por el precio de venta (Ask). Cuando hacemos trade mental, y queremos tener en cuenta que los spreads son un inconveniente, siempre podemos tomar el resultado total de los trades y restarle a este el número de trades multiplicado por el spread - y nos dará un resultado más cercano a la realidad.
    • Al analizar el histórico, no te olvides de que las condiciones comerciales de hace unos años eran muy diferentes. La gráfica "mullida" de 1999, es ideal para estrategias de scalping, si negociamos usando el spread corriente. ¡Pero en 1999 el spread fue de 3 - 4 veces más grande! De las ganancias que virtualmente has adquirido, no habrá nada, si restamos el spread real de ese período de tiempo de para cada transacción. La situación es análoga incluso en otras condiciones - hace unos años el máximo apalancamiento disponible era de 1:100, y la distancia para colocar una orden pendiente se medía en decenas de puntos.
    • Recuerda que las condiciones comerciales pueden cambiar (por supuesto, a peor) con comunicados de prensa, y la ejecución de órdenes puede retrasarse y tener slippage. No inventes "sistemas brillantes de noticias" en el histórico, trata de ponerlos a prueba por lo menos en una cuenta micro-real. Tu visión del sistema cambia considerablemente si se está estimando un spread de 2 puntos y ejecución inmediata, pero después la posición se abre 5 segundos mas tarde, con un slippage de 10 puntos, y el spread se ensancha tanto que es difícil cerrar la posición por lo menos sin perdidas.
    • Siempre hay un "margen de seguridad" en relación con las condiciones de trading. Si tu sistema se "rompiera" desde el más mínimo cambio en el spread o un retardo en la apertura de una posición por unos segundos, es poco probable que sobreviva en la "lucha real".

      Recuerda que el spread es la razón por la cual se pierden los depósitos de la mayoría de estrategias, es decir, el elegir una dirección de acuerdo con la probabilidad de corrección cercana al 50%. Así que intenta mejorar la estrategia tanto como sea posible, para que el spread no afecte demasiado en el resultado.

Si aún crees firmemente en tu sistema después de todos los controles, y tienes el deseo de automatizar, entonces podemos avanzar y seguir.


3. Determinar las Metas

Determinar las metas¿Te has preguntado por qué necesitas un Expert Advisor (EA)? ¿Quieres ver tu idea en el Probador de estrategias? O, quizás, ¿quieres probar una estrategia preparada en la cuenta real micro? No sé - has estado negociando con su sistema durante 2 años y pondrás en marcha inmediatamente el EA con una cuenta real y un depósito de 100 000 $.

Raramente te preguntas estas inútiles cuestiones. Generalmente es comprensible - las respuestas afectan tan sólo a algunas pequeñas cosas: los detalles de los requisitos técnicos, la elección del solicitante/desarrollador y, quizás, el costo del trabajo. Pero si piensas en ello, la diferencia entre los diferentes enfoques puede ser muy importante.

En la mayoría de los casos, al programador no le importa si se debe redactar el EA para el probador de estrategias (con un mínimo de pruebas y sin manejo de excepciones) o para el trade real. Si está escribiendo en MQL durante mucho tiempo y no está recibiendo ninguna queja sobre la estabilidad de sus programas, entonces ciertamente tenía una base para la implementar cualquier algoritmo, y no habrá diferencias en los enfoques para escribir la versión probador de estrategias o para una cuenta real.

Pero incluso si tienes la suerte de trabajar con una persona así, sentirás la diferencia al elaborar los requisitos técnicos.

Déjame explicarte con un ejemplo:

  1. Situación número uno - simplemente necesitas probar una idea (que has encontrado/oído/leído en alguna parte). Eso significa:
    • No estamos planeando ejecutarlo en una cuenta real - todo tipo de controles y el manejo de excepciones no deben hacerse.
    • El EA será probado y optimizado activamente -pues necesitamos lograr el máximo rendimiento (tal vez a expensas de robustez).
    • Lo más probable, después de comprobar la primera versión, es que necesitará refinamiento - un EA debe ser apliable fácilemente.
    • Los "cuellos de botella" del algoritmo (ajuste de órdenes en las distancias mínimas permitidas, la secuencia de apertura y posiciones de cierre, la derivación de las limitaciones del lote máximo, el reinicio de los trabajos después de desconexiones, etc.) no necesita ser procesado, porque no sabemos cuáles de ellos mantendrá su relevancia en la versión final.

  2. Situación número dos - la estrategia está lista, necesitas un EA válido para la cuenta real. Desde la versión anterior diferirá en lo siguiente:
    • Todas las operaciones de trading deben ser tan correctas como sea posible, no sólo necesitan ser probadas por el usuario con los valores de los parámetros definidos, sino también con todos los valores que se calculen durante el proceso de trabajo (tamaño del lote, los niveles de órdenes de stop, etc.).

      La "calidad" de las peticiones de trade está afectada directamente por la "relación" entre el servidor y tu cuenta - si el servidor es bombardeado con órdenes de trade incorrectos, fácilmente se podría bloquear la cuenta y perder el control de la situación.

      En el caso de un error crítico, el usuario debe tener conocimiento (a través de un mensaje en la pantalla, un correo electrónico, Skype, ICQ, o a través de SMS).
    • La solidez del trabajo, en comparación con la velocidad de su rendimiento, debe estar en un primer plano - si alguna comprobación ayudará a evitar un posible error adicional, debe incluirse en el EA. Incluso si se ralentiza la simulación y optimización (cuando se trabaja en tiempo real, frecuentemente la velocidad de ejecución no es palpable).
    • Las futuras mejoras, incluso si son necesarias, son menores. Por lo tanto, no se contemplan los requisitos específicos de la facilidad extendida.
    • Todos los algoritmos que producen "cuellos de botella" deben ser pensados exhaustivamente y procesados con precisión. Habrá un mínimo de situaciones, en las que puede ocurrir un error (desgraciadamente no seremos capaces de preverlos todos):
      • El EA debe ser capaz de restaurar tu trabajo normal después de una desconexión temporal, reconexión de la cuenta, o un reinicio del terminal de cliente.
      • Si no se pueden ajustar las órdenes pendientes o de stop, necesitan ser rastreados virtualmente, y cuando se alcanza el nivel de precio, ejecutar en precio de mercado.
      • Si no se puede abrir una posición sobre precios de mercado dentro de N intentos, debe aumentarse el slippage al máximo permitido.
      • En la activación de una orden pendiente o de stop, en un nivel, no provista por el algoritmo, y con el slippage (por ejemplo, con una diferencia de precios), los niveles de todas las órdenes dependientes deben ajustarse (y, tal vez, incluso sus volúmenes).
      • Todas las funciones que operan sobre el tamaño del depósito (por ejemplo, el cálculo del lote), normalmente deberían aceptar operaciones no trade con un saldo (equilibrio o retirada).
      La lista puede continuar durante mucho tiempo. Hay una cantidad infinita de matices como estos y cada estrategia tiene también sus detalles.
    • Además, si se presentan requisitos adicionales - el EA debería funcionar bien con los distintos brokers, tener en cuenta la lista de instrumentos disponibles, sus características y otras configuraciones de servidor (el número máximo de ordenes pendientes, los niveles de salida de mercado, posibilidad de abrir posiciones u ordenes en direcciones opuestas (para MetaTrader 4 solamente) y así sucesivamente).
  3. Y situación número tres - realmente estás preparado para lanzar el EA con una cuenta real con un depósito de 100 000 $. ¿Algo cambiará, comparando con las versiones anteriores con la de la de cuenta real? Todo depende de tu paranoia (perdón, quise decir por tu previsión):
    • No pasará nada si creamos muchos archivos de registro y regulares capturas de gráficos pantalla, pues pueden llegar a ser muy útiles para analizar un problema o conflicto.
    • Si planeas ejecutar el EA en un servidor dedicado, puedes contemplar la posibilidad de realizar un control / corrección de tu trabajo con otra copia (funcionamiento en paralelo). Por ejemplo, puede ejecutar simultáneamente el EA en el servidor dedicado y en casa la copia "hogar" que debe ser capaz de tomar el control de la situación, en caso de una desconexión de la copia del "servidor" durante 5 o más minutos.
    • Si usted no puede monitorear constantemente la labor de la EA, puede implementar un reporte cada hora (o diario) sobre el estado actual de la cuenta y del trade. En cualquier caso, las notificaciones de errores críticos deben estar presentes.
    • Si usted quiere ser capaz de controlar el proceso de trade, aun cuando sólo tienes un teléfono, puede implementar una "retroalimentación" - la posiblidad de enviar al EA los comandos vía SMS, email, Skype, ICQ, o estableciendo órdenes pendientes (con la descripción de los comandos en los comentarios).

Bueno, ¿sientes la diferencia? Y esto es sólo el resumen del método, cada uno de estos elementos pueden salirse y extendiderse hasta el infinito. Y hay muchos detalles que aún no hemos mencionado.

Después de explorar los detalles, la finalidad del EA depende del reflejo del pensamiento a través los detalles del algoritmo, y de los requerimientos del cliente.

No se puede esperar del programador la misma calidad de ejecución de todos los matices, las normas de calidad, por desgracia, aún no existen. Por lo tanto, para determinar lo que necesita el EA hay que pensar en cómo deben comportarse en diferentes situaciones y asegúrese de mencionar esto en los requisitos técnicos.

Cualquier desarrollador EA que se precie añadirá el manejo estándar de simples errores (recotizaciones, stops inválidos, etc.) Pero no está garantizado que este "comportamiento estándar" será conveniente para tu estrategia específica.

Por ejemplo, la mejor forma de fijar los niveles de Stop Loss no es siempre la mínima distancia permitida, si es imposible ponerlo en el nivel calculado - las otras órdenes, o la pérdida máxima de la serie de posiciones puede ser dependiente de él. Así, de nuevo, si estás creando de un EA para una cuenta real, considera una cantidad máxima de escenarios en la etapa de preparación de tu trabajo.

Siempre puedes pedir al programador preparar una lista de las posibles situaciones y desarrollar un algoritmo de su manejo. Pero no olvidemos que el análisis y refinamiento de tu estrategia, así como la creación del algoritmo, no están directamente relacionados con la escritura el EA. Es una parte separada del trabajo, y su resultado no es el código de EA, pero si el texto del algoritmo. Algunos pueden silenciar razonablemente el requerir un pago adicional por este trabajo - ya que se está invirtiendo un tiempo, y se está recibiendo, aunque a medias, un resultado en forma de algoritmo con el que se puede ir a otro programador.

Y no olvidemos que no todos los programadores tienen experiencia con el trabajo en cuentas reales. Básicamente, pueden simplemente no estar al tanto de todas las posibles sorpresas. Bueno, probablemente no hay una sola persona que haya trabajado con absolutamente todas las empresas, con todos los tipos de cuentas, con todos los instrumentos posibles y mercados en condiciones diferentes. Comparte tus experiencias (si existen), pedir al programador comparta su experiencia, pero no creo que estés asegurado contra todas las sorpresas. Esto, desafortunadamente, es poco realista.

Estamos cerca de la parte más crítica - la preparación de los requisitos técnicos, pero no antes de hacer una pequeña desviación.


4. Sincronizar los vocabularios

Antes de comenzar un diálogo, hay que tratar de entender lo que se va a comunicar. "Al otro lado de la línea" hay una persona completamente diferente, y su conocimiento puede ser muy distinto al tuyo.

Hasta que se "sincronicen los vocabularios" (encontrar un lenguaje común, definir los términos), el movimiento hacia un objetivo común puede ser difícil y desagradable. En primer lugar, en su opinión, puede haber tanta confusión tal que para determinar la relación, el desarrollo de un simple EA puede alargarse fácilmente a muchos días (o incluso semanas).

Vamos a dar un pequeño rodeo.

Imagina que tienes que cambiar el grifo. Llamas a un fontanero y dices: "¡ se ha roto una cosa con la que me lavo la cara!" Quiero una nueva, que se pueda encender girando con una mano". Parece tonto, ¿no? Pero créeme, ¡algunas de las tareas, enviadas por los traders, parecen incluso más tontas!

Ahora trata de ponerte en el lugar de ese fontanero. Sí, aproximadamente comprendió lo que estaba pasando, pero no puede hacer nada de esa "tarea". Y sólo un telépata entenderá realmente el tipo de grifo que quieres.

Vamos a probar esto de una forma diferente. Llamad y decid: "Necesito un nuevo grifo en el baño. El diámetro de las tuberías del agua caliente y fría es de 13 mm, la distancia entre el tubo y la base del fregadero es de 20 cm. El ajuste de la presión y temperatura del agua debe hacerse con una manija. Quisiera poder elegir entre varios modelos.

¡Bingo! Ahora el fontanero que sabe: a) se necesita una manija como llave; b) debe ser con dos válvulas y un sola manija como control; c) se necesita conectar una manguera de 20-25 cm de longitud y un diámetro de 13 mm. Cuando llegue a tu casa, será capaz de proporcionarle soluciones para elegir y hacer su trabajo rápidamente.

Muchos programadores que escriben en MQL, son expertos en el trading - cuanto más conexión hay entre los clientes y el EA, mejor entienden la diversidad de enfoques para el análisis. Además, muchos de ellos desarrollan estrategias por sí mismos, así que también han estudiado libros de trading y han participado en foros temáticos.

Pero no les exijamos demasiado. La frase "estirar el fibo de red en los últimos 2 fractales", que puedes usar en tu vida diaria, puede llevar a un técnico inexperto a un callejón sin salida. Lo de terminar con la frase comúnmente usada "después de la activación del cierre..." o "con la apertura de Londres, configurar los stops hacia el nivel de break-even", y el cliente está listo - te garantiza largas horas de interrogatorio y clarificaciones.

No estoy diciendo que el común "MA" debería llamarse "el indicador técnico con una media móvil de un período de regulación de 36" - no se requiere el fanatismo. Pero siempre trate de recordar que la persona con la que está hablando tiene un bagaje diferente de conocimientos y visión diferente.

Como resultado intermedio - algunos consejos:

  1. Explicarse con palabras simples y comprensibles, sin utilizar abreviaturas ni la jerga.
  2. Utilizar terminología común. Si no sabes cómo llamar a una herramienta o un evento, no dudes en utilizar el texto de una referencia o de un libro.
  3. Explicar el fondo y el detalle de las cosas. Hablar incluso de lo que se considere obvio. Muy a menudo, ¡resulta que sólo es obvio para ti!
  4. Por último, asegurase de que la otra persona te entiende. Haz preguntas, o pedir formular una tarea con sus propias palabras - asegúrate de que estás hablando de las mismas cosas.

Estimados colegas, escritores de EA's! Si has pensado erróneamente que lo anterior se refiere sólo a los traders, ¡quedarás decepcionado! Nosortos, como las personas técnicamente competentes, somos responsables de la exactitud del proceso de trabajo entero. Y nosotros, en mayor medida, somos responsables de su éxito.

Muy pocos comerciantes son capaces de formular con precisión y correctamente la tarea - esto es un hecho. En los seis años de experiencia escribiendo mi EA, recuerdo a sólo dos clientes, cuyas tareas fueron realmente impresionantes - eran programas que estaban listos y que simplemente debían ser transferido a MQL. Varias personas más fueron etiquetadas como "ellos entienden lo que quieren" y "son capaces de expresar sus pensamientos" - después de leer sus algoritmos, comprendí claramente cómo se ejecutarán los futuros programas. Pero la mayoría de los clientes - son traders principiantes, y tienen miedo, no sólo por la necesidad de describir claramente las acciones del EA, sino de la palabra "algoritmo".

Un poco de psicologia - determina el nivel de tu partner y utiliza lo que corresponda a sus conceptos y términos (su nivel). No aplastes su intelecto con él, ser indulgente. Si es posible, deshacerse de todos los matices de programación en la discusión, la persona no necesita saber lo que es un ciclo, desde donde empieza la numeración de las barras, y la función bajo qué condiciones, que se ejecute lo que se guarda en un archivo en cuanto a la información de las ordenes.

Esto no significa que el cliente debe ser como un "bebé que habla" y ante la mínima señal de desacuerdo, el EA debe ser reescrito. ¡De ninguna manera! Pero tratar de quedar con él como no sólo un buen técnico, sino también como un conversador agradable - que definitivamente lo apreciará.

Finalmente hemos llegado a la parte más crítica - la realización del algoritmo. ¡Bueno, comencemos!


5. Preparación de las especificaciones de requisito

Preparación de tareas

tu primo, que no tiene nada que ver con el trading, debe ser capaz de tradear en tu sistema, teniendo sólo su algoritmo preparado.

Esta frase clásica, cambiándola sólo por un poco, demuestra muy claramente las principales cualidades de las buenas especificaciones técnicas:

  1. Esta tarea debe ser totalmente autosuficiente (comprensible para alguien que desconoce totalmente su sistema personal).
  2. Las tareas deben ser detalladas tanto como sea posible (comprensible incluso para un inexperto, en materia de trading, individual).

Cómo categórica y exagerada es la frase "no tiene nada que ver con el trading". De hecho, será difícil de explicar a una persona, además de la esencia del sistema, los fundamentos del trading utilizando el terminal de trading. Permítidme volver una vez más a una frase clásica:

Tu primo, el que ha instalado el MetaTrader hace sólo dos meses, y que ha tradeado en cuentas demo todo este tiempo... el resto ya lo sabemos.

¡Pero esto no cambia la esencia! Si le das su algoritmo a diez personas diferentes y les pides que tradeen en su sistema, deben obtener resultados absolutamente idénticos. ¿Cuántos de vosotros podéis presumir de tal experiencia?


5.1. ¿Por dónde empezamos?

Empezaremos desde el principio. Describes la idea general, di qué es lo que quieres que conseguir. No olvidad comentar sus propios objetivos y requisitos del programa, que pueden ser formulados ahora.

Teniendo una idea general sobre vosotros y vuestro sistema, el programador puede evaluar la seriedad de vuestras intenciones y asume la cantidad aproximada del trabajo.

Algunos ejemplos de dicha entrada:

Necesitamos un indicador para MetaTrader 4. La tarea - para dibujar una gráfica invertida de una pareja de divisas arbitrarias en la subventana del gráfico principal. El indicador debe trabajar en cotizaciones de 4 y 5 dígitos y con nombres de símbolo no estándar (por ejemplo, EURUSDFXF).

Necesitamos un EA para MetaTrader 5. Trading en una moneda única, la señal de entrada se basa en el indicador personalizado (se adjunta el código). Cierre de posiciones - por el SL, TP y por una señal inversa. Todas las posiciones están acompañadas por un trailing stop, basado en otro indicador (el código también está disponible). El lote se calcula como un porcentaje del saldo.
Para finalizar es necesario que el EA (MetaTrader 4) trabaje en una cuenta real - Coloca todos los controles necesarios, restablece el funcionamiento normal después de un fallo en la conexión, añade algunos intentos de abrir una posición con un error y quizás algo más - a tu elección.
Necesitamos un EA para poner a prueba una estrategia para la rotura de un canal. Determinar las fronteras del canal por el indicador; la entrada al mercado de las ordenes pendientes, después de un acuerdo fallido - aumentando el lote con coeficientes especificados. También se debe especificar el tiempo de trabajo durante el día, cuando se permite el establecimiento de las primeras órdenes. Y así tenemos el código para MetaTrader 4.

Esta parte de la tarea es la menos difícil. Pero, desafortunadamente, a menudo esta es la parte donde todo termina... No lo olvides - es sólo una introducción, la descripción de la idea genérica. Para escribir un programa necesitamos mucho más.


5.2. ¿Cómo podemos formular la tarea?

De hecho, el algoritmo es la parte más importante. Es más difícil de formular (especialmente para un no-programador), y realmente requiere de un montón de trabajo duro.

Intenta dividir inmediatamente el algoritmo en sub-secciones lógicas, no trates de transmitir todas las sutilezas del sistema en una sola frase ilegible.

Cuando se trata de escribir el EA, podemos distinguir las siguientes secciones lógicas (su número y su contenido pueden variar dependiendo de la estrategia):

  1. Las condiciones generales: el tiempo de trabajo (dentro de los días, en ciertos días de la semana), la orden de ejecución (por ejemplo, el comienzo del trading presionando el botón), lo necesario para la profundidad de análisis del histórico y otras condiciones, relacionadas con la tarea entera en general (no en sus puntos individuales).

  2. La señal de entrada al mercado (la apertura de la primera posición o el ajuste de las primeras órdenes) está basado en indicadores, ciertos patrones de precio, simplemente en el tiempo, o en el comando del usuario. Esto también puede incluir limitaciones en la primera entrada (filtros) - de tiempo, de otro indicador, después de una serie de pérdidas, durante condiciones de trading inaceptables, (spreads demasiado grandes o niveles de Stop), o por falta de fondos disponibles. El método de cálculo del lote y el nivel de Stop Loss y Take Profit deberían especificarse por separado (si las reglas de cálculo para todas las posiciones son iguales, podemos separarlos en una cláusula independiente).

  3. El proceso de activación ordenes pendientes o posiciones de SL/TP (si fuera necesario). Por ejemplo, la eliminación de una orden Sell Stop cuando una orden Buy Stop se activa, la configuración de una orden Sell Limit adicional, cuando se activa una orden Sell Limit preestablecida, la apertura de una posición para vender un volumen duplicado después de la activación del Stop Loss, y así sucesivamente.

  4. Las señales para la apertura de posiciones adicionales (si hay posiciones abiertas) o para la creación de ordenes adicionales (si es necesario). Por ejemplo se puede hacer por la señal de otros indicadores o al llegar a cierta ganancia de la pérdida de la posición abierta. Aquí, también debe haber reglas de cálculo del lote, de Stop Loss y Take Profit (si difieren de los que fueron descritos más arriba).

  5. El trailing de las posiciones y las órdenes (por separado - el primero de la serie, por separado - las adicionales, o todas juntas, si las reglas son las mismas). Por ejemplo, tirar hacia arriba de una orden pendiente de Stop del mercado (si el movimiento del precio está en la dirección opuesta), un Trailing Stop de la posición (convencional, por el indicador, o algún otro), el cierre parcial de la posición al alcanzar una cierta ganancia y así sucesivamente.

  6. Señales de cierre (completa, parcial) o un cambio de posición. Las reglas para retirar las órdenes pendientes.

  7. Las condiciones generales, como las asociadas con el estado de cuenta - el cierre de todas las posiciones y la detención del trabajo cuando utiliza un drawdown especifico, una reducción del porcentaje del depósito, con el aumento del saldo a un cierto nivel y similares. Estas condiciones se aplican al primer punto, pero es más fácil describirlas al final (como en el orden de uso).

  8. Y al final, tal vez se necesita alguna información adicional en el gráfico, el trazado de flechas de posición de niveles de precio de apertura/cierre, la información detallada en el diario, el envío de mensajes de correo electrónico cuando se activan las órdenes pendientes y todo lo demás que no está relacionada con el trade, sino que está relacionado con la interfaz.

Si estamos hablando de un indicador, por un lado, todo es mucho más fácil - la lógica es más primitiva y menos compleja, pero por otro lado, hay algunas sutilezas.

Resumiendo, es algo como esto:

  1. Datos requeridos: una lista de los instrumentos analizados (mejor varios), la profundidad del histórico de todos los instrumentos utilizados y el time-frame, la zona horaria del servidor.
  2. El tipo de trazado (líneas, flechas de la señal, gráfico de barra, secciones en zig-zag, figuras geométricas formadas, etc.).
  3. El algoritmo para calcular el primer valor (el valor de la barra izquierda), si es diferente del algoritmo principal.
  4. El algoritmo básico para el cálculo de una barra o la descripción del proceso de cálculo, si es difícil obtener una fórmula para una vela individual (como es el caso un Zig-Zag, por ejemplo).
  5. Y Ppara que todo sea más simple y cómodo, es necesario: señales de audio, capturas de pantalla, envío de notificaciones al correo electrónico, etc..


Vamos a pasar de la teoría a la práctica y terminar algunas de nuestras tareas de muestra:

Necesitamos un indicador para MetaTrader 4. Tarea: para trazar una gráfica invertida de una pareja arbitraria de divisas en la ventana principal del gráfico.. El indicador debe trabajar en cotizaciones de 4 y 5 dígitos y con nombres de símbolo no estándar (por ejemplo, EURUSDFXF).

  1. En la configuración, especifica el nombre del instrumento (el parámetro del símbolo) que debe ser mostrado (por ejemplo, "GBPUSD_m"). Si no se especifica el nombre, utiliza el símbolo del gráfico, en donde se une con el indicador. Si no hay tal símbolo en la ventana "Observación del mercado", es necesario mostrar una ventana con un mensaje de error.
  2. El indicador debe ser trazado como las velas japonesas. Los colores de las velas crecientes y decrecientes, y las sombras (separadas - la superior y la inferior) deben diseñarse como parámetros de entrada.
  3. Las fórmulas calculan los valores OHLC para cada barra:
    • Open (indicator) = 1 / Open (symbol );
    • Close (indicator) = 1 / Close (symbol);
    • Low (indicator) = 1 / High (symbol);
    • High (indicator) = 1 / Low (symbol).
  4. En todos los niveles de precio "redondos" (1.3200, 1.3300, 1.3400, 1.3500,...), es decir, los niveles que tienen 4 dígitos múltiplos de 100 puntos, debes dibujar una línea horizontal (color y estilo deben ser diseñados como parámetros de entrada).
Este será un poco más difícil con el EA:

Necesito un EA para MetaTrader 5. Cotización en una moneda única, la señal de entrada de mercado se basa en el indicador personalizado (se adjunta el código). Cierre de posiciones - por el SL, TP y por una señal inversa. Todas las posiciones están acompañadas por un trailing stop, basado en otro indicador (el código también está disponible). El lote se calcula como un porcentaje del saldo.

  1. Señal para abrir una posición - la flecha del indicador iSignalArrow (todos los parámetros del indicador deben ser ajustables):
    • Se abre una posición larga si la flecha del indicador apunta hacia arriba (debajo de la tabla) en la última barra cerrada;
    • Una posición corta se abre si la flecha del indicador apunta hacia abajo (por encima de gráfico) en la última barra cerrada;
    • Se omiten las flechas de la barra actual (incompleta), se analizan sólo las barras terminadas.
  2. El volumen de la posición se calcula como un porcentaje del saldo actual: lote = Balance/MarginRequired * LotPercent / 100 donde:
    • Balance : balance de la cuenta corriente;
    • MarginRequired - el margen requerido para abrir una posición con un tamaño de 1 lote;
    • LotPercent - parámetro de entrada (el porcentaje para el cálculo del lote).
      Por ejemplo, cuando el LotPercent = 5, con un apalancamiento 1: 100, el lote de EURUSD (al precio actual de 1.3900) será: 10 000 / 1 390 * 5 / 100 = 0.3597
      El resultado obtenido se completa con las normas habituales para el valor correcto más cercano (hasta 0.36 - si la DC permite lotes con una precisión de hasta 0.01, o hasta 0,4 - Si el paso de lote = 0.1).
  3. Se fijan StopLoss (SL) y TakeProfit (TP), - ajustables mediante los parámetros StopLossy TakeProfit:
    • Los niveles están especificados en los puntos de cotizaciones de 4 dígitos;
    • Los niveles se calculan en relación con el precio de posición de apertura (el precio Ask - para las posiciones largas y el precio bid - para posiciones cortas);
    • Si el valor es demasiado bajo, el stop debe establecerse en la mínima distancia permitida;
    • Si especifican valores 0, no se utilizan los stops.
  4. Todas las posiciones abiertas son acompañados por trailing stop del indicador iTrailingLine (todos los parámetros del indicador deben ser ajustables):
    • Si una posición larga se abre y la línea del indicador es inferior al precio actual, el stop se mueve al nivel de la línea del indicador;
    • Si una posición corta se abre y la línea del indicador está por encima del precio actual, la parada se mueve al nivel de la línea del indicador;
    • Los valores del indicador son tomados de la barra (formada) completada, no se utiliza la barra actual (incompleta). Es decir, la modificación en una barra no debe ocurrir más que una vez;
    • El moviento sel SL solamente está permitido en la dirección del beneficio de la posición - a para la posición larga y hacia abajo para posición corta;
    • Si no se puede ajustar el SL al nivel de la línea, debe ajustarse a la distancia mínima permitida (pero sólo si cumple con la regla anterior de moverse en la dirección de ganancia);
    • La función de parada final debe ser configurable (AllowTrailing = parámetro de verdadero/falso).
  5. Si hay una posición abierta y hay una señal contraria, debe cerrar la posición abierta y debe abrir una nueva (en la dirección opuesta).
    Para una nueva posición, el cálculo del lote debe ser llamado después de cerrar la posición abierta.
  6. Otras cosas:
    • Cuando se ejecuta el EA, deben adjuntar los indicadores utilizados con los parámetros especificados;
    • La información sobre la apertura y cierre de posiciones y de modificaciones del SL debe ser almacenada en el diario;
    • Si hay algún error, debe visualizarse un mensaje que describa el error.

De esta forma, el algoritmo puede enviarse al programador - este contiene suficientes detalles sobre el sistema y fácilmente puede ser "traducido" a MQL. Pero creo que hasta el final no debes apresurarte con el pedido.


5.3. ¿Lo que no hay que olvidar?

¿Lo que no hay que olvidar?Un programa escrito basado en uno de estos algoritmos, funcionará bien en condiciones ideales - un terminal-cliente independiente, con un único acceso a la cuenta, sin la intervención del usuario o de otros programas.

Un ejemplo de este tipo de ambiente - un probador de estrategias, no hay ningún error por perdida de conexión, posiciones cerradas accidentalmente y otros EA's de trading. Pero en la vida cotidiana, tales condiciones son extremadamente raras, más probablemente el programa deberá funcionar con el "mundo exterior".

Quizás quieras ejecutar varias copias del programa con diferentes símbolos o con diferentes configuraciones, tendrás que reiniciar el terminal, hacer trade manualmente en la cuenta o con otros EA's, conectarse a diferentes cuentas desde un terminal - todo lo cual puede afectar el programa, si el proceso de estas situaciones no es proporcionado claramente por el algoritmo.

Si tu meta es de mayor escala y sólo has probado el programa en el probador de estrategias, describir las reglas de interacción con el mundo exterior enseguida:

  1. ¿Cómo debe reaccionar el EA a posiciones abiertas manualmenteo a otros EA's?
    Generalmente la gente elige una de las tres opciones:
    • Ignoran completamente todas las "otras" posiciones. Si el sistema es autosuficiente, entonces ni las acciones de trading de otros EA's ni el usuario, no deberían influenciar.
    • Trabajan sólo con posiciones "manuales". Si el EA está diseñado para acompañar a las posiciones abiertas manualmente, no debe interferir con las posiciones abiertas de otros EA`s y generalmente no se abren posiciones propias. Su tarea es ayudar con el manual de trading (mover el Stop Loss, cierra de la posición con la señal y así sucesivamente).
    • Una solución más universal es dar al usuario una opción: trabajar sólo con sus propias posiciones o bien acompañar a las posiciones que cumplan con las condiciones específicas (para un símbolo particular o con un Magic Number específico).

    En MetaTrader 5, la separación de las operaciones en "propias" y el "otros" es particularmente relevante - la terminal muestra sólo la posición total del símbolo, aunque fuera "recogida" de las ofertas de varios EA's diferentes. La implementación de una contabilidad completa de las ofertas (para el funcionamiento normal de múltiples EA's en un solo símbolo) es más difícil en su aplicación y por lo tanto puede ser más cara. Consulte con el Desarrollador, si el EA normalmente trabaja con otros EA's, con el mismo símbolo.

  2. ¿Cómo debe responder el EA con una conexión con otra cuenta de trading? ¿Existe la necesidad de recurrir a cualquier alguno para ejecutarlo en una cuenta real?
    Creo que muchos comerciantes pueden "presumir" de pérdidas, causadas por la simple falta de atención - por la conexión accidental a una cuenta real, por lanzar un terminal con un EA en funcionamiento o un cambio de parámetros del EA en presencia de las posiciones abiertas. Estos absurdos pueden evitarse simplemente considerándolos en el algoritmo.
    Por ejemplo:
    • Cuando se ejecuta el EA en una cuenta real, debe crear un botón en el gráfico, que permita la negociación. El trabajo debe comenzar sólo después de que el usuario hace clic en él.
    • Cuando se cambia de cuenta, el EA lo debe notificar al usuario y poner fin a su trabajo hasta que se ejecute un nuevo lanzamiento (una alternativa - para preguntar al usuario si debe continuar su trabajo).
    • Si existen posiciones abiertas por el EA (o conjunto de órdenes), cuando hay un cambio en los parámetros externos, el EA debe modificar las posiciones (ordenes) según los algoritmos diseñados - por ejemplo, si hay un cambio de valor StopLosse, debemos modificar el Stop Loss de todas las posiciones abiertas, pero sólo sino se ha movido por el Trailing Stop. Aquí es imposible dar una receta universal, cada parámetro debe ser descrito por separado. Además, para las diferentes estrategias puede haber diferentes reacciones a los cambios en un mismo parámetro.
  3. ¿Es necesario ejecutar varias copias del programa con parámetros similares (o idénticos)?
    Si el EA coloca objetos gráficos en la gráfica, mediante la ejecución de múltiples copias del indicador, y cambias el valor de un solo parámetro, entonces todos los objetos creados por él, deben tener nombres que contengan el valor de este parámetro - de lo contrario, cada ejecución siguiente distorsionará los resultados de las anteriores.
    En el caso del EA, generalmente se añade un parámetro especial - ExpertId o MagicNumber, que le permite ejecutar cualquier número de copias del EA con cualquier conjunto de otros parámetros. Especificar en la tarea, para que ajustes y para qué combinaciones hay una capacidad de ejecutar simultáneamente el programa, pues no todas las situaciones serán proporcionadas por el programador.
  4. ¿Cómo debería implementarse la migración del EA a otro terminal, conectado a la misma cuenta? ¿El EA puede almacenar algunos datos en los archivos o en las variables globales del terminal?
    La mayoría de programas no almacenan ninguna información intermedia allí, sus algoritmos se basan en los datos históricos de los pares de divisas y sobre el histórico de trading de las cuentas (esta información puede obtenerse en cualquier terminal conectado a su cuenta). Pero a menudo es necesario guardar cierta información en un archivo y, recuperarlo en el siguiente lanzamiento - esto permite a veces acelerar la velocidad de ejecución, y en ocasiones, es simplemente imposible crear un programa viable sin él. Notificar al programador de cualquier requisito especial para el proceso de transferencia del EA, o preguntar para describir este proceso específico en su caso.

Todas las sutilezas, por desgracia, son imposibles de prever. Por ejemplo, si no hay suficiente margen para abrir una posición (debido a las posiciones abiertas por otras EA's), computado en el lote de los EA's, entonces tampoco tendrás que saltar la señal o abrir con un volumen menor.

Si otros EA's toman el contexto del trading (en MetaTrader 4 solamente), el EA no será capaz de hacer traders. Y si hay un límite en el número máximo de ordenes pendientes, no se podrá fijar una nueva orden. Sin embargo, debido al hecho de que la mayoría de estos casos está previsto en tu algoritmo, no empeorará la situación. Adquirid experiencia y cada nueva versión del EA será mejor y de más confianza.


5.4. ¿Cómo nos podemos simplificar la comprensión?

La información se digiere mucho más fácil si está bien ilustrada.

Para entender una estrategia simple, es suficiente con tener una descripción de texto, pero si su sistema es inusual y complicado, dar unos pasos para ayudar al programador:

  1. Adjunte a la tarea unas capturas de pantalla, que ilustren los diferentes puntos del algoritmo (el tiempo de la ocurrencia de una señal, una demostración del trabajo de un trailing stop, la secuencia de ajuste de ordenes pendientes, etc..). No dudes en suministrar gráficos con breves comentarios, incluso si aparecen parcialmente duplicados en el texto del algoritmo.
  2. Formato del texto de la tarea con buen gusto: utilizar colores diferentes para posiciones en corto y largo , resaltar las variables externas (los parámetros configurables), marcar los puntos importantes y las fórmulas. Además del hecho de que el texto sea más fácil de leer, también será mucho más navegable.
  3. Dar ejemplos. Cualquier fórmula, ilustrada por números concretos, se convierte en mucho más clara.
  4. Número de párrafos y apartados del algoritmo - para que siempre se pueda hacer referencia durante una discusión. "Error en una posición 2.1.4 - es mucho más corto y más preciso que "un error en el lugar donde se calcula el nivel de Stop Loss de la segunda posición larga de la serie.


5.5. ¿Texto, voz o vídeo?

¿Texto, voz o vídeo?Siempre me resulta gracioso cuando un cliente, en lugar de enviarme la tarea, me envía un enlace a una discusión de 120 páginas sobre una estrategia en un foro, un libro de 70 páginas, o una hora y media de video. De hecho, los programadores tienen todo el tiempo del mundo, no importa - tiene todo el tiempo del mundo para estudiar esto... El hecho de que la parte útil de esta información se ajusta a la mitad de una página del algoritmo, o el hecho de que es simplemente imposible formalizar esta descripción, no parece preocupar a nadie.

Si ya has investigado este material, si entiendes de lo que se trata todo, si tienes una buena idea de cómo funciona la estrategia - formaliza el algoritmo. Eliminar los "desechos" (que generalmente es el 80% de la información), las pausas incómodas, las discusiones que distraen, las historias sobre el futuro, las observaciones de los resultados de las pruebas - y el Desarrollador recibirá sólo lo que realmente necesita para escribir el programa.

¡Pero si aún no sabes de que trata el libro o la lectura, si no estás seguro de que esto es suficiente para hacer un trading automatizado, después formular una pregunta diferente! Puedes sólo preguntar "¿Cuánto será el coste de escribir un EA basado en esta estrategia?" cuando tienes una estrategia.

Y en nuestro caso hay sólo una cierta cantidad de información. Aún se desconoce si es de calidad (si es susceptible de formalizar, detallada suficientemente, etc.) Así que no dudes en preguntar si el programador está interesado en el estudio de este material "por la idea", y si no, cuánto va a tardar a escribir unas reglas para un sistema de trading de esta "discusión larga". Créeme, incluso la forma de la pregunta misma ilustrará tu relación con el Desarrollador.

No todos los programadores están interesados en la lectura de documentos de varias páginas o discusiones de algunas estrategias - tienen suficiente con sus ideas que están pendientes de verificar, y la nueva información es simplemente de ninguna necesidad.

No todo el mundo va a querer ver hablar a un profesor sobre la construcción de líneas de tendencia y el papel en su sistema, en lugar de su película favorita. Esto a menudo es bastante aburrido, y lo que es peor, difícil de formalizar. En algunos momentos tendrás que literalmente inventar tu mismo (encontrar la explicación más lógica), algunas cosas tendrán que ser adivinadas o seleccionadas a través de la experimentación, y para algunos otros temas, necesitarás buscar y obtener información adicional fruto de la investigación. En general, el proceso es muy laborioso y creativo, no lo subestiméis.

Quiero mencionar separadamente a aquellos que desean comunicarse a través de Skype o por teléfono. A menudo, el deseo de describir su estrategia vía oral es debido no sólo a la reticencia de tomar acciones adicionales (tipo de teclado), o lo que es peor, la falta de comprensión de la estrategia por el autor.

Es imposible construir un conjunto de reglas de trading si se basan en conjeturas e intuiciones del autor, es muy difícil de estructurar una historia emocional y desordenada. Y, como si de una clase larga con video, el programador no siempre está interesado en escuchar esas "revelaciones" - ya que necesita un algoritmo para escribir el programa, y alguien tendrá que escribirlo.

Es difícil sobreestimar la importancia de las tecnologías modernas - es mucho más fácil encontrar un lenguaje común al comunicarse por voz o vídeo y mostrando una imagen del monitor a tu compañero. Pero la conversación será mucho más productiva si hay algo que discutir - formular sus pensamientos sobre el papel, y se puede preparar una tarea correcta en el curso de la discusión, simplemente haciendo pequeñas aclaraciones de un texto ya preparado.

Las conclusiones de lo anterior:

Si puedes desarrollar claramente un algoritmo de una estrategia con una descripción - trazarlo tú mismo y presentarle al programador tan sólo la información necesaria.
Si el proceso de formalización es muy complejo y requiere mucho trabajo - no esperes a que el programador lo haga de forma gratuita.

Espero que ahora tengas una buena comprensión de lo es una tarea, y podemos hablar acerca de cómo elegir un ejecutor particular.


6. Seleccion del Desarrolador

Seleccionar del ejecutorLa cuestión de elegir de un programador se convierte en vital en cuanto esta elección existe. Cada cliente quiere pagar lo menos posible y conseguir los resultados de máxima calidad. Idealmente, el software debe ser escrito por los mejores profesionales y al mismo tiempo, de forma gratuita. Es un ideal esforzarse en maniobrar a través de los profesionales caros y los principiantes .

Al seleccionar el desarrollador de la aplicación de tu primer trabajo, te aconsejo que evalúes estos criterios:

  1. Experiencia en escritura de programas de dominio público en MQL4/MQL5.
    Si el desarrollador EA entró en el mercado hace una semana, también lo puede dejar en una semana. Un "pro" con dos años de experiencia, por supuesto, puede también desaparecen repentinamente, pero la probabilidad de que esto ocurra es mucho más baja. La pérdida de comunicación con el desarrollador pone en peligro, no sólo la capacidad de realizar un nuevo pedido, sino también:
    • La falta de apoyo (no hay ningún software sin errores, sólo hay programas mal probados);
    • La complejidad de hacer mejoras aunque sean mínimas (el código de otras personas siempre es más difícil de trabajar, así que otro desarrollador puede solicitar una cantidad decente, incluso para cambios menores).

  2. Feedbacks de clientes reales.
    La práctica es el criterio de la verdad. Si una persona escribió programas que son utilizados por personas reales, esto significa que trabajan. De lo contrario, siempre habría tropezado regeneraciones, exponiendo su falta de profesionalismo.
    Si tienes amigos de traders que ya han utilizado los servicios de un programador, pedirles consejo - por lo menos entonces obtendrás un resultado esperado.

  3. Disponibilidad online.
    A nadie le gusta esperar una respuesta de un escrito después de unos de días. Y para algunos, incluso 2 horas es demasiado.
    Observar a la persona - si esta con frecuencia "en línea", o no es rápido respondiendo a los mensajes. En el futuro, esto puede ahorrar una enorme cantidad de tiempo.

  4. Los métodos de comunicación.
    Hoy en día hay una gran variedad de formas de comunicarse a través de Internet: correo electrónico, los chats, programas de voz y video chat, mensajes privados con recursos de Internet. Unos están acostumbrado a un método, mientras que otros a otro. Para una buena comunicación, necesitarás seleccionar un método que sea cómodo para ambos. No hay problema en la instalación de un programa más, pero algunas personas no pueden no quieren hacerlo, porque no ven la necesidad de ello.
    Si necesitas comunicación en vivo (es decir a través de Skype), consulta con tu desarrollador para saber si está preparado. Sobre todo, organizar con antelación si desea hablar por teléfono o en persona - no todos estarán de acuerdo en llevar a cabo tu trabajo "off-line".

  5. Términos de cooperación.
    Antes de realizar un pedido es necesario averiguar todas las condiciones de cooperación:
    • ¿Es posible trabajar a través del servicio de «Trabajo»? Una respuesta positiva a esta pregunta anulará la mayoría de los demás.
    • Se requiere pago por adelantado, y si es así, ¿cuánto cuesta?
    • ¿Cómo se verificará el programa? ¿Conseguirás una versión demo?
    • ¿Obtendrás el código fuente del programa y si es así, cuando - después del pago completo o de inmediato?
    • ¿Quién será el dueño de los derechos de distribución el programa?
      Es probable que tengas éxito comprobando de la integridad del programador, pero todavía vale la pena aclarar formalmente este punto: si repetidamente es sospechoso de vender cliente EA's o algoritmos, su reputación tiene que recorrer un largo camino.
    • ¿Durante cuánto tiempo habrá apoyo técnico y en qué términos? ¿Se hará una corrección de errores (discrepancias desde el algoritmo) de forma gratuita? ¿Cuánto costarán pequeñas mejoras?
    All of these nuances should be clarified before the beginning of the financial relationship, since it will be harder to do afterwards.

  6. Métodos de pago.
    ¿Qué sistemas de pago electrónico utiliza el desarrollador? Puedes hacer el pago por transferencia bancaria o tarjeta de crédito?
    Asegúrate comprobar los requisitos de moneda de pago - Internet es internacional, así que no todo el mundo va a necesitar los rublos rusos.

  7. Carácter.
    Si no estás buscando una simple cooperación, pero si un partner constante, intentar averiguar si os conviene mutuamente teneros entre vuestras relaciones. Socializar con otros, indica sus necesidades desde otro punto de vista, describe su visión del mundo, sus principios y debilidades (en la medida en que se permita su autocrítica).
    Una alternativa - trate de realizar el pedido en la primera elección y resolver todo en el proceso. Pero puede suceder que este partner se encuentre lejos en la primera tentativa.

  8. Coste del trabajo.
    Por último, y no menos importante. No confiarías en escribir un programa serio a un hombre que valora su trabajo en 10 dólares, pero no estoy dispuesto a pagar $1000 - así que tengo que elegir algo intermedio. El precio, por un lado, indica la profesionalidad del Ejecutor y por otro lado, depende de su interés y su carga de trabajo. No espero tener un "Mercedes" por $5 pero no pagar de más por un "utilitario".


En varias ocasiones hemos planteado el tema de "una lista de programadores" - la lista de algunos especialistas listos para trabajar con información de comentarios de sus contactos y atención al cliente. Ha habido varios intentos de crear una lista de este tipo - Por mi mismo en "Puesta en marcha de un EA. Manual para un trader " artículo en mql4.com, realizado por usuarios independientes del Foroy sólo por personas indiferentes a este tema. Y realmente podría facilitar la elección del primer pedido.

Pero igual que hace unos años, no hay ninguna lista completa y permanentemente actualizada. Podemos trabajar juntos para hacer otro intento para crearla, pero creo que la discusión de esta idea está fuera del alcance de este artículo.


7. Protegerse uno mismo de ser engañados

Hay diferentes personas y diferentes situaciones. Incluso los desarrolladores de EA's de más confianza pueden desaparecer sin completar el trabajo, y ni siquiera la persona más responsable puede violar los términos del acuerdo bajo la presión de las circunstancias. No correr riesgos que no son necesarios - utilizar el servicio de "Trabajo" .

Constantemente siguiendo el desarrollo de la estrategia de automatizar el trading, a mediados de 2010, MetaQuotes Software Corp lanzó un nuevo servicio, cuyo objetivo principal es la organización de las relaciones entre cliente y desarrollador. Incluso ahora, después de sólo seis meses, el servicio es merecidamente popular y es diariamente utilizado por muchos proveedores y programadores.

Puede obtenerse más información sobre este servicio del anuncio oficial en el foro y de un artículo sobre su uso:

La principal diferencia entre el servicio de "Trabajo" en MQL5.community y la mayoría de los recursos y servicios en otros sitios web similares es la seguridad. El cliente y el programador se aseguran mutuamente de las acciones negligentes durante todo el período de trabajo conjunto. En caso de litigio, MetaQuotes Software Corp. está listo para asumir el papel de árbitro.

A pesar de la rigurosidad y formalidad del servicio, todavía surgen problemas al usarlo. La mayoría de estos pueden evitarse siguiendo algunas reglas sencillas:

  1. Antes de procesar un nuevo pedido (si usted es el trader), o de hacer propuestas sobre la implementacion (si eres programador), asegúrese de revisar los términos del servicio. Muchos conflictos surgen por una lectura desatenta o falta de comprensión de las normas. Si algunos puntos no están claros, o, en su opinión, que pueden interpretarse ambiguamente, entonces hacer algunas preguntas aclaradoras en la rama especial - tal vez tu pregunta hará que las reglas hagan todo más simple y sencillo.

  2. Cuando solicite un EA, preparar un algoritmo claro.
    Hay varios capítulos de este artículo dedicados a este aspecto, por lo que no voy a repetir aquí

  3. Elegir un Desarrollador adecuado con un precio justo y un tiempo adecuado para la tarea, no seáis ilusos - no existe tal cosa.
    Ver lacartera de desarrolladores y leer opiniones de sus trabajos terminados. Asegurarse de que no está demasiado ocupado con otros trabajos - tal vez esto le impedirá acabar el pedido a tiempo.
    Y recuerda que el tiempo de ejecución se cuenta después de completar el segundo paso (negociación de los requisitos) - los detalles del proceso no están regulados, y horario de trabajo depende sólo de ti y el programador.

  4. Tienen todos los debates, utilizando los mensajes en el servicio de «Trabajo» - sólo entonces pueden ser utilizados en caso de arbitraje .
    Incluso si estás comunicando a través de ICQ o Skype, realiza un "documento" de todos los momentos clave en los comentarios del servicio trabajo.

  5. Realizar seguimiento de las actualizaciones de los trabajos que están relacionados (no importa - si eres el cliente o el ejecutor): regularmente revisar sus mensajes personales, permiten el envío de notificaciones a tu email o agregar su número de teléfono móvil a tu perfil para recibir notificaciones por SMS.
    Si no haces un seguimiento de los flujos de trabajo, puedes pasar que termine sin ti y no a tu favor - y llegada la fecha de compromiso de entrega puede cerrar forzosamente.

De lo contrario, el uso del servicio no es diferente de un trabajo sin intermediarios, excepto que el desarrollador pagara una pequeña Comisión al servicio de "Trabajo" para organizar el proceso.


8. Compruebe los resultados

La última etapa de nuestro viaje es verificar el trabajo completado. Para asegurarse de que funciona el programa de acuerdo con el algoritmo aprobado, debes probarlo cuidadosa y completamente.

  1. Probarlo en condiciones diferentes: con diferentes tipos de cuentas, diversos pares de divisas, plazos, con diferentes combinaciones de parámetros - el programa debe funcionar de igual manera y correctamente en cada situación (si la "indulgencia" no se especifica claramente en el algoritmo).

  2. Revisa el programa no sólo en el Probador de estrategias, sino en una cuenta demo. El probador de estrategias le ayudará a encontrar los errores evidentes rápidamente y permiten comprobar la estrategia en diferentes intervalos de la historia, y la prueba en línea mostrará cómo el programa funciona en condiciones lo más parecidas a las reales. Puede crear "situaciones de vulnerabilidad" del programa - reinicie el terminal de cliente, conectarse a diferentes cuentas, ejecutar otros asesores expertos o indicadores, cambiar la configuración durante el trabajo - es mejor aprender acerca de las características de su comportamiento en diferentes situaciones en esta etapa.

  3. Comparar el trabajo del EA con el algoritmo aprobado, en lugar de a sus expectativas sobre la rentabilidad del sistema. Si resulta que el algoritmo contiene un error durante el proceso de verificación, por favor haz los cambios necesarios y pregunta al desarrollador para que modifique el EA. Pero no esperes que lo haga de forma gratuita (especialmente si la mejora es significativa), este error no es por su culpa.

Si encuentras un problema, denúncialo al Desarrollador.

  1. Indicar la parte del algoritmo, que es procesada por el programa incorrectamente (o donde las acciones incorrectas comienzan).
    Si es difícil encontrar el lugar específico donde se viola la lógica, entonces explicar el problema con sus propias palabras, pero todavía no intentar desviarse demasiado del algoritmo.

  2. Describir las condiciones bajo las cuales las pruebas se realizaron:
    • Adjuntar un archivo de sistema con los parámetros del programa (el botón "Guardar" en la ventana de "Opciones" del EA);
    • Especificar la moneda utilizada par y time-frame del gráfico;
    • Especificar la dirección del servidor al que estaba conectado el terminal y el tipo de cuenta (demo, real, concurso, o lo que fuere);
    • Especificar la versión de compilación del terminal de cliente ("ayuda" del menú - "Acerca de");
    • Si usted la marcó en el probador de estrategias, especificar los ajustes del probador de la estrategia (periodo de prueba, tipo y modo de ejecución, depósito inicial, apalancamiento).

  3. Adjuntar una captura de pantalla que ilustre el problema.

  4. Si el problema está relacionado con la apertura o cierre de una posición, copiar el extracto del informe de la prueba de estrategia o unas líneas del histórico de la cuenta.

  5. Adjuntar los archivos de registro del EA (seleccione "Abrir" en el menú contextual de la ficha de "Expertos" del terminal de cliente o en la ficha "Diaro" en el probador de estrategias).

Cuanta más información tenga el programador, más fácil será encontrar y solucionar el problema. Espero que después de todas estas descripciones paso a paso, obtendrán exactamente lo que querían. Pero no tengas prisa en regresar a los días laborables ocupados de un trader, comparte tus experiencias con otros.


9. Respuestas de los Clientes.

Proporcionar feedback

MQL es una comunidad creciente, y tu eres parte de ella.

¿Recuerdas el cómo elegir un programador y preparar tus primeras especificaciones de tarea - lo que podría haber ayudado en el proceso? Comparte tus experiencias!

Escribir un algoritmo claro y que sirva de ejemplo a seguir. Ayudar a los novatos a formalizar sus estrategias o mostrar lo que es imposible - salva a otro buscador del grial de un colapso de esperanzas.

Cuéntanos tus experiencias con los programadores, indicar sus fortalezas y debilidades, describir - lo que más os gustó y lo que era un problema. Esto te llevará 10 minutos, pero ahorrará un montón de nervios y dinero a tus compañeros traders.

Tengo una actitud positiva respecto a cualquier comentario constructivo y agradecemos cualquier crítica de este artículo. Si crees que algunas secciones necesitan ser trabajadas, que algo faltaba, o, por el contrario, hay algo extra - ¡cuéntamelo!

Este artículo fue concebido como una herramienta para escribir una Descripción del trabajo, pero en realidad, ha cubierto un montón de temas relacionados. Realmente me gustaría que fuera fácil de leer, hacer todas las declaraciones necesarias y ser de gran ayuda. Si ya ha leído hasta aquí, por favor, dedica unos pocos minutos y deja tus comentarios.. Gracias a tu comentario este artículo puede llegar a ser incluso mejor.

Anticipándote a cierto escepticismo de mis compañeros desarrolladores de EA's, quiero informarte que este artículo fue escrito a la petición de MetaQuotes Software Corp. Su propósito no es publicitar mis servicios, pero ayuda a la relación cultural entre cliente y programador.

Espero que, como verdadero profesional, apoyes esta iniciativa para ayudar a elevar nuestro negocio global a un nivel superior. Estoy tus comentarios y observaciones.


Conclusión

El trading automatizado sigue ganando un nuevo impulso. Cómo y dónde se moverá depende de nosotros.

Ahora vamos a crear una cultura de relaciones, y muy pronto, cosecharas los frutos en forma de EA's de alta calidad.