[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 556

 
只是我需要的条件不是(Ask<tmp || Ask>tmp),而只是一个微 不足道的条件 (Ask<=tmp)。 也就是说,只要在另一个方向上出现一个刻度......而且正好有一个循环)......我知道,真相就在附近))。
 
maryan.dirtyn >>:
в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.

那么同样的--同样的逻辑。在循环之前,我们把变量带到这样一个状态,在这个状态下,循环条件将为真。然后在每个循环迭代中,我们使用RefreshRates()刷新数据,并检查报价是否新鲜,然后执行一些操作并强行中断循环。如果我们想让位于循环下面的代码被执行,那么我们就用break命令来中断它。如果我们不希望它被执行,我们用命令return(0)中断EA的int start()函数。
 

我明白怎么做的逻辑......我不明白为什么没有一个设计能成功,还有几个人在尝试中沉入了深渊。

double tmp=Ask; while(Ask<=tmp) tmp=Ask; Print("Заработало");
 double tmp=0;  while(Ask<=tmp || tmp==0) { RefreshRates(); if(Ask>tmp) break;} Print("Заработало");
 
maryan.dirtyn >>:

я логику понимаю, как ето сделать.. я не понимаю почему не работает ни одна конструкция, еще несколько канули в бездну перебора вариантов


你必须闭上眼睛,想象在每个周期的迭代中会发生什么。

你的第一个选择。

节奏等于升。平等条件得到满足,所以循环进入了几乎无限次的迭代。因为即使有新的报价到来,也不一定能打破循环的真相条件。如果连续出现两到三次上升,我们可能会等到周期几乎是无限的......。

 

当MQL4教科书出来的时候,我翻看了一下,就没有再翻了--我不喜欢这本书的作者把while()循环放在任何地方。它给许多试图从这本书中学习MQL的人留下了印象。

告诉我你的专家顾问有这么可怕的任务,你不能没有这个循环?好吧,你看,要想让这个循环无限次地运行,只是失去控制,是多么容易的事情。在你的情况下,你不能不使用for()循环吗?或者通过编写一个单独的简单函数...?

 

最主要的是它能用......我已经厌倦了买一把掉落的刀。 我需要任何,哪怕是最优雅的解决问题的方法。

double tmp=Ask; 
                 while(Ask<=tmp) tmp=Ask; 
                                              Print("Заработало");
 
drknn >>:

Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.

Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...

我不是mql的新手,我已经掌握它两年了。 是的,我需要它,而我不时地回到教程,看看我是否打了哈欠)......你没有看到一只兔子吗? 但我看到了,它没有那么简单。
 
很抱歉打扰你,但这样一来,循环将是无限的。tmp应该成为静态的,其初始值明明高于Ask。或=0,如果我们使用建议的结构与OR。否则,Ask将永远是=tmp。
 
Svinozavr >>:
Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
问题很简单......当价格下跌时,不要买入,直到刻度线到了另一边......而且代码必须在一个地方循环,当价格下跌时,不要碰任何东西......。
 

只是不清楚为什么这里会有一个循环。在每一个 价格刻度 上检查,并根据实际情况采取行动。