指标问题 - 页 6

 

for(i=0; val1==val3; i++)

这段代码留下了无尽循环的可能性,IMO。

 
我得再考虑一下,我的眼睛又看花了。

我明天再来检查
 
ubzen:

for(i=0; val1==val3; i++)

这段代码留下了无尽循环的可能性,IMO。

真的,看起来它应该循环直到val1不是val3

如果val3=0并且val1=0,它应该循环直到得到一个值

ii val3=iFractal(瞬间) 然后val1应该循环直到val1=0(这就是我的问题所在)

它确实是一种无尽的循环或锁定点。虽然我确实得到了一个打印语句来返回val1的iFractal值,但我并不确定这是在哪里
我必须对其他人发布的测试内容进行更多的实验,但我认为你是对的

也许这并不完全符合我的意图,但这是我想实现的概念,只是递增到之前的分形

我将继续努力。
 
diostar:

说实话,这是我第一次看到这种情况,对于循环终止条件。它是一个棘手的问题...

它似乎部分工作,这是在欺骗我,因为我的打印语句返回一个值,但我认为问题是,只要val3实际上>0,那么val1就会增量到一个0的值,而不是真正的之前的分形

,所以理论上看来,只要val3==0,它就只能工作一次,然后也只有这样,i++才会向后增量,直到val1不再==val3,这是我想做的,但是如果val3==一个值,那么val1就会增量到一个0的值,在这里它不再==val3,然后循环就结束。
这毕竟不是我想要的,所以又回到了画板上,LOL

谢谢大家

 
RaptorUK:

当你得到一个iFractal时,其值是>0,是吗?

因此,举例来说,如果你想知道上一个和下一个iFractals的位置,只需做这样的事情 . . .

我想我明白了,现在如果我能想出如何产生以前这些位置的值的话

我想我可以解决这个问题,我希望。 他他

谢谢
 

0号蜡烛不可能是分形,所以val3将永远是0,那么为什么不使用. . .

for(i=0; val1==0; i++)

. . . . 而去掉val3。

不过在这种情况下,我更喜欢用while,似乎更适合你要做的事情。

 
RaptorUK:

当你得到一个iFractal时,其值是>0,是吗?

因此,举例来说,如果你想知道上一个和下一个iFractals的位置,只需做这样的事情 . . .

这似乎可以告诉我最后一个iFractal的位置,但不是之前的两个iFractal

例如:

2011.10.07 09:05:36 sup_res EURUSD,M5:LastUPPER Fractal at 6 Last LOWER Fractal at 0

所以它会显示当前的UPPER高分形并打印出位置,这很好
我也可以将val1=i改为val1=iFractal(NULL, 0, MODE_UPPER,i),这样就可以得到最后一个iFractal的值
所以我在理解上有了一些进展,但是我仍然需要重新编码,以便回到上一个iFractal

一旦一个iFractal形成,那么这个while语句将继续打印当前形成的和最新的iFractal这是很酷的
所以,让我们说一个新的iFractal形成,我想从while语句中引用当前的分形,这实际上是以前的1,而不是现在的
所以让我们说iFractal LOWER_MODE现在形成,我想引用以前的iFractal UPPER_MODE并比较这些值。

但从你的建议来看,我想我也许能解决这个问题,这些都是很好的想法,对我帮助很大。
随着我越来越熟悉代码的工作原理,我真的开始喜欢用我知道的东西来实现我的交易理念。

谢谢
 
Agent86:
这似乎可以告诉我最后一个iFractal的位置,但不能告诉我之前的两个iFractal的位置

我的代码中存在一个错误。. .

while( val1==0 && val2==0)

should be . . .

while( val1==0 || val2==0)
 
RaptorUK:

0号蜡烛不可能是分形,所以val3将永远是0,那么为什么不使用. . .

. . . . 而去掉val3。

不过在这种情况下,我更喜欢用while,似乎更适合你要做的事情。

好的,我把val3 shift改为3,但我也不太喜欢这个,我会做一些修改,谢谢。
 
if(val1 > 0 && faster > slower)
      {
       Print (val1, " val1");
       for(i=0; val1 || val2==0; i++)
         {
         if(iFractals(NULL, 0, MODE_LOWER, i) > 0 && val2 == 0)
         val2 = iFractals(NULL, 0, MODE_LOWER, i);
         Print (" Last LOWER Fractal at ", val2);
        
         }

当在if(语句)中添加for(语句)时,你可以添加额外的if(语句)并引用循环中的值吗?

这些额外的if(语句)是否必须出现在循环内,或者你可以在循环外仍然引用循环中的值,如val2?

请告知对于其他代码块内的循环,什么是正常的?如何提取循环中的值?

谢谢