English Русский 中文 Deutsch 日本語 Português
preview
Cómo construir un EA que opere automáticamente (Parte 13): Automatización (V)

Cómo construir un EA que opere automáticamente (Parte 13): Automatización (V)

MetaTrader 5Trading | 16 mayo 2023, 16:47
484 0
Daniel Jose
Daniel Jose

Introducción

Ahora que hemos concluido la parte de construcción del esqueleto base, podemos finalmente automatizar el EA para que opere de forma 100% automática, siguiendo reglas operativas definidas por ti. El objetivo de este artículo no es construir un modelo operativo, sino mostrar y preparar a entusiastas como tú para utilizar el sistema propuesto, transformando un EA manual en un EA automatizado.

Un gran problema que veo en la mayoría de las personas que quieren utilizar un EA 100% automatizado -no necesariamente tu caso, querido lector- es que no saben absolutamente nada de programación, o peor aún, no saben nada sobre el mercado financiero y quieren aventurarse en este mundo.

Muchas personas simplemente quieren encender un programa de computadora que mágicamente produzca dinero para ellos, sin entender realmente lo que está pasando detrás de bastidores. Veo a mucha gente hablando bien o mal de una plataforma, sistema o EA específico, pero la gran mayoría no tiene noción del nivel de riesgo al que se están exponiendo al imaginar que un simple programa informático creado en MQL5 para ejecutarse en MetaTrader 5 o cualquier otro lenguaje de programación se convertirá en un cajero automático para operar en el mercado.

Muchos tienen el "sueño" -o podemos llamarlo ilusión- de que algún programador, o incluso ellos mismos, lograrán desarrollar un método, programa o algoritmo que mágicamente generará dinero en las cuentas que tienen en el bróker. Y muchos de ellos incluso se toman la molestia de estudiar lo básico sobre el mercado financiero, pero no les gusta que les digan que están equivocados, que ese no es el camino.

Todo, absolutamente todo lo que se puede utilizar, crear o desarrollar para intentar convertir un programa en una fábrica de dinero en el mercado financiero, ya ha sido creado, probado y desarrollado. Algunas cosas han demostrado ser inadecuadas, mientras que otras, teniendo un buen control del riesgo, consiguen generar algún beneficio a largo plazo.

Por lo tanto, si eres de los que simplemente espera encontrar un sistema mágico que te haga rico en cuestión de días, deja de leer este artículo inmediatamente, porque la información que contiene no va dirigida a ti. Lo mismo va para aquellos que esperan encontrar la fórmula mágica en este artículo. Les recomiendo que no sigan leyendo.

Aquí te mostraré cómo desarrollar el disparador para automatizar el sistema que has estado utilizando durante meses o probablemente durante bastante tiempo.

Comencemos por entender cómo automatizar EA, empezando por planificar lo que realmente necesitaremos hacer.


Planificación de la automatización

En primer lugar, los detalles de lo que vas a negociar son irrelevantes. Los indicadores, el tiempo de los gráficos o el tipo de señal utilizada no suponen ninguna diferencia. El proceso de automatización siempre sigue una planificación estándar. La única variación es la construcción del disparador, pero la estructura general sigue siendo la misma.

Para planificar la automatización del sistema, hay que partir de un modelo operativo que ya se haya utilizado durante algún tiempo. Esto es fundamental y sumamente necesario. No intentes automatizar un modelo desconocido o del que sólo has visto u oído hablar. Es crucial tener experiencia con el modelo específico.

Con esa base, tienes el primer requisito para la automatización: el conocimiento del modelo. Ahora, define claramente las reglas de la operación. Tienes que ser capaz de hacerlo de forma clara y objetiva. Nada de: «si esto es así, a lo mejor aquello es así, ahí vendiendo tanto, esperando que eso se compre». No, está mal. Debería ser algo así: «pasa esto, vende; pasa eso, compra». Sé objetivo y preciso, porque estarás instruyendo a una calculadora sin emociones ni sentimientos. Ella no siente miedo ni remordimientos, así que sé directo. Así que sé objetivo.

Una vez registradas las reglas exactas, es hora de desarrollar la lógica de programación. En este punto, muchos se pierden inventando nuevas reglas para mejorar o hacer más rentable el sistema. Esto es incorrecto; el EA debe ejecutar exactamente lo que tú harías, ni más ni menos.

Como ejemplo, voy a enseñar la creación de reglas utilizando el Modelo de Larry Williams, conocido como la media móvil exponencial de 9 periodos. Existen numerosas variaciones de este modelo, pero la versión original es sencilla. Sin embargo, no utilices este modelo sin conocerlo en profundidad y saber cómo funciona. Vayamos a la planificación de las reglas de este modelo.

Si la barra cierra por encima de la media móvil exponencial de 9 periodos, debemos COMPRAR; si cierra por debajo, debemos VENDER.

Esta es la regla básica para programar el modelo, clara y objetiva. Si queremos incluir un trailing stop, el planteamiento debe ser igualmente directo, como en este ejemplo:

El stop de la operación siempre estará un tick por encima del mínimo de la barra cerrada para COMPRAR y un tick por debajo del máximo de la barra cerrada para VENDER.

De nuevo, la regla es sencilla. Sigue este patrón para crear tus reglas. Para ilustrarlo, veamos otro ejemplo utilizando el indicador RSI (o IFR). La lógica se aplica a otros indicadores, pero el objetivo aquí es demostrar el enfoque correcto:

Si el indicador está por encima de 80, espera para entrar en VENTA; una vez que esté por debajo de 80, VENTA. Si está por debajo de 20, espere para entrar en COMPRA; en cuanto supere 20, COMPRE.

Esta regla es simple y eficaz, pero queda por definir el STOP o la posibilidad de un trailing stop. Podemos establecer una regla para ello utilizando otro indicador o el propio indicador de entrada, siempre que la regla sea clara. Vamos a establecer la regla basada en la media móvil aritmética de 20 periodos:

Ya sea para posición larga o corta, el STOP de la operación se fijará en el precio de la media móvil aritmética de 20 periodos.

Alternativamente, puedes ajustar la regla de la siguiente manera:

Si estás en una posición larga y el precio cierra por debajo de la media móvil aritmética de 20, cierra la operación. Si estás vendido y el precio cierra por encima de la media móvil aritmética de 20, cierra la operación.

¿Ves la importancia de la objetividad? No hay lugar para la ambigüedad; todo debe ser claro y directo, sin invenciones ni suposiciones.

Por lo tanto, es crucial tener experiencia con el modelo elegido para la automatización. No hay lugar para la incertidumbre. Las reglas son estrictas y deben seguirse al pie de la letra. Recuerda que estás dando instrucciones a una calculadora para que realice cálculos. Usted no tiene manera de decirle, cómo ser parcial, tratando de adaptarse a las reglas. Incluso en los sistemas adaptativos prevalecen las reglas rígidas y bien definidas. La adaptabilidad se produce cuando aceptamos un cierto nivel de error en las reglas.

Incluir un nivel aceptable de error en los sistemas puede hacerlos más subjetivos, permitiéndoles "tal vez" comprar o "tal vez" vender. Sin embargo, aunque este planteamiento parece interesante, complica el control. La complejidad no se debe a la programación o a las matemáticas en sí, sino al requisito de que el operador que supervisa el Expert Advisor tenga conocimientos avanzados del mercado para analizar las operaciones del EA y determinar si está cometiendo errores o no.

Para entender cómo hacer que un sistema sea adaptable, utilicemos el ejemplo de la media exponencial de 9 periodos. Esta ilustración puede aplicarse a cualquier modelo añadiendo reglas para darle adaptabilidad. La regla de compra sería la siguiente:

Si la barra cierra por encima de la media exponencial de 9, analiza las 5 barras anteriores; si están formando máximos decrecientes, no entres en la operación.

Acabamos de añadir un nivel de subjetividad matemática al sistema. Antes, comprábamos si la barra cerraba por encima de la media, pero ahora puede que esto no ocurra, dependiendo de los máximos decrecientes. Para analizar esto en tiempo real, hay que ser un trader experimentado.

Observa que incluso con cierta subjetividad, la regla sigue siendo rígida. Viendo el EA en funcionamiento, puede parecer que se adapta al mercado, pero es sólo una ilusión, ya que la regla rígida sigue definiendo su funcionamiento.

Algunos utilizan el análisis de datos para generar reglas y afirman que el sistema emplea inteligencia artificial.

Sin embargo, como programador experimentado, digo que esto es un error. Sólo estamos utilizando algoritmos para crear curvas matemáticas y gráficos de posibilidades basados en patrones observados.

Estas curvas de posibilidades dan lugar a reglas rígidas, basadas ahora en el análisis matemático y no en la observación y la experiencia del mercado. El problema es que este tipo de sistema no se adapta rápidamente a los cambios del mercado, porque estamos tratando con máquinas que, como sabemos, no piensan. Son simples calculadoras y no crean nada sin ser programadas.

Ahora que has comprendido hasta dónde podemos llegar y que no tiene sentido buscar un sistema mágico, ya que la ejecución depende de una calculadora, tenemos que definir clara y objetivamente lo que hay que hacer. Entonces podremos pasar a la etapa siguiente.


Transformación de la idea en código

Puede que muchos se muestren recelosos, creyendo que convertir una idea en código es una tarea muy complicada, accesible sólo a expertos, maestros o doctores en ciencias de la programación. Sin embargo, esto es un error. Cualquiera con sentido común, precaución, disciplina, curiosidad e interés puede, de hecho, convertir su idea en código, siempre que esté clara y objetivamente expresada sobre el papel. Si no has conseguido definir claramente la idea que quieres crear o desarrollar, intenta plasmarla sobre el papel de forma clara y, preferiblemente, sencilla.

Ahora, veamos cómo convertir la idea en código. Si la idea es demasiado breve, haz una descripción detallada. Describe el proceso paso a paso y cómo se desarrollarán las cosas. Cuantos más pasos incluyas en la descripción, mejor.

Para comprobar si la descripción es adecuada, rellena el siguiente diagrama de flujo:

Figura 01

Figura 01 - Flujograma de ejecución

Sé que a muchos les puede parecer extraña la imagen de la Figura 01 y que nunca han visto a nadie utilizar algo así, especialmente a los programadores.

La Figura 01 es un diagrama de flujo, muy utilizado en programación y otros ámbitos. La Figura 01 es un diagrama de flujo, muy utilizado en programación y otros ámbitos. En este contexto, nos centraremos únicamente en la programación. La Figura 01 representa la forma en que debe funcionar el mecanismo, independientemente de que sea manual o automático. Cada programa tiene su mapa del tesoro en la Figura 01. Si rellena cada punto correctamente, podrá diseñar el programa para que funcione a la perfección. Este diagrama de flujo funciona sobre la base de fractales.

Pero, ¿cómo es posible? ¿Cómo puede un diagrama de flujo ser un fractal y representar la forma en que debo programar algo? 😵😱 Bueno, entendamos cómo la Figura 01 se convierte en un fractal, capaz de construir cualquier cosa, independientemente de su complejidad. Si se puede representar dentro de esta figura, se puede construir.

Todo proceso comienza en P1. Luego pasamos por una decisión, que es el punto P2. Sea cual sea la decisión, siempre tomaremos uno de los caminos: el que lleva al punto P3 o el que lleva al punto P4. Es el punto P2 el que determina el camino a tomar.

Tanto el punto P3 como el punto P4 pueden representar una imagen como la de la Figura 01, en la que el proceso se repite hasta que finalmente termina. Sin embargo, para simplificar la explicación, vamos a suponer que P3 y P4 son sólo algún tipo de cálculo simple o llamada que volverá en breve. Al final, ambos convergen en P5.

Aquí, tomamos una nueva decisión basándonos en lo que nos ha informado P3 o P4. Dependiendo de lo que decida P5, podemos volver al punto P2 o pasar al punto P6. Si volvemos a P2, el proceso se repetirá, creando un sistema de retroalimentación. Si pasamos a P6, el proceso termina.

Debido a esta dinámica, saliendo de P1 y llegando a P6, tenemos un flujo de mensajes o flujo de ejecución. Este mismo flujo puede darse también en P3 y P4. Si esto ocurre, se producirá un fractal dentro de P3 o P4, pero no en ningún otro punto del diagrama de flujo.

Volviendo a la programación, en MQL5, los puntos P2 y P5 se pueden sustituir por estructuras como IF ELSE o SWITCH CASE. Así pues, es posible crear algo sin saber realmente programar, siempre y cuando puedas plasmar tu idea dentro de este diagrama de flujo, explicándola y describiéndola adecuadamente.

El punto P1 puede ser un conjunto de argumentos recibidos por una función o procedimiento, o el punto de inicio de la ejecución del código cuando se inserta en el gráfico. Lo esencial es entender que, en P1, se insertan todos los valores iniciales y necesarios.

El punto P6 puede ser un comando RETURN o algo que nos proporcione una respuesta en función de los valores introducidos en P1.

En cuanto a los puntos P3 y P4, como ya se ha dicho, pueden ser otro diagrama de flujo que muestre cómo deben resolverse las cosas o una simple factorización en la que se procesen los valores de P1. El objetivo es describir su sistema dentro de la Figura 01 para que pueda automatizarse.

Para facilitar la asimilación de conocimientos, veremos algunos ejemplos. Empezaremos con la media móvil exponencial de 9, transformando la descripción del procedimiento en una forma programable e insertándola en un diagrama de flujo. Observemos:

Ejemplo 01 - Compra o venta utilizando la media de 9:

  • En P1, introducimos el valor de la media móvil y el precio de cierre de la barra;
  • En P2, verificamos si el precio cerró por encima o por debajo de la media;
  • Si el precio cerró por encima, pasamos a P4 (buy call);
  • si cerró por debajo, pasamos a P3 (sell call);
  • Después de la compra o venta, pasamos a P5;
  • Si el EA es automático, volvemos a P2 para comprobar el procedimiento en la siguiente barra; si es manual, pasamos a P6, ya que no hay más acciones que realizar.
Ejemplo 02 - Trailing Stop y Breakeven:

  • En P1, informamos el beneficio deseado y el precio de la barra actual;
  • En P2, comprobamos si la posición ha alcanzado el beneficio deseado: en caso afirmativo, ejecutamos P3; en caso negativo, P4;
  • En P3, iniciamos un nuevo diagrama de flujo (P1: informamos el valor donde está el precio de stop);
  • En este nuevo diagrama de flujo, en P2, comprobamos si ya se ha producido el breakeven (en caso negativo, ejecutamos P3; en caso afirmativo, P4);
  • Si el breakeven no se ha ejecutado, actuamos ahora, procediendo a P5 y P6, volviendo al flujograma anterior y esperando una nueva llamada al procedimiento de trailing stop y breakeven.
  • Volviendo al P2 del diagrama de flujo anidado, comprobamos si se ha producido el breakeven, en caso afirmativo, ejecutamos P4 (trailing stop);
  • Al llamar a P4, abrimos un nuevo diagrama de flujo para comprobar si el precio puede ajustarse, lo que puede hacerse de varias formas, implicando a otros diagramas de flujo; Al final, volvemos al diagrama de flujo externo principal y salimos del procedimiento, a la espera de una nueva llamada.

Ejemplo 03 - Operando por RSI o IFR:

El diagrama de flujo será similar al del Ejemplo 01. Veamos:

  • En P1, obtenemos el valor del indicador;
  • En P2, verificamos si el valor es superior a 80 o inferior a 20 (Nota: valores arbitrarios para la explicación);
  • Si es superior a 80, ejecutamos P3 (vender);
  • si es inferior a 20, P4 (comprar);
  • Independientemente del resultado, pasamos a P5; si el sistema es automático, volvemos a P2; en caso contrario, pasamos a P6, ya que no hay más acciones que realizar.

¿Viste cómo funciona 😁? Si puede hacer esto, estarás en el buen camino para crear un EA automatizado.

Entiendo que puedas estar impaciente y deseando ver el código 🤔. No te preocupes, el código es la parte fácil. Lo importante es entender cómo llegar a él y cómo crear tu propio EA automático. La intención es demostrar que cualquiera, sea o no un programador profesional, puede crear un EA y utilizar el modelo más adecuado, sin depender de una programación confusa e insegura.

Así que ten paciencia, porque pronto llegaremos al código. Voy a demostrar cómo crear el EA automático, pero primero es necesario saber cómo utilizar el sistema. De lo contrario, estarás limitado al código presentado, mientras que el sistema ofrece muchas más posibilidades. En esta breve secuencia, comparto algunos de mis conocimientos.


Cómo entender la automatización y su implementación

Si has entendido el tema anterior, podemos pasar a la parte del código. Sin embargo, esto no será cubierto en este artículo, ya que tengo la intención de explicar en detalle cómo ensamblar el código. Esta parte requerirá una explicación muy profunda, ya que no estoy proponiendo el uso de un modelo específico.

El objetivo de esta secuencia es enseñar cómo transformar un modelo ya probado y operado manualmente en un sistema automatizado, en lugar de crear un modelo operativo específico. En este artículo, voy a mostrar cómo trabajar con el sistema de clases utilizado para crear el Expert Advisor. Sin embargo, la aplicación real se dejará para el próximo artículo, por las razones mencionadas anteriormente.

El EA presentado en esta secuencia tiene una lista concisa de funciones capaces de cubrir casi el 100% de los casos. Es cierto que habrá situaciones especiales no cubiertas que requerirán adiciones al código, pero son bastante raras. Dado que la mayoría de los usuarios trabajarán con indicadores, el sistema de clases propuesto facilitará su uso, evitando la necesidad de escribir mucho más código. Puede ser necesario incluir algunos mensajes informando de lo que está haciendo el EA, ya que no es imprescindible tener el indicador en el gráfico de la plataforma para que obtenga los datos y valores. El indicador puede estar en el gráfico para que el supervisor siga las operaciones, pero esto no supone ninguna diferencia para el EA.

Otro aspecto importante es que si necesita añadir código extra para cubrir un modelo específico, lo haga dentro del sistema de clases, manteniendo siempre los conceptos de encapsulación y herencia, para evitar comprometer la seguridad del código o crear problemas relacionados con la compilación del código generado.

Como he mencionado en artículos anteriores, presta mucha atención a los mensajes de advertencia generados por el compilador. No los ignores, excepto en la fase de pruebas, donde es probable que estés creando algo no definitivo. Sin embargo, en cuanto el código sea más definitivo, no ignores ningún mensaje del compilador, aunque el código haya sido compilado. La existencia de advertencias indica que el código puede no ser totalmente seguro o no poseer la estabilidad y robustez adecuadas para un uso 100% automatizado. Recuerda esto cuando modifiques el sistema aquí propuesto.

Analicemos la estructura del sistema para operación manual, como se presenta en la Figura 02.

Figura 02

Figura 02 - Modo de funcionamiento manual

En esta figura, puede parecer que estamos tratando directamente con el EA o sus clases, pero en realidad, el operador interactúa con la plataforma, y el EA responde a los comandos proporcionados por ella, no a los comandos del usuario.

Es fundamental tener esto en cuenta, porque muchas personas creen que cuando están operando con el EA, se están comunicando directamente con él, cuando en realidad la interacción es con la plataforma, que pasa los comandos al EA. Esto ya se ha tratado y explicado en artículos anteriores de esta secuencia. Antes de automatizar el EA, es esencial entender la Figura 02. Aunque la apariencia puede variar en función del programador, el principio de funcionamiento es siempre el mismo: el contacto directo es con la plataforma, nunca con el EA.

Teniendo esto en cuenta, puede pensar en un lugar para insertar el sistema de disparo. Vale la pena recordar que la Figura 02 muestra la estructura de archivos, no la estructura interna de las clases. Esto también es algo a tener en cuenta si tiene la intención de modificar el sistema de alguna manera. Estoy aclarando todo lo posible para que cualquier modificación se haga de forma que no comprometa la estabilidad del sistema o, peor aún, lo haga parecer fiable cuando, en realidad, sería una bomba de relojería a punto de explotar.

Entonces, pensemos en cómo funciona el sistema: tú, como trader, le dices a la plataforma MetaTrader 5 tu intención de comprar o vender a un precio determinado, interactuando con la clase C_Mouse.

Esta clase está vinculada al EA, que recibe eventos de movimientos del ratón y le indica a la clase C_Mouse dónde posicionar la línea de precio. Cuando se produce un clic, este punto pasa de C_Mouse al EA, que analiza si el operador está comprando o vendiendo. A continuación, el EA envía una solicitud a la clase C_Manager, que comprueba las condiciones a través de la clase C_ControlOfTime y los parámetros de creación de la clase C_Manager.

En función de estos parámetros, la solicitud puede ser aceptada o denegada. Si es aceptada, se envía una orden apropiada a la clase C_Orders, que a su vez envía una solicitud al servidor comercial. Cuando el servidor responde a la solicitud, un nuevo evento se activa en la plataforma MetaTrader 5, informando al EA de lo que ha sucedido en el servidor a través del evento OnTradeTransaction.

El EA analiza esta información y, dependiendo del contexto, informa a las clases C_Manager y C_Orders del resultado de la solicitud del operador. De esta forma, se abre, modifica o cierra una posición mediante la interacción con el código presente en el EA. Sin embargo, el operador puede utilizar la caja de herramientas para cerrar o modificar la orden o posición abierta por el EA en el servidor. Si esto ocurre, la plataforma MetaTrader 5 generará un evento a través de OnTradeTransaction, informando al operador del cambio. A continuación, el EA pasará la información a la clase C_Manager, si procede.

Entendiendo este funcionamiento, se puede imaginar que el sistema de automatización deberá sustituir a la clase C_Mouse, que inicializa todo el sistema de disparo. Aunque la clase C_Mouse será eliminada cuando el sistema sea automatizado, la automatización no ocurrirá exactamente en su lugar, ya que la C_Mouse continuará comunicándose con el EA, que generará llamadas a la clase C_Manager.

La clase C_Mouse podría incluso establecer algún tipo de conexión entre el EA y la clase C_Manager, pero como se sabía que la clase C_Mouse sería eliminada del sistema, se diseñó para que pudiera ser eliminada fácilmente. La automatización se produce en este punto.

Aún así, es necesario tratar los temas relacionados con los eventos desencadenados por la interacción del trader con la plataforma MetaTrader 5. En este caso, el EA simplemente ignorará cualquier pedido, sólo informará a la clase C_Manager de los sucesos relacionados con el sistema de órdenes para que esté al tanto de las acciones del trader. Este proceso se entenderá mejor en el próximo artículo, en el que se abordará de forma efectiva la automatización.


Conclusión

En este artículo, he mostrado cómo utilizar el diagrama de flujo para establecer reglas aplicables. El tema ha sido recurrente en el contexto de la inteligencia artificial, aunque no es nuevo. Sin embargo, muchos parecen considerarlo un concepto reciente. En cualquier caso, los conocimientos que aquí se presentan son valiosos, siendo sólo una pequeña parte del potencial existente.

Dedica tiempo a estudiar este artículo y los demás relacionados, para comprender cada paso mencionado. En el próximo artículo, veremos el sistema funcionando automáticamente, como por arte de magia, en base a lo aquí explicado. Por lo tanto, entender bien este contenido le ayudará a comprender el resultado de la secuencia.

Traducción del portugués realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/pt/articles/11310

Perceptrón multicapa y algoritmo de retropropagación (Parte 3): Integración con el simulador de estrategias - Visión general (I) Perceptrón multicapa y algoritmo de retropropagación (Parte 3): Integración con el simulador de estrategias - Visión general (I)
El perceptrón multicapa es una evolución del perceptrón simple, capaz de resolver problemas separables no linealmente. Junto con el algoritmo de retropropagación, es posible entrenar eficientemente esta red neuronal. En la tercera parte de la serie sobre el perceptrón multicapa y la retropropagación, mostraremos cómo integrar esta técnica con el simulador de estrategias. Esta integración permitirá utilizar análisis de datos complejos y tomar mejores decisiones para optimizar las estrategias de negociación. En este resumen, analizaremos las ventajas y los retos de la aplicación de esta técnica.
Probando y optimizando estrategias de opciones binarias en MetaTrader 5 Probando y optimizando estrategias de opciones binarias en MetaTrader 5
Probando y optimizando estrategias de opciones binarias en MetaTrader 5
Cómo construir un EA que opere automáticamente (Parte 14): Automatización (VI) Cómo construir un EA que opere automáticamente (Parte 14): Automatización (VI)
Aquí pondremos realmente en práctica todos los conocimientos de esta serie. Finalmente construiremos un sistema 100% automático y funcional. Pero para hacer esto, tendrás que aprender una última cosa.
Teoría de categorías en MQL5 (Parte 2) Teoría de categorías en MQL5 (Parte 2)
La teoría de categorías es una rama diversa y en expansión de las matemáticas, relativamente inexplorada aún en la comunidad MQL5. Esta serie de artículos tiene como objetivo destacar algunos de sus conceptos para crear una biblioteca abierta y seguir utilizando esta maravillosa sección para crear estrategias comerciales.