Terminal
- Implementado un nuevo algoritmo de formación de la
pestaña "Activos" para el mercado de valores. Ahora el terminal adapta
la presentación de activos dependiendo del sistema de gestión de riesgos
que se use para la cuenta comercial: Retail Forex, Futures o el
Modelo bursátil.
A aquellos que comercian en Forex o con futuros en la bolsa,
el apartado "Activos" les servirá para entender su posición actual en
el mercado. Las mismas divisas se encuentran en multitud de instrumentos
distintos: como una de las divisas integrantes de una pareja, como
divisa básica, etcétera. Por ejemplo, usted puede tener posiciones
opuestas de GBPUSD, USDJPY y GBPJY. En esta situación es muy
problemático comprender la cantidad que tenemos de esta o aquella divisa
o cuánto debemos. Todavía es más complicado cuando tenemos, no tres
posiciones de ese tipo, sino más. En esta situación, el estado total de
la cuenta se puede mirar fácilmente en la pestaña "Activos". Veamos un
ejemplo con las tres mismas posiciones:
Buy GBPJPY 1 lot at 134.027 — ha obtenido 100 000 GBP, ha dado 134 027 000 JPY
Sell USDJPY 1 lot at 102.320 — ha dado 100 000 USD, ha obtenido 102 320 000 JPY
Sell GBPUSD 1 lot at 1.30923 — ha dado 100 000 GBP, ha obtenido 103 920 USD
Hemos comprado y vendido simultáneamente 100 000 GPB. En suma, de GBP
tenemos 0, y la pestaña "Activos" no muestra esta divisa. De USD en un
caso hemos dado divisa, y en otro, la hemos obtenido. La pestaña
"Activos" calcula el total y lo suma con el balance actual, puesto que
la divisa del depósito también la tenemos en USD. JPY ha participado en
dos operaciones, así que la pestaña también mostrará el valor total.
A aquellos que comercian conforme al modelo bursátil, el
apartado puede ayudarles a entender cómo se usa el dinero. A diferencia
del modelo anterior, al realizar operaciones, el dinero se resta/añade
directamente al balance. Por ejemplo, al comprar EURRUB, usted recibirá
directamente euros, y del balance se restará la suma correspondiente en
rublos. Durante el comercio, el balance de la cuenta puede incluso
tornarse negativo: cuando usted comercia con recursos prestados y en
calidad de recursos intervienen activos adquiridos. En esta situación,
la pestaña "Activos" le permitirá entender con facilidad el estado
comercial de la cuenta.
De forma adicional, aquí se muestra el
valor de liquidación, es decir, la suma de los recursos en la cuenta y
el valor (resultado) del cierre de las posiciones actuales al precio del
mercado.
- Corregido el error de representación del tipo de transacción en la historia de operaciones comerciales.
- Corregida la muestra repetida de la ventana de notificaciones sobre riesgos al pasar a la cuenta comercial.
- Corregido y optimizado el funcionamiento del diálogo de elección de instrumentos comerciales al trabajar con gran cantidad de símbolos (varios miles y más).
- Corregida la representación de los niveles de los indicadores incorporados calculados en base a Moving Average (Bollinger Bands, Adaptive Moving Average, etc). El problema surgía al construir los indicadores en una ventana aparte.
- Corregido el error que en ciertos casos impedía colocar una orden en un contrato de futuros. El problema aparecía si el precio de la orden coincidía con el límite superior o inferior de precio del contrato.
MQL5
- Optimizada y acelerada la compilación de programas MQL5.
- Añadido el soporte de los modificadores final y override para clases, estructuras y funciones.
Modificador final para clases y estructuras
La presencia del modificador final al declarar una estructura o clase, prohíbe la posterior herencia a partir de ella. Si la clase (estructura) es tal que no haya necesidad de introducir cambios posteriormente, o los cambios no están permitidos por motivos de seguridad, declárela con el modificador final. Además, todos los métodos de la clase se también considerarán implícitamente como "final".
class CFoo final
{
};
class CBar : public CFoo
{
};
Al intentar heredar de una clase con el modificador final, como se
muestra en el ejemplo de más arriba, el compilador dará error:
cannot inherit from 'CFoo' as it has been declared as 'final'
see declaration of 'CFoo'
Modificador override para funciones
El modificador
override indica que la función declarada deberá redefinir
obligatoriamente el método de la clase padre. El uso de este modificador
permite evitar errores en la redifinición, tales como el cambio casual
de la signatura del método. Por ejemplo, en la clase básica se define el
método func, que toma como argumento una variable del tipo int:
class CFoo
{
void virtual func(int x) const { }
};
A continuación, el método se redefine en la clase heredada:
class CBar : public CFoo
{
void func(short x) { }
};
Pero por error, el tipo de argumento cambia de int a short. De
hecho, en este caso ya tiene lugar no la redefinición, sino la
sobrecarga del método. Actuando de acuerdo con el algoritmo de definición de la función sobrecargada, en ciertas situaciones el compilador puede elegir el método definido en la clase básica, en lugar del método redefinido.
Para evitar errores semejantes, al método redefinido se le debe añadir claramente el modificador override.
class CBar : public CFoo
{
void func(short x) override { }
};
Si durante la redefinición se cambia la signatura del método, el
compilador no podrá encontrar en la clase padre un método con la misma
signatura y dará un error de compilación:
'CBar::func' method is declared with 'override' specifier but does not override any base class method
Modificador final para las funciones
El modificador final actúa al revés, prohibiendo la redefinición del método en las clases heredadas. Si la implementación de un método es autosuficiente y ha finalizado por completo, declárela con el modificador final, para que haya garantías de que no será modificada en
lo sucesivo.
class CFoo
{
void virtual func(int x) final { }
};
class CBar : public CFoo
{
void func(int) { }
};
Al intentar redefinir un método con el modificador final, como se muestra en el ejemplo de más arriba, el compilador dará error:
'CFoo::func' method declared as 'final' cannot be overridden by 'CBar::func'
see declaration of 'CFoo::func'
- Corregido el error de compilación de las funciones-plantilla con los parámetros por defecto.
Market
- Corregida una serie de errores en la clasificación de los productos del Mercado.
Tester
- Corregida la actualización de los precios de mercado actuales de las órdenes y posiciones abiertas en el modo de simulación visual.
- Eliminado el deslizamiento en la ejecución de la órdenes Buy Limit y Sell Limit al realizar la simulación con instrumentos bursátiles.
- Corregido el error que provocaba en ocasiones la generación de precios incorrectos en el modo de simulación "Según precios de apertura".
- Corregida la formación de eventos OnTradeTransaction durante la simulación.
- Durante la simulación basada en ticks reales en el registro del simulador se muestra información sobre la discrepancia de los precios de los ticks (bid o last, dependiendo del precio conforme al que se construye la barra) para los valores low o high disponibles en la barra de minutos.
MetaEditor
- Corregidos los errores de representación de los datos de perfilado en los archivos del código fuente.
Se ha actualizado la documentación.
Lea las noticias anteriores, por favor: