[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 556
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.
Pues lo mismo, la misma lógica. Antes del bucle, llevamos la variable a un estado tal, en el que la condición del bucle será verdadera. Entonces en cada iteración del bucle refrescamos los datos usando RefreshRates() y comprobamos si la cotización es fresca, entonces realizamos alguna acción y rompemos forzosamente el bucle. Si queremos que se ejecute el código que se encuentra debajo del bucle, entonces lo rompemos con el comando break. Si no queremos que se ejecute, interrumpimos la función int start() del EA con la orden return(0)
Entiendo la lógica de cómo hacerlo... No entiendo por qué ninguno de los diseños funciona, algunos más han caído en el abismo de los intentos.
я логику понимаю, как ето сделать.. я не понимаю почему не работает ни одна конструкция, еще несколько канули в бездну перебора вариантов
Hay que cerrar los ojos e imaginar lo que ocurre en cada iteración del ciclo.
Su primera opción:
El tempo es igual a asc. La condición de igualdad se cumple, por lo que el bucle entra en un número casi infinito de iteraciones. Porque aunque llegue una nueva cotización, no es seguro que rompa la condición de verdad del ciclo. Un par o tres seguidos de ascensos descendentes y podemos esperar hasta que el ciclo sea casi infinito...
Cuando salió el libro de texto MQL4, lo hojeé y no volví atrás - no me gustó que el autor de este libro pusiera el bucle while() en todas partes. Dejó huella en muchas personas que intentaron aprender MQL con este libro.
¿Dime que tu Asesor Experto tiene una tarea tan terrible que no puedes prescindir de este bucle? Bien, ya ves lo fácil que es ejecutar este bucle durante un número infinito de iteraciones, sólo perdiendo el control. ¿No puedes prescindir del bucle for() en tu caso? ¿O escribiendo una función sencilla por separado?
Lo principal es que funcione... Estoy harto de comprar un cuchillo que se caiga. Necesito cualquier solución, incluso la más elegante, para el problema:
Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.
Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...
Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
No está claro por qué hay un ciclo aquí. Compruebe cada vez que se produzca un cambio de precio y actúe en función de la realidad.