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?
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)voidOnStart()
{
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)
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?
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.
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?
...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.
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.
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
(*) 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:
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)
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.
Версия и битность терминала
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:
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.
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 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.