maryan.dirtyn>>: в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.
Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.
Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...
Svinozavr>>: Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.
那么同样的--同样的逻辑。在循环之前,我们把变量带到这样一个状态,在这个状态下,循环条件将为真。然后在每个循环迭代中,我们使用RefreshRates()刷新数据,并检查报价是否新鲜,然后执行一些操作并强行中断循环。如果我们想让位于循环下面的代码被执行,那么我们就用break命令来中断它。如果我们不希望它被执行,我们用命令return(0)中断EA的int start()函数。
我明白怎么做的逻辑......我不明白为什么没有一个设计能成功,还有几个人在尝试中沉入了深渊。
я логику понимаю, как ето сделать.. я не понимаю почему не работает ни одна конструкция, еще несколько канули в бездну перебора вариантов
你必须闭上眼睛,想象在每个周期的迭代中会发生什么。
你的第一个选择。
节奏等于升。平等条件得到满足,所以循环进入了几乎无限次的迭代。因为即使有新的报价到来,也不一定能打破循环的真相条件。如果连续出现两到三次上升,我们可能会等到周期几乎是无限的......。
当MQL4教科书出来的时候,我翻看了一下,就没有再翻了--我不喜欢这本书的作者把while()循环放在任何地方。它给许多试图从这本书中学习MQL的人留下了印象。
告诉我你的专家顾问有这么可怕的任务,你不能没有这个循环?好吧,你看,要想让这个循环无限次地运行,只是失去控制,是多么容易的事情。在你的情况下,你不能不使用for()循环吗?或者通过编写一个单独的简单函数...?
最主要的是它能用......我已经厌倦了买一把掉落的刀。 我需要任何,哪怕是最优雅的解决问题的方法。
Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.
Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...
Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
只是不清楚为什么这里会有一个循环。在每一个 价格刻度 上检查,并根据实际情况采取行动。