Errores, fallos, preguntas - página 1846

 
Konstantin:

Gracias por el ejemplo, pero no me gustaría crear un objeto de tipo complejo sólo por un array, todo parece código excesivo))


¿Qué es esta tontería infantil de los tipos complejos? Esto es una tontería elemental.
Hablas de C++, pero ¿has mirado alguna vez la biblioteca STL? (es un infierno allí).

El problema se resuelve de la manera más aceptable, que se puede encontrar en un tiempo razonable.
Luego, si es necesario, refactorice todo lo que quiera, pero difícilmente llegará a esto.

El uso de una clase envolvente para alguna biblioteca, y a veces una funcionalidad estándar, es más o menos una variación del patrón de "fachada".

 

MQL tiene su propia biblioteca estándar con contenedores.
Lo utilicé cuando trabajaba como autónomo, hace unos 2 años. No es muy rápido y no es muy práctico, en mi opinión personal.

Pero ahora han añadido plantillas adecuadas + punteros de función a la funcionalidad MQL.
Tengo dudas de que los desarrolladores hayan destinado recursos a retocar la biblioteca de contenedores estándar para adaptarla a las nuevas características.
Pero aún así, la biblioteca estándar es mejor que la mayoría de las muletas escritas por uno mismo.

 
Sergey Dzyublik:


¿Qué es esta tontería infantil de los tipos complejos? Es elemental.
¿Has mirado alguna vez en la biblioteca STL? (ahí es donde el diablo se rompe una pierna).

El problema se resuelve de la manera más aceptable, que se puede encontrar en un tiempo razonable.
Luego, si es necesario, refactorice todo lo que quiera, pero difícilmente llegará a esto.

El uso de una clase envolvente para alguna biblioteca, y a veces una funcionalidad estándar, es más o menos una variación del patrón de "fachada".


Hay momentos en los que crear una clase envolvente por el hecho de obtener un array desde un método essuperfluo, no me importa obtener un array como buffer, pero sería más común obtenerlo como en C++ por puntero, pero como no es posible, eso no significa que haya que hacer overhead ))

 

Les pido que introduzcan una comisión media del broker MOEX para los símbolos de la bolsa en Metaquotes-Demo.

Por el momento no hay comisión y se obtienen graales en la demo y en el probador.

 
fxsaber:

Les pido que introduzcan una comisión media del broker MOEX para los símbolos de la bolsa en Metaquotes-Demo.

De momento no hay comisión y la demo y el tester reciben gratificaciones.


Cuando la demo en los instrumentos de cambio, la inclusión de la comisión no le ayudará a deshacerse del grial - en general, hay comisión depende de la tasa, así, vamos a suponer que, como en el plan de tarifas universal, alrededor de 0,5 garrapatas, es decir, para una ronda que dio comisión = 1tica.

Y esta comisión de 1 tick no supondrá ninguna diferencia, teniendo en cuenta que en la demo las operaciones se abren y cierran por Último, es decir, sin el spread. abrir y cerrar la operación - ¡obtener 0!

La diferencia entre usted y el probador también es diferente.

 
kaus_bonus:


En la demo para los instrumentos de cambio, la inclusión de una comisión no le ayudará a deshacerse del grial - en general, hay comisión depende de la tasa, bueno, vamos a suponer que es, como en la tarifa universal, alrededor de 0,5 ticks, es decir, para una ronda que dio comisión = 1tic.

No entiendo lo de las garrapatas. El importe de la comisión es siempre un determinado porcentaje. Tengo un grial en las órdenes limitadas. Ahí, con suerte, los flippers no se ven afectados.

Por ejemplo, si se obtiene una comisión de 1 tick, no habrá ninguna diferencia si se abren y cierran operaciones en demo, es decir, no se tiene en cuenta el spread.

Si es así, no es un error.

Si es así, no es un fallo del software, sino de los cabezales.

 
Parece que hay que comprobar que el comprobador es correcto.
 
fxsaber:
Parece que hay que comprobar que el probador es correcto.

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Lista de cambios en las compilaciones del terminal de cliente de MetaTrader 5

MetaQuotes Software Corp., 2016.09.14 16:24

Nuevo MetaTrader 5 build 1430: Pestaña de exposición actualizada

  1. Probador: Eliminado el deslizamiento en la ejecución de las órdenes de compra con límite y de venta con límite al probar en instrumentos de bolsa.
Asesor experto para el probador (Metaquotes-Demo)
#include <MT4Orders.mqh>

// Скольжение лимитника на RTS-6.17
void OnTick()
{
  MqlTick Tick;    
  SymbolInfoTick(_Symbol, Tick);

// 2017.04.06 10:00:00                [time]   [bid]   [ask]  [last] [volume]    [time_msc] [flags]  
// 2017.04.06 10:00:00   2017.04.06 10:00:00  114200  114260  114200        2 1491472800335      56  
  if (Tick.time_msc == 1491472800335)
    OrderSend(_Symbol, OP_BUYLIMIT, 1, 114250, 0, 0, 0);
}

Resultado

2017.04.07 18:18:45.366 RTS-6.17 : real ticks begin from 2017.04.06 00:00:00
2017.04.07 18:18:45.778 2017.04.06 10:00:00   buy limit 1.00 RTS-6.17 at 114250 (114200 / 114260 / 114200)
2017.04.07 18:18:46.051 2017.04.06 10:00:00   order [#2  buy limit 1.00 RTS-6.17 at 114250] triggered
2017.04.07 18:18:46.051 2017.04.06 10:00:00   deal #2  buy 1.00 RTS-6.17 at 114240 done (based on order #2)
2017.04.07 18:18:46.051 2017.04.06 10:00:00   deal performed [#2  buy 1.00 RTS-6.17 at 114240]
2017.04.07 18:18:46.051 2017.04.06 10:00:00   order performed buy 1.00 at 114240 [#2  buy limit 1.00 RTS-6.17 at 114250]

Limitar el deslizamiento en el símbolo de cambio - ¡BAG!

 
En la cuenta demo de Metaquotes-Demo, las órdenes limitadas en las órdenes de intercambio también se deslizan. ¡BOLSA!
 
A100:

Han pasado más de 30 minutos y todavía no hay ninguna llamada a OnDeinit->M5

Y ahora vamos a cambiar el código del Asesor Experto (cambiar el orden ligeramente) ...

Resultado:

2017.02.06 01:31:45.002 OnInit->M5
2017.02.06 01:31:48.340 OnDeinit->M5:1 ¡Llamado inmediatamente y sin retraso!
2017.02.06 01:31:48.409 OnInit->M15


Se ha observado que en los registros faltan líneas

OnDeinit - puede haber funcionado pero con un flujo de salida grande se salta la salida

Escribí un paseo que contiene 3 líneas Print("1"); Print("2"); Print("3");

Me saltaba uno u otro en la salida