Errores, fallos, preguntas - página 2634
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¡Hola!
Quiero ejecutar algunos MT4 con un archivo por lotes.
Por favor, podéis decirme cómo hacer esto y por qué mi código no funciona:
En el mejor de los casos, ejecuta algunas MT4, y luego se cuelga.
Por supuesto, no hay escasez de RAM.
Además, lo he probado en diferentes ordenadores
No, no lo hace.
la hora del servidor, por cierto, no se detiene el sábado. he aquí lo contrario: en el terminal, la hora del servidor se actualiza con la llegada de una nueva cotización. Por ejemplo, usted tiene sólo un símbolo abierto en la visión general del mercado (no sólo en el probador, sino también en la realidad). y no hay ticks durante cinco segundos - todo este tiempo el temporizador de tiempo del servidor no se moverá. esto es cierto para el sábado: el tiempo del servidor está funcionando, pero el terminal no lo sabe, porque no hay ticks. el probador simplemente se perderá este período.
Ya lo he comprobado. En el probador,TimeLocal funciona los fines de semana,TimeTradeServer también, peroTimeCurrent por supuesto no. No hay ticks, pero la hora del servidor sigue ahí.
https://www.mql5.com/ru/forum/328008/page2#comment_14166682
Como siempre, las bicicletas.
La cuestión aquí es por qué no se aprueba.
Después de todo, las variables de los parámetros, tienen valores iniciales.
Y si se especifica el tamaño de las medidas en números
El compilador se lo salta, ¿cuál es el truco?
¿Podría el promotor hacer algún comentario al respecto?
¿Con qué fin? ¿Ejecutar la auto-optimización en el fin de semana? Entonces, establecer un temporizador desde OnTick a una distancia de unos pocos minutos funcionaría. Si funciona, entonces los ticks se han detenido y puedes optimizar.
Si es para otros fines, formúlelos.
No, no para otros fines.
No creí que TimeLocal funcionara los fines de semana, así que hice lo siguiente: añadí unas horas a TimeCurrent y comprobé el día de la semana. Si es el sábado, entonces empieza a optimizar.
Por supuesto, no puedo estar seguro del comienzo del sábado, porque el mercado cierra de forma diferente los viernes o los días festivos.
Además, no he encontrado en ningún sitio un medio para determinar si el mercado está cerrado o no.
No, no para ningún otro propósito.
No creí que TimeLocal funcionara los fines de semana, así que hice lo siguiente: añadí unas horas a TimeCurrent y comprobé el día de la semana. Si es el sábado, entonces empieza a optimizar.
Por supuesto, no puedo estar seguro del comienzo del sábado, porque el mercado cierra de forma diferente los viernes o los días festivos.
Además, no he encontrado en ningún sitio un medio para determinar si el mercado está cerrado o no.
¿Has probado?
SymbolInfoSessionTrade
o
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Algo de ellos debe ser bueno
¿Lo has probado?
SymbolInfoSessionTrade
o
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Uno de ellos debe ser bueno, recuerdo.
No, no lo he hecho. El manual no especifica cómo determinar si el mercado está abierto o no.
El caso es que cuando el mercado "abre" el lunes, por ejemplo en un broker las cotizaciones empiezan a entrar a las 02:05 pero las transacciones no son aceptadas durante unos minutos y muestra "Mercado cerrado".
No sé si esto ayudará o no.
HORA_DE_INICIO_DEL_SÍMBOLO
Fecha de inicio del instrumento (suele utilizarse para los futuros)
No, no lo he hecho. La guía no dice específicamente cómo determinar si el mercado está abierto o no.
El caso es que cuando el mercado "abre" el lunes, por ejemplo en un broker las cotizaciones empiezan a entrar a las 02h.05, pero no se aceptan operaciones hasta pasados unos minutos, da "Mercado cerrado".
No sé si esto ayudará o no.
HORA_DE_INICIO_DEL_SÍMBOLO
Este es el symbol_start_time (normalmente utilizado para los futuros)
ElSymbolInfoSessionTrademuestra cuando se inicia la negociación yel SymbolInfoSessionQuote cuando llegan las cotizaciones.
ap: esto debería ayudar.
boolIsTradeAllowed(
const string symbol// símbolo
datetimetested_time//tiempo
);
Como siempre, las bicicletas.
La cuestión aquí es por qué esa entrada no pasa.
Después de que todas las variables de los parámetros tengan valores iniciales.
Y si se especifica el tamaño de las medidas en números
entonces el compilador se lo salta, ¿cuál es la trampa?
¿Puede el promotor comentar esto?
Roman, es la segunda vez que caes en una elemental falta de voluntad de leer la documentación.
Sólo unnúmero entero puede ser un índice de matriz. No se permiten matrices de más de cuatro dimensiones. La numeración de los elementos de la matriz comienza por 0. El último elemento de una matriz unidimensional se numera con 1 menos que el tamaño de la matriz, es decir, acceder al último elemento de una matriz de 50 enteros se verá como a[49]. Lo mismo ocurre con las matrices multidimensionales: una dimensión se indexa desde 0 hasta el tamaño de la dimensión-1. El último elemento de la matriz bidimensional del ejemplo sería m[6][49].
Las matrices estáticas no pueden representarse como series temporales, es decir, la función ArraySetAsSeries() que establece el acceso a los elementos de la matriz desde el final de una matriz hasta su inicio no es aplicable a ellas. Si quieres proporcionar acceso a un array como en las series temporales, utiliza un objeto array dinámico.
Si se accede fuera del array, el subsistema ejecutor generará un error crítico y la ejecución del programa se detendrá.
Y la documentación de mql4, si la memoria no me falla, dice claramente que las variables no deben usarse como tamaño de array.
Como siempre, las bicicletas.
La cuestión aquí es por qué esa entrada no funciona.
Después de todo, las variables de los parámetros, tienen valores iniciales.
Y si se especifica el tamaño de las medidas en números
Entonces el compilador se lo salta, ¿cuál es el truco?
¿Podría el promotor hacer algún comentario al respecto?
No soy un desarrollador, pero voy a comentar.
Para un array estático, el compilador tiene que asignar un cierto número de bytes en memoria ya en tiempo de compilación.
¿Cuánta memoria tiene que asignar el compilador si no conocemos la fila y la columna en el momento de la compilación?
Los valores iniciales sólo se utilizan si se omiten los parámetros al llamar. Los parámetros reales sólo se conocen en tiempo de ejecución.
Así que, sin trucos, aprende el idioma.
No, no es eso,SymbolInfoSessionTrademuestra cuando hay negociación ySymbolInfoSessionQuote cuando llegan las cotizaciones.
ap: esto debería ayudar.
boolIsTradeAllowed(
const string symbol// símbolo
datetimetested_time//tiempo
);
No creo que lo haga. Hay un tema especial aquí :https://www.mql5.com/ru/forum/40295
No lo he mirado del todo, sobre todo porque es para MQL4.
No creo que el servidor deba enviar cotizaciones de símbolos si el mercado está cerrado.
Mi robot no se ve realmente afectado por esto porque después de la "apertura" del mercado, cuando llegan los ticks, analiza la tendencia, sus retrocesos, y eso lleva algún tiempo. Durante este tiempo se abre el mercado.
Pero se interpone si queremos ejecutar manualmente algunas operaciones durante este tiempo. Si la ejecución se basa en el mercado, la solicitud queda pendiente hasta la apertura del mercado y se ejecuta naturalmente al precio actual.
La función directa que recibe el nombre del símbolo y devuelve verdadero/falso (mercado abierto/cerrado) está claramente ausente.