Esta biblioteca multiplataforma permite trabajar con el entorno comercial virtual usando una de las maneras más simples.
Esta biblioteca permite crear el entorno comercial virtual, es decir, realizar el trading de tal manera como si fuera el entorno comercial real. Esta funcionalidad para las bibliotecas no es nueva, pero dicha biblioteca multiplataforma tiene una propiedad (a veces importante): para poder usarla, no es necesario estudiar nada, es suficiente saber sólo la lógica comercial de MT4 (no MT5).
Para realizar el trading virtual, ha sido elegida la lógica comercial MT4-style como la más conveniente y que permite escribir fácilmente los EAs topo multiplataforma.
Este ejemplo especial permite demostrar la funcionalidad de la biblioteca.
// Ejecución del sistema en el entorno real y virtual // #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #include <fxsaber\Virtual\Virtual.mqh> // Entorno comercial virtual input double Lots = 1; input int Interval = 100; // Tiempo de vida de la posición input bool Example = true; // Ejemplo del código a elegir // Sistema comercial inversa void System() { if (!OrderSelect(OrdersTotal() - 1, SELECT_BY_POS)) OrderSend(_Symbol, OP_BUY, Lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 100, 0, 0); // Si no hay posición, abrimos else if (TimeCurrent() - OrderOpenTime() > Interval) // Si la posición ha vivido más del tiempo especificado { // Invertir posición OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100); OrderSend(_Symbol, 1 - OrderType(), Lots, OrderClosePrice(), 100, 0, 0); } } void OnTick() { static const int handle = VIRTUAL::Create(); // Creamos el manejador del entorno virtual. 0 - entorno real if (Example) { VIRTUAL::Select(); // Seleccionamos el entorno real System(); // Iniciamos el sistema en el entorno seleccionado (real) VIRTUAL::Select(handle); // Seleccionamos el entorno comercial virtual VIRTUAL::NewTick(); // Añadimos el tick en el entorno comercial virtual System(); // Iniciamos el sistema en el entorno seleccionado (virtual) } else // Escritura alternativa de las mismas acciones. // Repasamos todos los entornos comerciales for (int i = 0; i <= VIRTUAL::GetAmount(); i++) { VIRTUAL::Select(i); // Seleccionamos el entorno correspondiente VIRTUAL::NewTick(); // Añadimos el tick en el entorno comercial seleccionado System(); // Iniciamos el sistema en el entorno seleccionado } Comment(VIRTUAL::ToString()); // Mostramos el estado del entorno en el gráfico }
Es un EA multiplataforma inverso, cuya lógica comercial cabe en apenas unas líneas (función System) gracias a MT4-style. El EA inicia el sistema en el entorno real y virtual simultáneamente. Se puede verlo perfectamente en el Probador de Estrategias de MT4 o MT5 (CTRL+F5)

En la captura de pantalla se muestra que el trading en el entorno real y virtual es idéntico.
Obsérvese que el código del sistema comercial no cambia en absoluto. Sólo se selecciona el entorno comercial: real o cualquier número de virtuales.
El código expuesto es sobrante: son dos versiones de lo mismo con el fin de demostrar la lógica del trabajo con la biblioteca.
Puesto que el escenario de la aceleración del Probador (ver el punto 5 más arriba) puede ser requerido más a menudo que los demás, ha sido incluida la posibilidad de pasar cualquier sistema en el entorno virtual y viceversa mediante la adición de dos líneas al principio del código.
#define VIRTUAL_TESTER // Ejecutamos en el entorno virtual #include <fxsaber\Virtual\Virtual.mqh> // Entorno comercial virtual
Precisamente la línea seleccionada ofrece la posibilidad de no meterse en el código original del sistema comercial.

Este modo ha sido ideado especialmente para el Probador de Estrategias. Se supone que se inicia una optimización prolongada con el entorno virtual activado, en vez del real (VirtualTester = true). Eso aumenta considerablemente la velocidad de la Optimización, ganando en el tiempo. Luego los resultados obtenidos (criterio OnTester - Balance) pueden usarse para los repasos clásicos únicos en el entorno real (VirtualTester = false).
Las mismas dos líneas que sirven para la aceleración del Probador permiten solucionar otro problema, a saber. la reversión del sistema.

El modo ReverseDeals = true activa la reversión de transacciones. El algoritmo interno es el siguiente:
Así, la lógica del EA no se altera, pero podemos ver qué es lo que nos ofrece la reversión del sistema. Este modo también sirve para el Probador.
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/22577
MAMy Expert
Asesor Experto a base del indicador MAMy v.3
TrendLineAlert_V2
El indicador muestra la línea tendencial inclinada, cuyos parámetros se establecen cuando el trader inicia el indicador. Esta línea establece el nivel del disparo de la señal, y se saltan las alertas con el envío de los mensajes de correo y notificaciones Push al spartphone cuando esta línea tendencial se rompe.
VR Donchian Lite MT5
Indicador clásico del canal de Donchian (Donchian Channel)
Stochastic - with normalized zones
Estocástico con zonas normalizadas