Tutoriales de programación - página 4

 

FUNCIONES C++ (2020) - ¿Qué es la recursividad? ¡Aprende funciones recursivas!


FUNCIONES C++ (2020) - ¿Qué es la recursividad? ¡Aprende funciones recursivas! TUTORIAL DE PROGRAMACIÓN

La recursividad es un proceso en el que una función se invoca a sí misma, y la función correspondiente se denomina función recursiva.

La recursividad es uno de esos temas en programación que a menudo confunde a los estudiantes, y en este video, explico cómo funciona la recursividad y también comparo diferentes soluciones para el mismo problema (usando bucles y usando recursividad).

C++ FUNCTIONS (2020) - What is recursion? Learn recursive functions! PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What is recursion? Learn recursive functions! PROGRAMMING TUTORIAL
  • 2020.10.28
  • www.youtube.com
Recursion is a process in which a function invokes itself, and the corresponding function is called a recursive function.Recursion is one of those topics in ...
 

FUNCIONES C++ (2020) - ¿Qué son las funciones y plantillas genéricas? TUTORIAL DE PROGRAMACIÓN


FUNCIONES C++ (2020) - ¿Qué son las funciones y plantillas genéricas? TUTORIAL DE PROGRAMACIÓN

Hola a todos, bienvenidos a mi canal! Mi nombre es Saldina y creo videos relacionados con la programación. Si estás interesado en la programación, suscríbete a mi canal y dale me gusta a este video. Su apoyo me ayuda a llegar a más personas y difundir el conocimiento de programación.

En este video, quiero hablar sobre genéricos y plantillas en C++. Los genéricos nos permiten usar el mismo código con diferentes tipos de datos. Esto significa que podemos tener una sola función que trabaje con diferentes tipos de datos.

Pongamos un ejemplo para entender este concepto. Supongamos que queremos crear una función que intercambie los valores de dos variables. Inicialmente, creamos la función para intercambiar dos variables enteras, pero también podemos extenderla para que funcione con otros tipos de datos.

Para crear una función genérica, usamos plantillas en C++. Definimos un tipo de plantilla utilizando la palabra clave "plantilla" seguida del nombre del tipo, comúnmente conocido como "T". Dentro de la función, reemplazamos el tipo de datos específico con "T". Esto hace que la función sea genérica y capaz de trabajar con diferentes tipos de datos.

Ya no necesitamos crear funciones separadas para cada tipo de datos. La función de plantilla se puede utilizar con cualquier tipo de datos que admita la lógica de intercambio.

Para probar la función, creamos variables del tipo deseado y las pasamos a la función de intercambio genérica. El mecanismo de inferencia de tipos en C++ nos permite omitir la especificación explícita del tipo.

Mediante el uso de genéricos y plantillas, podemos eliminar la duplicación de código y escribir código más flexible y reutilizable. Este enfoque nos permite manejar diferentes tipos de datos sin crear funciones separadas para cada tipo.

Espero que este video te haya ayudado a comprender el concepto de genéricos y plantillas en C++. Si te resultó útil, suscríbete a mi canal y dale me gusta a este video. Su apoyo es muy apreciado. Gracias por mirar, y te veré en mi próximo video. ¡Adiós!

C++ FUNCTIONS (2020) - What are generic functions and templates? PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What are generic functions and templates? PROGRAMMING TUTORIAL
  • 2020.11.11
  • www.youtube.com
