Terminal
- Rediseñada por completo la gestión del servicio de hosting virtual.
Toda la información sobre el terminal alquilado, así como las funciones de migración del entorno, pausa e inicio están ahora
disponibles en la pestaña "Instrumentos".
Antes, para trabajar con el hosting virtual se usaba el menú contextual de la cuenta en el Navegador. Ahora, usted siempre
tendrá a la vista toda la información y los comandos de control necesarios en la pestaña "VPS":
En la parte inquierda está disponible la información necesaria sobre la suscripción:
- Los datos sobre la conexión: comparación de los retrasos de red entre su terminal en el servidor del hosting y el terminal en la
computadora local.
- La cuenta comercial para la que se ha alquilado el hosting, así como su tarifa de pago.
- El identificador único de la suscripción. Pulsándolo, usted entrará en el apartado "Hosting" en su perfil de MQL5.community,
donde podrá gestionar la suscripción.
- La fecha de contratación y el estado actual. Si su hosting ha sido interrumpido, usted podrá saberlo al instante.
Con el botón Start/Stop, usted podrá pausar y reiniciar rápidamente el terminal virtual.
En la
parte derecha se muestra la información sobre el equipamiento en el servidor de hosting, así como los gráficos de consumo de recursos
por parte de us terminal. Si su experto o indicador usa demasiada memoria o tiempo del procesador, podrá detectarlo en el acto,
reaccionando a tiempo ante semejante eventualidad.
Aquí también dispondrá de información sobre la última migración del entorno comercial, además de comandos para realizarla
de nuevo. Ahora, usted no olvidará trasladar el entorno después de comprar un hosting.
El alquiler del hosting virtual ahora también puede formalizarse a través de la pestaña "VPS". En este caso, además, el propio
proceso no ha cambiado: se realiza de forma sencilla y en solo un par de pasos. Solo tiene que seleccionar su tarifa y un sistema de pago
adecuado. El mejor servidor para la conexión con su bróker se seleccionará de forma automática.
- Añadida la posibilidad de paso rápido al ingreso/retirada de fondos de la cuenta comercial en el sitio web del bróker.
Ahora, no deberá buscar las funciones correspondientes en el perfil personal en el sitio web del bróker. Los comandos de paso rápido a
las páginas de ingreso de fondos y retirada de fondos ahora están disponibles directamente en el terminal, en el menú de cuentas en el
Navegador y en la pestaña de comercio en los Instrumentos:
- Los comandos de ingreso/retirada estarán disponibles en el caso de que las funciones correspondientes se encuentren
activadas para la cuenta comercial en el lado del bróker.
- El terminal comercial no realiza ninguna operación de ingreso/retirada de fondos desde la cuenta. Las funciones
incorporadas solo redireccionan al usuario hacia las páginas web correspondientes de la compañía de corretaje.
- Añadidos nuevos campos a las especificaciones del instrumento comercial:
Categoría
La propiedad se usa para marcar adicionalmente los instrumentos financieros. Por ejemplo, en él se pueden indicar los sectores del
mercado a los que pertenece un símbolo: Agriculture, Oil & Gas, etcétera. Se mostrará solo si el bróker ofrece la información
correspondiente.
Bolsa
Aquí se indica el nombre de la bolsa o plataforma en la que se comercia con el símbolo. Se mostrará solo si el
bróker ofrece la información correspondiente.
Comisión
Aquí se representa la información sobre las comisiones cobradas por el bróker al realizar
transacciones de un instrumento. Se muestran todos los detalles del cálculo:
- Las comisiones pueden ser de un solo nivel o de varios, es decir, se pueden cobrar por la misma cuantía, independientemente del
volumen de la transacción/circulación, o diferenciarse en función de su magnitud. En las especificaciones se muestra la
información correspondiente.
- Las comisiones pueden cobrarse al realizarse una transacción o al final del día/mes comercial.
- Las comisiones se cobrarán dependiendo de la dirección de la transacción: por la entrada, por la salida, o por ambos tipos de
operación.
- Las comisiones pueden cobrarse por cada lote o por cada transacción.
- Las comisiones pueden cobrarse en diferentes magnitudes: en dinero, en tanto por ciento o en puntos.
Por ejemplo, la siguiente entrada significa que la comisión se carga de inmediato al realizar las transacciones de entrada y
salida. Con un volumen de transacción de 0 a 10 lotes, la comisión cobrada será de 1.2 USD por operación. Con un volumen de transacción de
11 a 20 lotes, la comisión cobrada será de 1.1 USD por cada lote de la transacción.
Comisión | Instantánea por volumen, transacción de entrada/salida
0 - 10 | 1.2 USD por transacción
11 - 20 | 1.1 USD por lote
- En las especificaciones de los instrumentos se han añadido campos adicionales para las opciones:
- Tipo de opción: call o put
- Base: instrumento básico de la opción
- Precio strike: precio de ejecución de la opción
- Añadido el soporte del envío de letras griegas
para las opciones: delta, gamma, vega, theta, ro. Ahora, los brókeres podrán transmitir para estos instrumentos información adicional en
el apartado de estadísticas en la observación de mercado, lo que aumentará las posibilidades de análisis para los tráders:
- Ahora, el instrumento "Cursor en cruz" muestra la distancia entre los niveles de precio no solo en pips, sino también en tanto por
ciento:
- Ahora, al realizar operaciones en los modos de ejecución "Según el mercado" y "Bursátil" en las ventanas de diálogo de trading se
muestra el precio total de la transacción, si se conoce en el momento que se recibe la respuesta del bróker:
- Corregido el error que provocaba que el comando "Mostrar todos" en la Observación de mercado no mostrase en ciertos casos la lista
completa de todos los instrumentos comerciales disponibles.
MQL5
- Modificado el funcionamiento del ámbito, lo cual hace MQL5 aún más próximo a C++. Los programadores de MQL5 tendrán mucha más
libertad para usar bibliotecas de terceros. Ya no será necesario modificarlas y convertir todos los identificadores en un tipo único.
Ejemplo: en el código se han añadido dos estructuras con nombre idéntico, pero en clases diferentes. Antes, esta declaración
generaba el error de compilación "identifier already used". Ahora, este código se compilará y ejecutará con éxito. Además, para
recurrir correctamente a la variable/estructura/función necesaria desde fuera de su ámbito, deberemos indicar la clase, en este
caso, CBar::Item.
class CFoo
{
public:
struct Item { int x; };
};
class CBar
{
public:
struct Item { int x; };
};
CBar::Item item;
Item item;
Asimismo, se ha añadido el soporte del espacio de nombres (namespace),
lo que da una mayor libertad al utilizar códigos/bibliotecas de terceros en programas propios.
#define PrintFunctionName() Print(__FUNCTION__)
namespace NS
{
void func()
{
PrintFunctionName();
}
struct C
{
int x;
C() { PrintFunctionName(); };
};
}
struct C
{
int x;
C() { PrintFunctionName(); };
};
void func()
{
PrintFunctionName();
}
void OnStart()
{
func();
NS::func();
C c;
NS::C ac;
}
Como resultado de la ejecución, el programa mostrará las siguientes líneas:
2019.09.18 13:39:35.947 TestScript (AUDCAD,H1) func
2019.09.18
13:39:35.949 TestScript (AUDCAD,H1) NS::func
2019.09.18 13:39:35.949 TestScript (AUDCAD,H1) C::C
2019.09.18
13:39:35.949 TestScript (AUDCAD,H1) NS::C::C
- Aumentada la velocidad de acceso a los datos de las series temporales
con la ayuda de las funciones iTime, iOpen, iHigh, iLow, iClose, iVolume, iTickVolume, iSpread.
- Añadido el soporte del atributo "=delete".
Permite prohibir el uso de métodos de clase concretos.
class A
{
void operator=(const A &)=delete;
};
class B : public A
{
};
void OnStart()
{
A a1,a2;
B b1,b2;
a1=a2;
b1=b2;
}
En este ejemplo, para las líneas "a1=a2" y "b1=b2", el compilador dará el error:
attempting to reference deleted function 'void A::operator=(const A&)'
function 'void
A::operator=(const A&)' was explicitly deleted here
attempting to reference deleted function 'void B::operator=(const B&)'
function
'void B::operator=(const B&)' was implicitly deleted because it invokes deleted function 'void A::operator=(const
A&)'
- Añadidos a la enumeración ENUM_SYMBOL_INFO_STRING
los siguientes valores:
- SYMBOL_CATEGORY — categoría del símbolo. Se usa para marcar adicionalmente los instrumentos financieros. Por ejemplo, en él se pueden indicar
los sectores del mercado a los que pertenece un símbolo: Agriculture, Oil & Gas, etcétera.
- SYMBOL_EXCHANGE — nombre de la bolsa o plataforma en la que se comercia con el símbolo.
- Añadido el soporte de cierre de posiciones según la regla FIFO.
- Añadido a la enumeración ENUM_ACCOUNT_INFO_INTEGER
el valor ACCOUNT_FIFO_CLOSE, que indica que una posición se puede cerrar solo según la regla FIFO. Si el valor de la propiedad es true,
solo estará permitido cerrar las posiciones de cada símbolo en el orden en el que se han abierto: primero la más antigua, después la
más reciente, etcétera. Si se trata de cerrar las posiciones en otro orden, obtendremos error. Para las cuentas sin sistema de
cobertura de registro de posiciones (ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), la propiedad siempre
será igual a false.
- Añadido un nuevo código de retorno del servidor TRADE_RETCODE_FIFO_CLOSE,
la solicitud ha sido rechazada, dado que para la cuenta comercial se ha establecido la regla "Solo se permite el cierre de las
posiciones existentes según la regla FIFO".
El cierre de posiciones puede realizarse de tres modos principales:
- Cierre a través del terminal de cliente: se trata del cierre manual de posiciones por parte del tráder, con la ayuda de un robot
comercial mediante el servicio "Señales", etcétera. Si se intenta cerrar una posición en disconformidad con la regla FIFO,
el tráder obtendrá el error correspondiente.
- Cierre por la activación de un Stop Loss o un Take Profit: estas órdenes se procesan en el lado del servidor, por consguiente, el
cierre de posiciones también será iniciado en tal caso no por el tráder (terminal), sino por el servidor. Si se ha activado un
Stop Loss o un Take Profit para una posición, y esta posición no se corresponde con la regla FIFO (existen posiciones
anteriores del mismo símbolo), esta no será cerrada.
- Cierre por activación de un Stop Out: estas operaciones también se procesan en el lado del servidor. En el modo normal, cuando el
cierre por la regla FIFO está desactivado, al darse un Stop Out, las posiciones se cerrarán comenzando por la que más pérdidas
tenga. Si desactivamos esta opción, se verificará de forma adicional la hora de apertura de las posiciones con pérdidas
cerradas. El servidor determina las posiciones con pérdidas de cada símbolo, localiza para cada símbolo la posición más
antigua, y después cierra entre las posiciones encontradas aquella que tiene mayores pérdidas.
- Añadida la posibilidad de agrupar los parámetros a través de "input group". Esto permitirá separar visualmente unos parámetros de otros
usando como base la lógica implementada en ellos.
Ejemplo de asesor cuyo bloque de parámetros de entrada está dividido según su cometido:
input group "Signal"
input int ExtBBPeriod =20;
input double ExtBBDeviation =2.0;
input ENUM_TIMEFRAMES ExtSignalTF =PERIOD_M15;
input group "Trend"
input int ExtMAPeriod =13;
input ENUM_TIMEFRAMES ExtTrendTF =PERIOD_M15;
input group "ExitRules"
input bool ExtUseSL =true;
input int Ext_SL_Points =50;
input bool ExtUseTP =false;
input int Ext_TP_Points =100;
input bool ExtUseTS =true;
input int Ext_TS_Points =30;
input group "MoneyManagement"
sinput double ExtInitialLot =0.1;
input bool ExtUseAutoLot =true;
input group "Auxiliary"
sinput int ExtMagicNumber =123456;
sinput bool ExtDebugMessage=true;
Al iniciar un asesor de este tipo, en el simulador de estrategias aparece la posibilidad de minimizar y desplegar el bloque de parámetros de
entrada de un grupo haciendo doble clic sobre el nombre del mismo, y también de seleccionar todos parámetros de un grupo para la
optimización clicando sobre la casilla de verificación de este.
- Corregido el error que surgía al importar funciones desde DLL, cuyos nombres coincidían con funciones de MQL. Ejemplo:
#import "lib.dll"
int func();
#import
int func()
{
return(0);
}
void OnStart()
{
Print( func() );
}
Antes, la compilación de este código daba error:
'func' - ambiguous call to overloaded function with the same parameters
could be one of 2 function(s)
int func()
int func()
Ahora, en lugar de error, se usará por defecto la función MQL incorporada como aquella con mayor prioridad. Para llamar una función importada,
será necesario indicar explícitamente su
ámbito:
void OnStart()
{
Print( lib::func() );
}
- Corregida la indicación de la hora en las noticias del calendario económico. Ahora, la hora de un evento se transmite teniendo en
cuenta el huso horario del servidor comercial al que está conectado el terminal, y no el huso horario de la computadora local.
- Corregido el consumo excesivo de memoria en las funciones CopyTicks
y CopyTicksRange.
Signals
- Corregida la representación de los gráficos de las señales al trabajar con Wine (Mac OS y Linux).
Tester
- El simulador de estrategias ha sido sustancialmente actualizado: se ha añadido una página de inicio, se ha rediseñado la página de
ajustes y se ha mejorado la comodidad de uso.
Página de inicio
Ahora, al iniciar el simulador, en lugar de multitud de ajustes, al usuario se le ofrecerá
seleccionar una de las tareas tipadas y proceder rápidamente a su solución. La novedad está destinada, en primer lugar, a los usuarios
sin experiencia.
Hemos destacado varias tareas principales de simulación y optimización de estrategias y las hemos representado
gráficamente en la primera página. Aparte de esto, desde la página de inicio también se puede reiniciar rápidamente una de las tareas
anteriores. Si usted ha iniciado muchas tareas y todas ellas no caben en la lista, use el campo de búsqueda. Este permite encontrar un
test según cualquier parámetro: según el nombre del programa, el instrumento, el marco temporal, el tipo de modelado, etcétera.
Ocultar parámetros irrelevantes
Al elegir una de las tareas de la página inicial, usted pasará a un apartado
de ajuste más preciso de los parámetros de simulación: selección del robot, del instrumento, del periodo, etcétera. Para facilitar el
trabajo, se ocultarán todos los parámetros innecesarios para la tarea elegida. Por ejemplo, si usted ha elegido los cálculos
matemáticos, solo tendrá que establecer dos parámetros: seleccionar el programa para la simulación y el modo de optimización. Los
ajustes del periodo de simulación, los retrasos y la generación de ticks permanecerán ocultos.
Cómodos ajustes de simulación
Para mayor comodidad, algunos parámetros en la página de ajustes han sido
reagrupados. Asimismo, para los parámetros de retraso y visualización se han añadido aclaraciones ampliadas. Aparte de ello, los
ajustes de simulación ahora se pueden guardar y cargar manualmente, lo que permite regresar rápidamente a los anteriores resultados.
Desde aquí, podrá pasar rápidamente a la edición del programa en el MetaEditor.
Cálculo del beneficio
en pips
Ahora, usted podrá activar en los ajustes el cálculo del beneficio en pips. Esto permite acelerar el proceso de
simulación gracias a que el beneficio no será recalculado en la divisa del depósito usando tasas de conversión (y, por consiguiente, no
será necesario descargar su historia de precios). Asimismo, en este modo no se calculan los swaps y comisiones.
Tenga en cuenta que al calcular el beneficio en pips, el volumen de las transacciones realizadas no tiene importancia. Para
cada transacción siempre se calcula solo el número de pips ganados/perdidos. Además, en este modo casi no existe el control del margen.
Úselo solo para valorar su estrategia rápidamente y en general, mientras que verifica los resultados obtenidos en modos más precisos.
Mejoras generales
El botón de inicio/pausa de la simulación, así como la barra de progreso, han sido
desplazados al panel de pestañas. Esto le permitirá controlar el progreso, sea cual sea el apartado del simulador en el que se
encuentre. Aparte de lo mencionado, los comandos de inicio y pausa de la simulación han sido añadidos al menú de los apartados de ajuste y
parámetros de entrada.
- El gráfico de los resultados de optimización ahora se representa en la zona de trabajo principal del terminal, y no en un apartado
separado del simulador de estrategias. Esto permite usar mucho más espacio para la representación, lo que hace más cómodo el análisis
de datos. Aparte de ello, se ha actualizado el sistema de visualización en 3D.
- Añadido el guardado de la caché
de optimización para el modo "Todos
los símbolos en la Observación de mercado".
- Añadido el guardado de la caché de simulación.
Antes, los resultados de las tareas realizadas se
guardaban en archivos solo al optimizar los asesores. Ahora, los archivos de caché se guardan también en la simulación única,
permitiendo regresar en cualquier momento a los cálculos anteriores: ver todas las estadísticas, los gráficos de balance, equidad y
carga del depósito. Asimismo, esto permitirá en el futuro comparar los resultados de las simulaciones entre sí.
Para descargar los anteriores resultados de simulación, use la nueva página de inicio del simulador: pulse "Resultados
anteriores" y seleccione el archivo necesario:
- Aumentada significativamente la velocidad de la simulación y la optimización, incluyendo el uso de la red
de cálculos en la nube MQL5 Cloud Network.
- Corregidos los errores y optimizado el trabajo con frames.
MetaEditor
- Añadida la posibilidad de ajustar el diseñador de código.
MetaEditor dispone de un diseñador
de código que permite dar formato automáticamente al código fuente de un programa, de acuerdo con unos estándares determinados.
Ahora, además del estilo de formato habitual, usted podrá también usar otros estándares populares. Para ello, abra los ajustes del
MetaEditor y seleccione el estilo necesario:
Aparte de ello, ahora es posible establecer los siguientes parámetros para el diseñador:
Espacios
para el sangrado
Determina el número de espacios insertados al alinear las construcciones incorporadas:
if(condition)
{
}
Reemplazar la tabulación por espacios
Al activar esta opción, el diseñador sustituirá todos los símbolos de
tabulación en el código por símbolos de espacio. El número de símbolos de tabulación se determina en el apartado "General".
Eliminar líneas vacías
Al activar esta opción, el diseñador eliminará del código todas las líneas en las que
haya un solo símbolo de salto de línea.
Insertar espacios después de comas y puntos y coma
Al activar esta opción, el diseñador separará
visualmente las construcciones con enumeraciones de elementos. Por ejemplo:
ParameterGetRange("InpX",enable,x_cur,x_start,x_step,x_stop);
ParameterGetRange("InpX", enable, x_cur, x_start, x_step, x_stop);
Insertar espacios alrededor de los operadores de declaración
Al activar esta opción, el diseñador insertará
espacios alrededor de los operadores de asignación, equidad, comparación, etcétera. Por ejemplo:
if(x==1&y!=2)
{
int a=0;
}
if(x == 1 & y != 2)
{
int a = 0;
}
- En el menú contextual de las pestañas de los archivos se ha añadido el comando "Mostrar en el navegador". Este permite encontrar
rápidamente el archivo abierto para la edición en la estructura de carpetas del editor.
- Corregida la representación de la palabra clave "union" en las descripciones emergentes.
Añadida la traducción de la interfaz de usuario a 18 nuevos idiomas:
- Región europea: sueco, lituano, danés, letón, estonio, serbio, esloveno, eslovaco, finés y georgiano
- Región asiática: javanés, marathi, bengalí, panyabí, tamil y telugu
- Región africana: suajili y hausa
En total, la interfaz de la plataforma está ahora traducida a 50 idiomas que, en suma, constituyen la lengua nativa para más de 4
mil millones de personas.
Para poner la interfaz en su idioma, use el menú "Ver \ Idioma" en la parte superior del terminal.
Documentación actualizada.
Correcciones de crash logs.
La actualización estará disponible a través del sistema Live Update.