[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 556
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.
Beh lo stesso - stessa logica. Prima del ciclo, portiamo la variabile ad uno stato tale per cui la condizione del ciclo sarà vera. Poi ad ogni iterazione del ciclo aggiorniamo i dati usando RefreshRates() e controlliamo se la quotazione è fresca, quindi eseguiamo qualche azione e interrompiamo forzatamente il ciclo. Se vogliamo che il codice che si trova sotto il ciclo venga eseguito, allora lo interrompiamo con il comando break. Se non vogliamo che venga eseguito, interrompiamo la funzione int start() dell'EA con il comando return(0)
Capisco la logica di come farlo... Non capisco perché nessuno dei disegni funziona, alcuni altri sono caduti nell'abisso del tentativo.
я логику понимаю, как ето сделать.. я не понимаю почему не работает ни одна конструкция, еще несколько канули в бездну перебора вариантов
Bisogna chiudere gli occhi e immaginare cosa succede in ogni iterazione del ciclo.
La tua prima opzione:
Il tempo è uguale a asc. La condizione di uguaglianza è soddisfatta, quindi il ciclo entra in un numero quasi infinito di iterazioni. Perché anche se arriva una nuova citazione, non è certo che rompa la condizione di verità del ciclo. Un paio o tre di fila di ascoli calanti e potremmo aspettare che il ciclo sia quasi infinito...
Quando è uscito il tutorial MQL4, l'ho sfogliato e non ci sono tornato - non mi è piaciuto il fatto che l'autore di questo libro di testo ha messo il ciclo while() ovunque. Ha lasciato un segno su molte persone che hanno cercato di imparare MQL da questo libro.
Dimmi che il tuo Expert Advisor ha un compito così terribile che non puoi fare a meno di questo ciclo? Bene, vedete come è facile eseguire questo ciclo per un numero infinito di iterazioni, perdendo solo il controllo. Non puoi fare a meno del ciclo for() nel tuo caso? O scrivendo una funzione semplice separata...?
L'importante è che funzioni... Sono stufo di comprare un coltello che cade. Ho bisogno di qualsiasi soluzione, anche la più elegante, al problema:
Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.
Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...
Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
Non è chiaro perché ci sia un ciclo qui. Controlla ad ogni tick di prezzo e agisci sulle realtà.