Generic programming is used to increase the efficiency of the code. The advantage of writing generic code is code reusability (which means that code that was...
 

¿Cómo construir una aplicación ATM en C++? (Para principiantes)


¿Cómo construir una aplicación ATM en C++? (Para principiantes) - TUTORIAL DE PROGRAMACIÓN (2020)

¡Bienvenido a mi canal! Soy Saldina y creo videos relacionados con la programación. Si estás interesado en eso, considera suscribirte a mi canal y darle a este video un pulgar hacia arriba.

En este video, le mostraré cómo crear una aplicación de cajero automático. Primero, planeemos las funcionalidades de la aplicación. Necesitaremos lo siguiente:

  1. Consultar saldo
  2. Depositar dinero
  3. Retirar dinero
  4. Muestrame el menu

Ahora, comencemos implementando la función "Mostrar menú". Crearemos una función llamada "showMenu" que muestra las opciones del menú al usuario.

Después de definir el menú, invocaremos la función "showMenu" para mostrarlo. Luego, permitiremos que el usuario elija una opción.

Para manejar la elección del usuario, usaremos un caso de cambio. Para cada caso, realizaremos la acción correspondiente. En el caso de la opción 1, mostraremos el saldo. En el caso de la opción 2, le pediremos el monto del depósito y actualizaremos el saldo en consecuencia. En el caso de la opción 3, le pediremos el monto del retiro y verificaremos si es válido antes de actualizar el saldo. Finalmente, agregaremos una opción 4 para salir del programa.

Para permitir que el usuario interactúe con el menú repetidamente, usaremos un bucle do-while. El ciclo continuará hasta que el usuario seleccione la opción 4.

Siéntase libre de mejorar el programa agregando más funciones, como transferir dinero entre cuentas. Comparte tu código en los comentarios y lo revisaré. No olvides darle me gusta, suscribirte y presionar el ícono de la campana. ¡Nos vemos en el próximo vídeo!

How to build an ATM application in C++? (For beginners) - PROGRAMMING TUTORIAL (2020)
How to build an ATM application in C++? (For beginners) - PROGRAMMING TUTORIAL (2020)
  • 2020.08.03
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

Expresiones lambda en C++ moderno (tutorial detallado paso a paso)


Expresiones lambda en C++ moderno (tutorial detallado paso a paso)

¡Bienvenidos a mi canal, todos! En este video, discutiré un tema crucial en C++ moderno, que son las expresiones lambda, también conocidas como lambdas. Probablemente hayas oído hablar de lambdas antes, y hoy te explicaré todo lo que necesitas saber para comenzar a escribir código más rápido y limpio usando lambdas en C++ moderno.

Cubriré los conceptos más importantes, pero tenga en cuenta que las lambdas son un tema amplio con mucho que aprender. Si desea ejemplos y práctica adicionales, proporcionaré un libro gratuito en la descripción que se centra en lambdas en C++ moderno. Siéntete libre de comprobarlo.

Las expresiones lambda se introdujeron en C++ moderno y están disponibles en C++11 y versiones posteriores. Su objetivo principal es permitirle escribir funciones anónimas en línea. Entonces, ¿qué son las funciones anónimas en línea? Las funciones regulares le permiten escribir código una vez y reutilizarlo invocando la función cada vez que necesite ese código nuevamente, eliminando la necesidad de código redundante. Por otro lado, una función en línea es una función pequeña y simple que no debe reutilizarse como funciones regulares. A menudo se usan para pequeños fragmentos de código que no requieren un nombre y no vale la pena el esfuerzo de crear una función separada. Aquí es donde brillan las lambdas, ya que proporcionan una forma de escribir funciones sin nombre que son concisas, fáciles de leer, rápidas de ejecutar y mantienen todo en un solo lugar.

Ahora, profundicemos en el código. Para esta demostración, usaré C++Builder, el IDE ideal para crear aplicaciones de interfaz de usuario de C++. Si está interesado en obtener información sobre las aplicaciones de interfaz de usuario de C++, proporcionaré un enlace en la descripción donde puede descargar C++Builder. Para comenzar, creemos una aplicación de consola. Haga clic en "Archivo", luego en "Nuevo otro" y seleccione "Aplicación de consola". Asegúrate de que C++ esté seleccionado y haz clic en "Aceptar". Aquí está nuestro código inicial. Hagámosle algunas adiciones.

Primero, agregaré un comando de "pausa del sistema" para mantener abierta la ventana de la consola después de ejecutar el código. A continuación, incluiré la biblioteca "iostream" para operaciones de entrada/salida. Ahora, nuestro código está listo para ejecutarse, y si ejecutamos el programa, veremos el mensaje "¡Hola, mundo!" mensaje en la consola. Ahora, echemos un vistazo a la estructura de una expresión lambda. Eliminaré el código anterior y comenzaremos con un ejemplo simple. Para crear una lambda, usamos la siguiente sintaxis: corchetes angulares (cláusula de captura), paréntesis (parámetros) y corchetes (definición de función).

Dentro de la cláusula de captura, podemos especificar variables del ámbito adjunto que queremos usar dentro de la lambda. Por ahora, dejemos la cláusula de captura vacía y centrémonos en los parámetros. Podemos definir los parámetros dentro de los paréntesis. En este ejemplo, usaré un solo parámetro, "p". Finalmente, definimos el cuerpo de la función lambda dentro de las llaves. Ahora, creemos un ejemplo donde encontraremos un problema y luego lo resolveremos usando lambdas. Trabajaremos con un vector, por lo que debemos incluir la biblioteca "vector". Crearé un vector de enteros llamado "v" y lo inicializaré con algunos valores. A continuación, presentaré una función útil de la biblioteca de "algoritmos" llamada "for_each". Esta función itera sobre elementos en un rango, como nuestro vector, y aplica una función determinada a cada elemento.

Dentro de la función "for_each", especificaremos el rango usando "v.begin()" y "v.end()". Ahora, definamos qué queremos hacer con cada elemento. Inicialmente, le mostraré un problema con el código y luego presentaré las lambdas como solución. Agregué una estructura con un operador sobrecargado que imprime el parámetro. Esperamos que la función "for_each" imprima todos los elementos en el vector. Si ejecutamos el código, veremos que no funciona como esperábamos. Solo imprime el último elemento. Esto se debe a que el operador sobrecargado se pasa por valor y copia el parámetro para cada llamada, lo que genera una salida incorrecta. Para arreglar esto, podemos reemplazar el operador sobrecargado con una expresión lambda. Copiaré la sintaxis de la expresión lambda que discutimos anteriormente y la pegaré dentro de la función "for_each". Ahora, ejecutemos el código de nuevo.

Como puede ver, la expresión lambda funciona perfectamente e imprime todos los elementos en el vector. La expresión lambda simplifica el código y mejora la legibilidad. También asegura que se pase el parámetro correcto a cada llamada, evitando el problema que encontramos anteriormente. Ahora, exploremos otra característica útil de las lambdas, que es su capacidad para capturar variables del alcance adjunto. Esta característica permite que las lambdas accedan a las variables y las usen dentro de la lambda. Sin embargo, de forma predeterminada, las lambdas capturan variables por valor, lo que significa que crean una copia de la variable.

En nuestro próximo ejemplo, crearé una variable llamada "multiplicador" y la estableceré en 2. Dentro de la lambda, usaré esta variable para multiplicar cada elemento en el vector. Esta vez, usaré un bucle for basado en rango en lugar de la función "for_each" para fines de demostración. Si ejecutamos el código, veremos que los elementos del vector se multiplican por 2, gracias a la variable capturada. Sin embargo, existe una limitación con la captura de variables por valor. No podemos modificar la variable capturada dentro de la lambda.

Para superar esta limitación, podemos capturar la variable por referencia, lo que nos permite modificar su valor. Demostraré esto agregando una operación de incremento a la expresión lambda. Ahora, si ejecutamos el código, veremos que los elementos en el vector se multiplican por 2 y luego se incrementan por 1. La captura de variables del alcance adjunto proporciona flexibilidad y permite que las lambdas funcionen con datos externos sin problemas. Es importante tener en cuenta que la captura de variables por referencia puede tener implicaciones, como la gestión del tiempo de vida y posibles carreras de datos. Por lo tanto, tenga cuidado al usar esta función y asegúrese de que la variable capturada siga siendo válida durante la ejecución de la lambda.

En resumen, las expresiones lambda son herramientas poderosas en C++ moderno para escribir código conciso y legible. Le permiten crear funciones anónimas en línea, lo que reduce la necesidad de funciones separadas para pequeños fragmentos de código. Lambdas también puede acceder a las variables desde su ámbito adjunto, lo que brinda flexibilidad y mejora la reutilización del código.

Espero que este video le haya resultado útil para comprender las expresiones lambda en C++ moderno. Si tiene alguna pregunta, no dude en preguntar en los comentarios a continuación. No olvides darle me gusta a este video y suscribirte a mi canal para obtener más tutoriales de C++. ¡Gracias por mirar y feliz codificación!

Lambda expressions in modern C++ (in depth step by step tutorial)
Lambda expressions in modern C++ (in depth step by step tutorial)
  • 2021.11.17
  • www.youtube.com
A lambda is an unnamed function that is used for short snippets of code that cannot be reused and are not worth naming. It makes the code cleaner, easier to ...
 

Sugerencias y trucos de Visual Studio para profesionales - Tutorial de Visual Studio



Sugerencias y trucos de Visual Studio para profesionales - Tutorial de Visual Studio

¡Hola a todos! Mi nombre es Leslie Richardson y trabajo como administrador de programas en el equipo de diagnóstico y depuración de Visual Studio. En este video, me complace hablar sobre una nueva función en Visual Studio 2019 llamada función de búsqueda para Autos, Locals y Watch windows. Esta característica está diseñada para mejorar en gran medida su experiencia de depuración y ahorrarle un tiempo valioso, haciéndolo más productivo.

Para demostrar esta función, consideremos un escenario en el que tengo una aplicación .NET Core abierta en Visual Studio 2019. Dentro de esta aplicación, tengo una lista que contiene varios objetos de recetas. El desafío al que me enfrento es ubicar recetas específicas dentro de esta lista, lo que puede ser bastante tedioso, especialmente cuando la lista contiene 61 objetos. Expandir manualmente cada objeto, encontrar la propiedad del título y verificar si coincide con mis criterios de búsqueda, como "ensalada", es una tarea que requiere mucho tiempo.

Para simplificar este proceso, utilizaré una función llamada "Pantalla del depurador". Esta característica me permite personalizar cómo se muestran los objetos en varias ventanas del depurador, incluidas las ventanas Automático, Local y Vigilancia. Al agregar el atributo "Pantalla del depurador" a la definición de clase de mis objetos, puedo especificar qué propiedad se debe mostrar en la columna de valor de estas ventanas. En este caso, quiero ver cada receta por su título, así que configuro el atributo "Visualización del depurador" para mostrar la propiedad del título de la receta.

Ahora, cuando vuelvo a expandir la lista de recetas, puedo ver de inmediato el título de cada objeto, lo que hace que sea mucho más fácil ubicar las recetas deseadas sin expandir cada una individualmente. Esta es una mejora significativa, pero con 61 artículos, aún puede llevar tiempo encontrar las recetas específicas que me interesan. Aquí es donde la función de búsqueda de la ventana de visualización resulta útil.

En lugar de desplazarme manualmente o expandir la lista, simplemente puedo usar la función de búsqueda provista. Ingreso mi término de búsqueda, como "ensalada", y presiono enter. Visual Studio me lleva inmediatamente a la primera aparición de la palabra clave, lo que me ahorra mucho tiempo y esfuerzo. También puedo utilizar el botón "Buscar siguiente" para navegar por otras coincidencias encontradas por Visual Studio. Para navegar hacia adelante y hacia atrás por la lista de coincidencias, puedo ajustar el parámetro de paso de búsqueda, que determina la profundidad de la búsqueda.

Además de la función de búsqueda, también quiero mencionar que la función de visualización del depurador está disponible para usuarios de código administrado, como los que usan C#, F# o Visual Basic. Para los usuarios de C++, existe una característica equivalente llamada NATVIS disponible. Con NATVIS, debe crear un archivo XML separado donde puede definir las propiedades que se mostrarán en las ventanas del depurador.

Espero que esta explicación haya sido útil. ¡Gracias por ver!

Ahora, exploremos cómo podemos hacer que la interfaz de Visual Studio esté más organizada y mejorar su rendimiento. Cuando abrimos soluciones en Visual Studio, recuerda el estado de los documentos, las posiciones de desplazamiento y las secciones expandidas/contraídas en el Explorador de soluciones desde la última vez que lo usamos. Si bien esto puede ser útil, también consume ciclos de CPU y puede que no siempre sea deseable. Para comenzar de nuevo y mejorar el rendimiento, podemos cambiar algunas configuraciones.

En el menú Herramientas > Opciones, en la sección Proyectos y soluciones, hay dos configuraciones a considerar. La opción "Reabrir documentos al cargar la solución" recuerda los documentos abiertos anteriormente, y la opción "Restaurar el estado de la jerarquía del proyecto del explorador de soluciones al cargar la solución" recuerda el estado expandido/contraído del Explorador de soluciones. Al desmarcar estas opciones, Visual Studio no restaurará el estado anterior al abrir una solución. En su lugar, comenzará con una pizarra limpia, sin ningún documento abierto o secciones expandidas en el Explorador de soluciones. Esto puede ayudar a mejorar el rendimiento y proporcionar un nuevo comienzo para cada solución.

Al trabajar con Git en Visual Studio, hay varias funciones que pueden mejorar su productividad y colaboración. La ventana Cambios de Git proporciona una vista integral de su repositorio de Git y le permite organizar, confirmar y enviar cambios directamente desde Visual Studio. Puede acceder a esta ventana yendo a Ver > Cambios de Git. Además, Visual Studio proporciona una herramienta Git diff integrada que resalta las diferencias entre las diferentes versiones de su código. Puede acceder a esta función haciendo clic con el botón derecho en un archivo en el Explorador de soluciones y seleccionando "Comparar con no modificado" o "Comparar con el más reciente".

Otra característica útil de Visual Studio es la capacidad de refactorizar el código. La refactorización ayuda a mejorar la estructura y la legibilidad de su código sin cambiar su comportamiento. Visual Studio proporciona una variedad de opciones de refactorización, como cambiar el nombre de variables o métodos, extraer código en métodos o clases separados y reorganizar bloques de código. Para acceder a estas opciones de refactorización, haga clic con el botón derecho en el código que desea refactorizar y seleccione "Refactorizar" en el menú contextual. También puede usar métodos abreviados de teclado para operaciones de refactorización comunes, como Ctrl + R, Ctrl + R para cambiar el nombre de un símbolo.

Para mejorar aún más su experiencia de codificación, puede aprovechar los fragmentos de código en Visual Studio. Los fragmentos de código son plantillas de código predefinidas que se pueden insertar rápidamente en su código escribiendo un atajo y presionando la tecla Tabulador. Visual Studio proporciona una amplia gama de fragmentos de código integrados para diferentes marcos y lenguajes de programación. También puede crear sus propios fragmentos de código personalizados para automatizar tareas de codificación repetitivas. Para acceder y administrar fragmentos de código, vaya a Herramientas > Administrador de fragmentos de código.

La depuración es una parte esencial del proceso de desarrollo y Visual Studio ofrece potentes capacidades de depuración. Puede establecer puntos de interrupción en su código para pausar la ejecución e inspeccionar el estado de las variables y los objetos. Durante la depuración, puede usar la ventana Inspección para monitorear los valores de variables o expresiones específicas. La ventana Inmediato le permite ejecutar código y evaluar expresiones durante la depuración. También puede aprovechar los puntos de interrupción condicionales, que solo se activan cuando se cumple una condición específica, y los puntos de seguimiento, que imprimen mensajes en la ventana Salida sin pausar el depurador.

Visual Studio también admite pruebas unitarias, que son cruciales para garantizar la calidad y corrección de su código. Puede crear pruebas unitarias utilizando varios marcos de prueba, como MSTest, NUnit o xUnit. Visual Studio proporciona una ventana del Explorador de pruebas que muestra todas las pruebas disponibles en su solución y le permite ejecutarlas o depurarlas individualmente o en grupos. Puede usar atributos para definir métodos de prueba y aserciones para verificar los resultados esperados. Visual Studio también ofrece análisis de cobertura de código, que le muestra cuánto de su código está cubierto por pruebas unitarias.

Cuando se trabaja con grandes proyectos o soluciones, puede ser un desafío navegar y comprender el código base. Visual Studio proporciona varias funciones para ayudar con la navegación y la comprensión del código. El Explorador de soluciones le permite explorar la estructura de su solución y navegar rápidamente a archivos o clases específicos. También puede usar la función Navegar a (Ctrl + ,) para buscar símbolos, archivos o tipos dentro de su solución. La función CodeLens muestra información adicional sobre su código, como referencias, cambios y cobertura de prueba, directamente dentro del editor.

Para el desarrollo web, Visual Studio ofrece un excelente soporte para tecnologías web populares como HTML, CSS y JavaScript. El editor de HTML proporciona funciones como IntelliSense, formato de código y la capacidad de obtener una vista previa de sus páginas HTML directamente en el editor. El editor de CSS ofrece características similares, incluidos selectores de color, propiedades de IntelliSense para CSS y vista previa en vivo de los cambios de CSS. Visual Studio también es compatible con la depuración de JavaScript, lo que le permite establecer puntos de interrupción, inspeccionar variables y recorrer el código para identificar y solucionar problemas.

Visual Studio tiene un amplio ecosistema de extensiones y complementos que pueden mejorar su experiencia de desarrollo. Estas extensiones brindan funcionalidad adicional, compatibilidad con idiomas y herramientas para marcos o plataformas específicos. Puede explorar e instalar extensiones directamente desde Visual Studio yendo a Extensiones > Administrar extensiones. Algunas extensiones populares incluyen ReSharper, que ofrece herramientas avanzadas de análisis y refactorización de código, y Visual Studio Code, que proporciona un editor de código ligero y multiplataforma.

Cuando se trabaja en proyectos colaborativos, Visual Studio ofrece integración con plataformas de colaboración como Azure DevOps y GitHub. Puede conectar fácilmente su proyecto de Visual Studio a un repositorio Git remoto y realizar operaciones comunes de Git como empujar, extraer y fusionar cambios. Visual Studio también proporciona herramientas para revisiones de código, seguimiento de elementos de trabajo y flujos de trabajo de implementación e integración continua.

Visual Studio es compatible con una amplia variedad de marcos y lenguajes de programación, incluidos .NET, C++, Python, JavaScript y muchos más. Proporciona funciones específicas del idioma como IntelliSense, fragmentos de código y capacidades de depuración adaptadas a cada idioma. Puede instalar SDK y extensiones específicas del idioma para mejorar aún más la experiencia de desarrollo para sus lenguajes de programación preferidos.

Para la optimización del rendimiento y la resolución de problemas, Visual Studio ofrece herramientas de generación de perfiles que ayudan a identificar cuellos de botella y pérdidas de memoria en sus aplicaciones. Performance Profiler le permite analizar el rendimiento de su código e identificar áreas que se pueden optimizar. Memory Profiler lo ayuda a detectar y diagnosticar problemas relacionados con la memoria en sus aplicaciones. Estas herramientas de generación de perfiles brindan informes detallados e información para ayudarlo a optimizar su código y mejorar el rendimiento de la aplicación.

Visual Studio también brinda soporte para el desarrollo de aplicaciones móviles para plataformas como Android e iOS. Puede crear aplicaciones móviles multiplataforma utilizando marcos como Xamarin o React Native. Visual Studio ofrece herramientas para diseñar interfaces de usuario, depurar aplicaciones móviles e implementarlas en emuladores o dispositivos físicos. También puede aprovechar los servicios en la nube como Azure Mobile Apps para la integración y el almacenamiento de back-end.

Además de las aplicaciones web y de escritorio tradicionales, Visual Studio admite el desarrollo de aplicaciones de Internet de las cosas (IoT). Puede crear aplicaciones para dispositivos como Raspberry Pi, Arduino y otros dispositivos IoT mediante Visual Studio. Las herramientas de desarrollo de Visual Studio IoT proporcionan plantillas de proyecto, soporte de depuración y opciones de implementación para escenarios de IoT.

Visual Studio también ofrece capacidades de desarrollo en la nube con integraciones para plataformas en la nube populares como Azure. Puede crear, administrar e implementar recursos en la nube directamente desde Visual Studio. Proporciona herramientas para crear e implementar aplicaciones en la nube, integrarse con servicios en la nube y monitorear sus recursos en la nube.

Estas son solo algunas de las muchas funciones y capacidades que Visual Studio ofrece a los desarrolladores. Es un IDE potente y versátil que puede satisfacer una amplia gama de flujos de trabajo y necesidades de desarrollo. Ya sea que esté trabajando en proyectos pequeños o en grandes soluciones empresariales, Visual Studio proporciona las herramientas y funciones para optimizar su proceso de desarrollo y aumentar su productividad.

Visual Studio Tips and Tricks for Professionals - Visual Studio Tutorial
Visual Studio Tips and Tricks for Professionals - Visual Studio Tutorial
  • 2020.07.01
  • www.youtube.com
Learn to use Visual Studio like pro from creating layouts to keyboard shortcuts.C++ tutorial: https://youtu.be/mUQZ1qmKlLYJava tutorial : https://youtu.be/Wq...
 

¡Codifique EA completo para MetaTrader 5 en 20 minutos!



¡Codifique EA completo para MetaTrader 5 en 20 minutos!

Hoy, nos complace comenzar a registrar nuestro primer EA (Asesor experto) para la plataforma de operaciones MetaTrader. Este EA está diseñado para ser un sistema comercial para MetaTrader, y en nuestro video, también realizaremos una prueba retrospectiva rápida para evaluar su rendimiento.

Para comenzar, lanzamos la plataforma MetaTrader y accedemos al MetaEditor haciendo clic en "Herramientas" y seleccionando "Editor de idioma de MetaQuotes" en el menú desplegable. El MetaEditor es donde creamos nuestros asesores expertos, así como scripts e indicadores para MetaTrader.

Para crear un nuevo asesor experto, hacemos clic en el botón "Nuevo" en la esquina superior izquierda del MetaEditor. En el asistente que aparece, seleccionamos la primera opción y hacemos clic en "Siguiente". Luego podemos darle un nombre a nuestro EA, como "Primer EA", y hacer clic en "Siguiente" nuevamente. Omitimos seleccionar cualquier opción adicional y procedemos haciendo clic en "Finalizar".

Ahora tenemos el código inicial de nuestro EA. Para empezar, limpiamos el código eliminando los comentarios innecesarios, como los comentarios grises que no proporcionan ninguna funcionalidad al código en sí. Eliminamos las primeras cinco líneas y algunas otras líneas innecesarias, según nuestra preferencia.

Antes de comenzar a codificar, tomemos un momento para considerar qué queremos que haga nuestro EA. Para este video, nuestro objetivo es que el EA abra una operación de compra en un momento específico y la cierre a otra hora predeterminada del día. Para lograr esto, necesitamos dos variables de entrada: una para el tiempo de apertura y otra para el tiempo de cierre.

Volviendo al MetaEditor, declaramos estas dos variables de entrada en una nueva sección llamada "Variables". Usamos la palabra clave "input" para especificar que estas variables se pueden cambiar desde fuera del código. Establecemos sus tipos como enteros ya que queremos ingresar valores de hora específicos. Por ejemplo, podemos nombrar las variables "openHour" y "closeHour".

Después de declarar las variables, compilamos el código para asegurarnos de que no haya errores. Si todo es correcto, podemos ver que no hay mensajes de error en la caja de herramientas.

A continuación, volvemos a la plataforma MetaTrader y arrastramos nuestro EA a cualquier gráfico. Podemos ver el nombre, la versión y el enlace del EA en el navegador en "Asesores expertos". Al expandir el EA, podemos acceder a las variables de entrada y cambiar sus valores sin modificar el código.

Ahora, pasemos a la función "OnTick", que se llama cada vez que cambia el precio. Queremos comprobar si hemos llegado al tiempo de apertura especificado por el usuario. Para hacer esto, necesitamos recuperar la hora actual del símbolo y el servidor. Creamos una variable llamada "time" de tipo "datetime" y usamos la función "TimeCurrent" para asignarle la hora actual.

Con la hora actual almacenada en nuestra variable "hora", ahora podemos comprobar si coincide con la hora de apertura. Usamos una instrucción "if" para comparar la variable "openHour" con el componente de hora de la hora actual ("time.hour"). Si la condición es verdadera, ingresamos al bloque "si".

Dentro del bloque "if", abrimos una posición usando la función "OrderSend". Especificamos el símbolo, la dirección comercial (compra), el tamaño del lote (1 lote) y el precio de venta como parámetros. Además, establecemos los valores de stop loss y take profit según nuestras preferencias.

Después de compilar el código y ejecutar un backtest con el probador de estrategias de MetaTrader, observamos que el EA abre una posición en el tiempo de apertura especificado. Sin embargo, notamos que se abren múltiples posiciones debido a movimientos de precios posteriores que activan nuevamente la función "OnTick".

Para evitar que se abran múltiples posiciones, introducimos una variable booleana llamada "isTradeOpen" para realizar un seguimiento de si una operación ya está abierta. Inicialmente, establecemos el valor de "isTradeOpen" en falso. Antes de abrir una nueva posición, verificamos si "isTradeOpen" es falso. Si es así, procedemos a abrir la posición y establecemos el valor de "isTradeOpen" en verdadero. De esta manera, incluso si la función "OnTick" se activa varias veces, solo abrirá una nueva posición si aún no hay una operación abierta.

Después de implementar esta lógica, volvemos a compilar el código y ejecutamos un backtest. Esta vez, observamos que el EA abre una posición en el tiempo de apertura especificado y no abre posiciones adicionales hasta que se cierra la anterior.

Pasando al cierre de la operación a la hora de cierre especificada, necesitamos introducir otra verificación en la función "OnTick". Después de abrir la posición, comparamos la hora actual con la hora de cierre especificada por el usuario. Si coinciden, ingresamos un bloque "si".

Dentro del bloque "if", cerramos la operación usando la función "OrderClose". Proporcionamos el número de ticket de la posición a cerrar, así como el tamaño del lote y el precio de oferta como parámetros. Además, podemos establecer parámetros adicionales como valores de stop loss y take profit si lo deseamos.

Compilamos el código nuevamente y ejecutamos un backtest para verificar que la operación se cierre a la hora de cierre especificada. Durante el backtest, podemos verificar el historial comercial para asegurarnos de que las posiciones se abran y cierren de acuerdo con los tiempos especificados.

Hemos creado con éxito nuestro primer EA para la plataforma comercial MetaTrader. El EA está diseñado para abrir una operación de compra en un momento de apertura específico y cerrarla en un momento de cierre predeterminado. Hemos implementado variables de entrada para permitir la personalización de los tiempos de apertura y cierre sin modificar el código. Mediante la introducción de comprobaciones y variables, nos aseguramos de que solo se abra una operación a la vez y que se cierre a la hora de cierre especificada.

Code complete EA for MetaTrader 5 in 20 Minutes!
Code complete EA for MetaTrader 5 in 20 Minutes!
  • 2022.06.27
  • www.youtube.com
Program your first EA for MetaTrader. I will show you how you can easily code your first Expert Advisor or trading system in Mql5.As an algo trader I develop...
 

Promedio móvil Crossover EA mql5 Programación



Promedio móvil Crossover EA mql5 Programación

Hola, soy Toby, y en el video de hoy, le mostraré cómo codificar un asesor experto cruzado de promedio móvil simple para MetaTrader 5. Comencemos.

Primero, definamos qué queremos que haga el asesor experto. Queremos que el asesor experto abra una posición de compra cuando la media móvil rápida (línea azul) cruce por encima de la media móvil lenta (línea roja) y abra una posición de venta cuando la media móvil rápida cruce por debajo de la media móvil lenta. También agregaremos un stop loss y una toma de ganancias al EA, así como variables de entrada para los períodos de los promedios móviles.

Para comenzar a codificar, abra el MetaEditor en MetaTrader 5. Cree un nuevo asesor experto utilizando la plantilla y asígnele el nombre "Promedio móvil". Limpie el código eliminando líneas y comentarios innecesarios. A continuación, agregue variables de entrada para los períodos de los promedios móviles rápidos y lentos. Establezca valores predeterminados para estas variables y muéstrelos en la pestaña de entrada de la configuración de EA.

Verifique la entrada del usuario en la función OnInit para asegurarse de que se ingresen valores válidos. Si la entrada no es válida (cero o negativo), muestre un mensaje de alerta y detenga el EA. Cree manijas para los promedios móviles rápidos y lentos usando la función ma. Establezca el símbolo, el período y las variables de entrada para cada promedio móvil. Compruebe si la creación de identificadores es exitosa. De lo contrario, muestre un mensaje de alerta y detenga el EA. Cree variables globales para almacenar los valores del indicador. Utilice matrices dinámicas para los búferes rápidos y lentos. En la función OnTick, copie los últimos valores del indicador en los búferes y verifique si hay suficientes datos disponibles. Si no, regrese y muestre un mensaje de alerta.

Imprime los valores del indicador en la pantalla para verificar si todo funciona correctamente. Utilice la función Comentario para mostrar los valores de los promedios móviles rápidos y lentos.

En el Probador de estrategias, pruebe el EA para verificar si los valores del indicador se muestran correctamente. Ahora, podemos verificar si hay un cruce de los promedios móviles. Si la media móvil rápida está por debajo de la media móvil lenta en la barra 1 y por encima de la media móvil lenta en la barra 0, tenemos un cruce. Abra una posición de compra en este caso.

Para abrir posiciones, utilice la clase CTrade. Defina una variable comercial y proceda con las acciones necesarias. Compile el código y pruebe el EA en el Probador de estrategias para verificar si la condición de cruce funciona correctamente y las posiciones se abren en consecuencia.

Eso es todo para codificar el asesor experto cruzado de promedio móvil en MetaTrader 5. Y luego podemos usar la función trade.Buy para abrir una posición de compra. Especificamos el volumen de la posición, que puede ser un valor fijo o en función de su estrategia de gestión de riesgos. Por ahora, usemos un volumen fijo de 0.1 lotes. Ahora necesitamos agregar una condición para verificar una posición de venta. Si la media móvil rápida está por encima de la media móvil lenta de la barra 1 y por debajo de la barra actual, tenemos un cruce en la dirección opuesta. En este caso, queremos abrir una posición de venta. Podemos usar la función trade.Sell para hacer eso.

Finalmente, podemos agregar un stop loss y tomar ganancias a nuestras posiciones. Usaremos las funciones trade.SetStopLoss y trade.SetTakeProfit. Establezcamos un stop loss de 100 pips y tomemos ganancias de 200 pips para este ejemplo. Ahora tenemos un código completo para nuestro asesor experto cruzado de promedio móvil simple. Podemos compilarlo y probarlo en la plataforma MetaTrader 5.

Una vez que haya compilado el código sin ningún error, puede guardar el asesor experto y usarlo en MetaTrader 5. Recuerde probar y optimizar su asesor experto antes de usarlo con dinero real.

Moving Average Crossover EA mql5 Programming
Moving Average Crossover EA mql5 Programming
  • 2022.09.06
  • www.youtube.com
Today I will show you how to code a simple Moving Average Crossover EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a f...
 

Desglose de rango EA mql5 Programación | parte 1/4



Desglose de rango EA mql5 Programación | parte 1/4

Hola, soy Toby, y en el video de hoy, le mostraré cómo codificar un asesor experto (EA) de ruptura de rango de tiempo para MetaTrader 5. El objetivo es lograr resultados similares a la estrategia que se muestra en el video.

Primero, analicemos la lógica detrás del EA. Definiremos un rango de tiempo simple, comenzando en un momento específico y terminando en otro momento. El EA guardará los precios más altos y más bajos dentro de este rango. Si el precio supera el precio más alto después del rango, el EA ingresará en una operación de compra. Por el contrario, si el precio cae por debajo del rango, el EA entrará en una operación de venta. Además, estableceremos una hora de cierre para cerrar todas las posiciones. Esta lógica directa guiará a nuestro EA.

Para comenzar a codificar, abra MetaEditor y cree un nuevo asesor experto. Limpie el código de la plantilla, según sus preferencias personales, eliminando las líneas innecesarias.

A continuación, defina las variables de entrada para la hora de inicio, la duración del rango, la hora de cierre, el tamaño del lote y el número mágico. Estas entradas permiten a los usuarios personalizar el comportamiento del EA. Es importante comprobar los valores de entrada para evitar entradas incorrectas. Por ejemplo, podemos asegurarnos de que el número mágico no sea cero o negativo, que los lotes no sean negativos, que la hora de inicio y la duración estén dentro de rangos válidos y que la hora de cierre no sea igual a la hora de inicio más la duración del rango.

Después de definir las variables de entrada y comprobar sus valores, pasamos a la creación de variables globales. Estas variables se utilizarán en todo el EA. Agrupamos las variables relacionadas con el rango en una estructura llamada "estructura de rango". Esta estructura contiene variables para la hora de inicio, la hora de finalización, la hora de cierre, los precios altos y bajos, y las banderas de entrada, ruptura alta y ruptura baja.

Adicionalmente, definimos el constructor de la estructura, donde predefinimos los valores iniciales de las variables. Esto ayuda a inicializar la estructura con valores predeterminados. También agregamos comentarios después de cada variable para describir su propósito.

Compilamos el código para verificar si hay errores y asegurarnos de que todo funcione correctamente.

Finalmente, creamos algunas variables más, como "MqlTick" y "last_tick" del tipo MetaTrader 5 "MqlTick". También definimos una variable de tipo "CTrade" para manejar operaciones relacionadas con el comercio.

En este punto, hemos configurado las variables y estructuras necesarias para nuestro EA. En la siguiente parte, nos sumergiremos en la codificación de la lógica real del EA en la función "OnTick". En la siguiente parte del video, nos centraremos en codificar la lógica real del Asesor Experto en la función OnTick. Sin embargo, antes de continuar, primero revisemos lo que hemos hecho hasta ahora.

Comenzamos definiendo las variables de entrada para el EA, como la hora de inicio del rango, la duración, la hora de cierre, el tamaño del lote y el número mágico. También agregamos controles de validación de entrada para garantizar que el usuario ingrese valores válidos para estas entradas. A continuación, creamos una estructura llamada rangeStructure para almacenar las variables relacionadas con el rango, incluida la hora de inicio, la hora de finalización, la hora de cierre, el máximo y el mínimo del rango y las banderas de entrada, ruptura alta y ruptura baja. Luego definimos un constructor para rangeStructure para inicializar las variables con valores predeterminados. Además, declaramos algunas variables globales, incluida una instancia de rangeStructure, dos variables de tipo MqlTick para almacenar los ticks actuales y anteriores, y un objeto CTrade para manejar las operaciones comerciales.

Ahora, pasemos a la implementación de la función OnTick para codificar la lógica principal del EA. Aquí está la continuación del video: En la función OnTick, primero actualizaremos la información actual del tick usando la función SymbolInfoTick. Esto nos permite acceder a los precios de oferta y demanda, así como a la hora del tick. A continuación, comprobaremos si el tiempo de tick actual está dentro del rango definido por el usuario. Para hacer esto, comparamos el tiempo de tick actual con el tiempo de inicio y el tiempo de finalización del rango. Si el tiempo de marca está dentro del rango, establecemos flagEntry en verdadero, lo que indica que estamos dentro del rango.

Después de eso, buscamos una ruptura alta. Si el precio actual del tick supera el máximo anterior del rango y flagHighBreakout es falso, iniciamos una operación de compra. Establecemos flagHighBreakout en verdadero para evitar entradas repetidas. Del mismo modo, buscamos una ruptura baja. Si el precio actual del tick cae por debajo del mínimo anterior del rango y flagLowBreakout es falso, iniciamos una operación de venta. Establecemos flagLowBreakout en verdadero para evitar múltiples entradas. Finalmente, verificamos si el tiempo de tick actual es igual al tiempo de cierre. Si es así, cerramos todas las posiciones abiertas utilizando el método trade.CloseAll.

Esa es la lógica básica del EA. Por supuesto, hay elementos adicionales que puede agregar para mejorar su funcionalidad, como niveles de stop-loss y take-profit, reglas de administración de dinero y filtros comerciales adicionales. Sin embargo, en este video, nos enfocamos en el concepto central de la estrategia de ruptura del rango de tiempo.

Recuerde, este EA está destinado a servir como punto de partida y puede personalizarlo aún más de acuerdo con sus requisitos y preferencias comerciales.

En la siguiente parte del video, continuaremos con el proceso de codificación, agregando el código necesario para implementar la lógica discutida. Si este video te resultó útil, no olvides dejar un me gusta y suscribirte a mi canal para mantenerte actualizado con futuros videos. Si tienes alguna pregunta o necesitas ayuda, no dudes en dejar un comentario y estaré encantada de ayudarte. Gracias por mirar, y nos vemos en el próximo video. ¡Adiós!

Range Breakout EA mql5 Programming | Part 1/4
Range Breakout EA mql5 Programming | Part 1/4
  • 2022.09.25
  • www.youtube.com
Today I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range br...
 

Desglose de rango EA mql5 Programación | Parte 2/4



Desglose de rango EA mql5 Programación | Parte 2/4

Hola, soy Toby, y en el video de hoy, continuaremos codificando nuestro EA de desglose de rango de tiempo para MetaTrader 5. Si aún no ha visto el primer video, puede encontrar el enlace aquí. En el video anterior, expliqué la lógica del EA y lo que estamos tratando de codificar.

Ahora, cambiemos a MetaEditor y reanudemos la codificación. Estaremos trabajando en la función OnTick, que se llama cada vez que cambia el precio de nuestro símbolo. En esta función, codificaremos nuestro cálculo de rango y la comprobación de ruptura. Primero, necesitamos obtener el tick actual para el símbolo. Almacenamos el tick actual en una variable llamada currentTick, y también tenemos una variable previousTick para almacenar el tick anterior.

A continuación, comprobamos si necesitamos calcular un nuevo rango. Hay varias condiciones para calcular un nuevo rango.

  1. Si tenemos un tiempo de cierre de rango establecido y el tiempo de tick actual es mayor o igual que el tiempo de cierre de rango, calculamos un nuevo rango.

  2. Si los indicadores de ruptura alta y ruptura baja se establecen en verdadero, calculamos un nuevo rango.

  3. Si es la primera vez que ejecuta el EA y aún no hemos calculado un rango, calculamos un nuevo rango.

  4. Si el tiempo de finalización del rango no es cero, y estamos detrás del rango y no lo hemos ingresado, calculamos un nuevo rango.

También verificamos si tenemos posiciones abiertas. Si no hay posiciones abiertas, se procede a calcular un nuevo rango.

Una vez que determinamos que necesitamos calcular un nuevo rango, llamamos a la función CalculateRange. En esta función, restablecemos todas las variables de rango a su estado predeterminado. Luego calculamos la hora de inicio del rango obteniendo el inicio del día y agregando la hora de inicio del rango de entrada en minutos. Si ya pasó la hora de inicio calculada, la cambiamos al día siguiente, considerando el sábado y el domingo como días de fin de semana. Del mismo modo, calculamos la hora de finalización del rango sumando la duración del rango de entrada en minutos a la hora de inicio. Si la hora de finalización cae en sábado o domingo, la cambiamos al siguiente día válido.

También calculamos la hora de cierre del rango utilizando la misma lógica que el cálculo de la hora de inicio y la hora de finalización. Para visualizar los tiempos calculados en el gráfico, creamos objetos usando la función ObjectCreate. Creamos un objeto de línea vertical para la hora de inicio del rango y eliminamos cualquier objeto dibujado previamente.

Este es el progreso que hemos hecho hasta ahora, y continuaremos codificando en el próximo video.

Range Breakout EA mql5 Programming| Part 2/4
Range Breakout EA mql5 Programming| Part 2/4
  • 2022.10.01
  • www.youtube.com
Today I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range br...
 

Desglose de rango EA mql5 Programación | Parte 3/4


Desglose de rango EA mql5 Programación | Parte 3/4

Hola, soy Toby, y en el video de hoy continuaremos codificando nuestro EA emergente. En los videos anteriores, ya calculamos la hora de inicio, la hora de finalización y la hora de cierre del rango. Ahora, queremos codificar el rango alto y el rango bajo, así como las condiciones de ruptura y el cierre de la posición. Si no ha visto los videos anteriores, puede encontrar los enlaces en la descripción a continuación. Saltemos a MetaEditor y comencemos a codificar.

Primero, iremos a la función OnTick. Comenzaremos comprobando si estamos dentro del rango y guardando los valores alto y bajo. Usamos una declaración if para verificar si la hora actual está entre las horas de inicio y finalización del rango. Si es así, actualizamos los valores altos y bajos en consecuencia. También establecimos un indicador de entrada en verdadero para indicar que teníamos una marca dentro del rango. Luego actualizamos los objetos del gráfico para el rango alto y bajo.

A continuación, pasamos a la función DrawObject para dibujar los niveles alto y bajo del rango. Copiamos el bloque de código para la hora de cierre y hacemos los cambios necesarios para el nivel alto. Usamos el nombre de objeto "Rango alto" y dibujamos una línea de tendencia desde la hora de inicio del rango hasta el precio alto del rango. También actualizamos la información sobre herramientas para mostrar el valor alto del rango. Hacemos lo mismo para el rango mínimo, cambiando el nombre del objeto y dibujando una línea de tendencia desde la hora de inicio del rango hasta el precio mínimo del rango.

Para dibujar una línea desde el final del rango hasta la hora de cierre, indicando una ruptura, copiamos el bloque de código nuevamente y lo modificamos en consecuencia. Cambiamos el nombre del objeto y dibujamos una línea de tendencia desde la hora de finalización del rango hasta la hora de cierre. También establecemos el estilo de línea en punteado.

Después de compilar y ejecutar una prueba visual, podemos ver el rango alto, el rango bajo y las líneas de ruptura que se muestran en el gráfico. Ahora, codifiquemos las condiciones de ruptura. Agregamos una nueva función llamada CheckBreakouts dentro de la función OnTick. Primero, verificamos si estamos después de la hora de finalización del rango. También nos aseguramos de que el indicador de entrada se establezca en verdadero, lo que indica que teníamos una marca dentro del rango. Si se cumplen estas condiciones, procedemos a verificar si hay rupturas altas y bajas.

Para una ruptura alta, verificamos si la bandera de ruptura alta es falsa y si el precio de venta del último tick es mayor o igual que el rango alto. Si es así, abrimos una posición de compra utilizando la función PositionOpen. De manera similar, para una ruptura baja, verificamos si la bandera de ruptura baja es falsa y si el precio de oferta del último tick es inferior o igual al rango bajo. Si se cumplen estas condiciones, abrimos una posición de venta.

Compilamos el código y ejecutamos una prueba visual para confirmar que las posiciones se abren cuando se produce una ruptura. A continuación, implementamos el cierre de posición. Antes de calcular un nuevo rango, verificamos si la hora actual es mayor o igual que la hora de cierre del rango. Si es así, llamamos a la función ClosePositions. Esta función recorre todas las posiciones abiertas con el número mágico especificado y las cierra usando la función PositionClose. Usamos un ciclo de cuenta regresiva para garantizar que todas las posiciones estén cerradas incluso si el número total de posiciones cambia durante el ciclo.

Finalmente, compilamos el código y ejecutamos una prueba visual para confirmar que las posiciones se cierran cuando se alcanza el tiempo de cierre del rango.

Eso es todo por este video. Si tiene alguna pregunta, no dude en dejarla en los comentarios a continuación. No olvides darle me gusta y suscribirte para ver más videos de codificación. ¡Gracias por ver!

Range Breakout EA mql5 Programming | Part 3/4
Range Breakout EA mql5 Programming | Part 3/4
  • 2022.10.09
  • www.youtube.com
Today I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range br...
Razón de la queja: