Errores, fallos, preguntas - página 1723

 

Cómo copiar (manteniendo las rutas relativas) todos los archivos del proyecto en una carpeta separada.

Por ejemplo, quiero compartir un código. Saca una docena de archivos mqh de diferentes lugares.

Ahora tengo que buscar estos archivos manualmente, a menudo no los encuentras todos o tomas algo innecesario. ¿Cómo automatizar este proceso para poder compartir las fuentes?

 

¿Cómo puedo eliminar un proyecto con todos sus archivos?

He descargado un proyecto con una docena de archivos desde el terminal de kodobase, pero ¿cómo lo borro?

 

Error de compilación

class A {};
template<typename T> //---------------------------------------------------//(1)
T *f( T* t ) { return t; }              //      A *f(       A* )          //(2)
                                        //const A *f( const A* )          //(3)
template<typename T> //---------------------------------------------------//(4)
 T *f( T* t, const T* ) { return t; }    //      A *f(       A*, const A* )//(5)
void OnStart()
{
    const A *a;
    const A *a1 = f( a );    // ошибка не обоснована: T -> const A, и в отсутствии (6) применимо (3)
          A *a2 = f( a );    //ошибка    обоснована, но по другой причине: A* = const A*
                  f( a, a ); //ошибка    обоснована, но по другой причине: T -> A, и отсутствует f(const A*,const A*)
}

(*) En general, en el patrón (1) tanto A->(2) como const A->(3) pueden ser sustituidos por T. A diferencia, por ejemplo, de la plantilla (4), donde sólo se puede sustituir A->(5) por T.

Ahora sólo funciona la sustitución A->(2), por lo que para su uso completo tenemos que hacer dos plantillas en lugar de una:

template<typename T> //---------------------------------------------------//(1)
      T *f(       T* t ) { return t; }
template<typename T> //---------------------------------------------------//(6)
const T *f( const T* t ) { return t; }

Nota: La definición explícita (6) tiene mayor prioridad que el caso general (*)

Total: En ausencia del patrón (6), se esperaba que se aplicara el patrón (1) con la firma (3)

 
A100:
¡Realmente te pido que publiques algo en el kodobase! Con fines educativos.
 
1) ¿Actualiza la MT5 las posiciones abiertas y el historial de operaciones después de que se produzca una llamada OrderSend con cierto retraso? En caso afirmativo, ¿cuál es el tiempo de espera recomendado?

2) La misma pregunta para MT4, para comparar.
 

RickD:
1) Обновление открытых позиций и торговой истории в MT5 после вызова OrderSend происходит с некоторой задержкой? Если да, какой рекомендуется timeout для ожидания?

MT5-OrderSend NO está totalmente sincronizado - no hay sincronización con el entorno de trading. Esto significa que las lecturas del historial no se corresponden con la situación real.

No hay tiempo de espera. No hay una solución fiable para el problema, porque hay que tratar los problemas de sincronización a nivel de terminal, no a nivel de servidor.

De hecho, los usuarios de MT5 se enfrentan a lo mismo que los desarrolladores del puente de MT4.

Si se envía un OrderSend, hay que RECORDAR (aquí es donde está la potencial vulnerabilidad) que se hace. A continuación, ignore el historial actual (entorno comercial) hasta que llegue el mensaje correspondiente en OnTrade. Una vez que llegue, RECUERDE OLVIDARSE.

Cuando no hay REMEMBER, se puede confiar en el historial como en MT4.

2) La misma pregunta para MT4, para comparar.
MT4-OrderSend está TOTALMENTE sincronizado.
 

Версия и битность терминала

Versión: 5.00, build 1445 (07.10.2016), 32 bits.

Descripción del problema

El indicador no puede copiar los datos de los indicadores estándar (incorporados en MT5) de otro marco temporal (diferente del marco temporal actual del gráfico donde está instalado el indicador). Al mismo tiempo se puede obtener el "handle" del indicador estándar, pero la función CopyBuffer() siempre devuelve -1. En el modo de visualización del probador el problema no se produce, pero en el terminal del gráfico (al que está unido el indicador) el problema está siempre presente.

Secuencia de acciones

descrito anteriormente.

Resultado obtenido

Descrito anteriormente.

Resultado esperado

Copia correcta de los datos de los indicadores estándar (y preferiblemente personalizados) de otros marcos temporales en el indicador.

Información adicional

En anteriores "builds" no se producía este problema.

¿Alguien se ha encontrado con este problema? ¿Es un "bug" del terminal o mío?

 

fxsaber:

...Si se envía un OrderSend, hay que RECORDAR (aquí es donde radica la potencial vulnerabilidad) que está hecho. A continuación, ignora el historial actual (entorno de negociación) hasta que llegue el mensaje OnTrade correspondiente. En cuanto llegue, el REQUISITO debe ser PROHIBIDO...

O mi memoria está rota, o la documentación en la parte de OnTrade ha sido actualizada:

...Si la llamada a la función OrderSend() tiene éxito y devuelve true, esto significa que el servidor de negociación ha puesto en cola la orden para ser ejecutada y le ha asignado un número de ticket. En cuanto el servidor procese esta orden, se generará el evento Comercio. Y si el usuario recuerda el valor del ticket, puede averiguar qué ocurrió exactamente con el pedido utilizando este ticket al procesar el evento OnTrade()...

En otras palabras, la activación de OnTrade en el paso i-ésimo es una garantía de que la orden es aceptada en el servidor.

 
Dennis Kirichenko:

O mi memoria es confusa o la parte de la documentación de OnTrade ha sido actualizada:

En otras palabras, la activación de OnTrade en el paso i es una garantía de que la orden es aceptada en el servidor.

Recordar el ticket (no el hecho de que será devuelto por OrderSend) o el hecho mismo de que se haya realizado un OrderSend con true-return es REAL.
 
fxsaber:
Recordar el ticket (no el hecho de que será devuelto por OrderSend) o el hecho de que se hizo OrderSend con true-return es MUST.

Todo está bien allí, la colocación de la orden debe ser controlada a través de OnTradeTransaction, por cierto, si se conecta a la bolsa directamente a través de Plaza2, la situación es la misma - usted necesita para controlar la llegada de los mensajes sobre la colocación de la orden. En MT4, esta función es sincrónica, pero la misma opción está disponible en MT5, sólo que en este caso, la lógica se detendrá hasta que la función no reciba respuesta.

Si lo necesitas, puedo enviarte la clase de control, aunque está escrita para la colocación en el mercado, pero pronto la finalizaré para los limitadores.

Razón de la queja: