Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 273

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
int tip=OrderType();
if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
Ya se ha dicho que la segunda línea de este fragmento contiene un error: Antes de llamar a la función OrderType(), el pedido debe ser seleccionado mediante la función OrderSelect().
Hay un error en la línea 3: Pero ¿hay algún pedido con el número 1? Si el número mínimo fuera 1, es decir, la cuenta comienza con 1, entonces el número máximo sería igual al número (que haya 5 pedidos en total: números de pedido 1, 2, 3, 4, 5). Pero los pedidos están numerados desde 0 - ponga el cursor en OrdersHistoryTotal y pulse F1 para ver un ejemplo. ¿Cuál es el número máximo de pedidos?
Antes sugeriste dividir la fecha del mes por 7 y redondear, lo que se hace en la segunda tabla.
No entiendo su algoritmo.
Esto es lo que estoy pensando:
1. Determine el día de la semana del primer día del mes.
2. Averigua cuántos días faltan para el final de la semana (era del miércoles (3) al lunes 7-3 = 4).
3. El 5º día - el comienzo de la segunda semana
4. entonces en el bucle, buscamos una semana, si el número cae dentro del rango de 5 + 7 * x a 5 + 7 * (x +1), donde x - número de semana menos uno, entonces hemos encontrado la semana
Pero es complicado, ¿quizás haya una forma más fácil?
Alexey, estamos hablando de cosas diferentes. El problema no era determinar qué semana del mes es el número del mes, sino el primer día de la semana con este nombre en el mes. Se trata de tareas diferentes y, en consecuencia, de soluciones diferentes.
Durante 63 años todavía no puedo averiguar cómo calcular el número de semana en el mes. Por ejemplo, en Rusia el lunes se considera el primer día de la semana. Si el mes comienza el domingo, ¿cómo se cuenta el lunes? ¿Ha comenzado la segunda semana? ¿O qué? La pregunta es retórica, no es necesario iniciar una polémica al respecto.
Alexei, estamos hablando de cosas diferentes. El problema no era determinar en qué semana del mes está el número del mes, sino si es el primer día de la semana con ese nombre en ese mes. Se trata de tareas diferentes y, en consecuencia, de soluciones diferentes.
Desde hace 63 años todavía no entiendo cómo contar el número de la semana en el mes. Digamos que en Rusia el primer día de la semana es el lunes. Si el mes comienza en domingo, ¿cómo se cuenta el lunes? ¿Ha comenzado la segunda semana? ¿O qué? La pregunta es retórica, no hay necesidad de iniciar una polémica al respecto.
Ya veo. Es una pregunta definitiva para mí...
Alexei, estamos hablando de cosas diferentes. El problema no era determinar en qué semana del mes está el número del mes, sino si es el primer día de la semana con ese nombre en ese mes. Se trata de tareas diferentes y, en consecuencia, de soluciones diferentes.
Durante 63 años todavía no puedo averiguar cómo calcular el número de semana en el mes. Por ejemplo, en Rusia el lunes se considera el primer día de la semana. Si el mes comienza el domingo, ¿cómo se cuenta el lunes? ¿Ha comenzado la segunda semana? ¿O qué? La pregunta es retórica, no hay necesidad de iniciar una polémica al respecto.
Ya se ha dicho que la segunda línea de este fragmento contiene un error: Antes de llamar a la función OrderType(), el pedido debe ser seleccionado mediante la función OrderSelect().
Hay un error en la línea 3: Pero ¿hay algún pedido con el número 1? Si el número mínimo fuera 1, es decir, la cuenta comienza con 1, entonces el número máximo sería igual al número (que haya 5 pedidos en total: números de pedido 1, 2, 3, 4, 5). Pero los pedidos están numerados desde 0 - ponga el cursor en OrdersHistoryTotal y pulse F1 para ver un ejemplo. ¿Cuál es el número máximo de pedidos?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
¿Es correcto ahora?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) - так какой наибольший номер ордера?
int tip=OrderType();
¿y ahora está bien?
escribir un script y después de cada operador imprimir la información + GetLastError() con Alert() - ver el script de ejemplo anterior
pero es mejor tomar el código de error de la variable _LastError para imprimirlo, de lo contrario puede destruir la lógica con un ligero "debug print"
GetLastError() al mismo tiempo hace una cosa poco obvia para GetXXX() - cambia su estado interno restableciendo el código de error a 0.
sólo para la impresión es mejor tomar el código de error de la variable _LastError, de lo contrario es posible destruir la lógica por un ligero "debug print"
GetLastError() al mismo tiempo hace una cosa poco obvia para GetXXX() - cambia el estado interno, restableciendo el código de error a 0.
bueno, es cuestión de gustos - o bien se almacena el código de error en una variable y se reinicia el error o se almacena en _LastError para su uso posterior
aquí está el algoritmo de arriba para leer de abajo hacia arriba