这段RSI的代码怎么读呀?
int start(){
int i,counted_bars=IndicatorCounted();
double rel,negative,positive;
if(Bars=RSIPeriod) i=Bars-counted_bars-1;</strong>
//--这句意思:如果已加载的K线为大于等于RSIPeriod时(已加载的K线已经超过RSIPeriod数时),i的值等于Bars-counted_bars-1. 请教:这句是否跟前面两句\" i+Bars-RSIPeriod-1\"重复了?是不是可以不需要这句呀,因为前一句时i已经=Bars-RSIPeriod-1了嘛。另外,这里的counted_bars它是会自动往后计算的么,它的值是会自动变化的么?
while(i>=0)
{
double sumn=0.0,sump=0.0;
if(i==Bars-RSIPeriod-1)
{
int k=Bars-2;
while(k>=i)
{
rel=Close-Close;
if(rel>0) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
//这一段,到这里我都还能理解。意思为计算当i==Bars-RSIPeriod-1的情况下,第i这条K线的positive和negative的值的情况。当执行完K=i之后,累计所有以计算额度值,并跳出循环。
?疑问:这里的i并没有出现i++或者i--的情况,那也就是说这个循环就只是计算从k=bars-2一直到k=i时,第 i根k线的positive和negative数据(此时i==Bars-RSIPeriod-1)。也就是说,这个循环只能得到当i>RSIPeriod时的第一根K线(i==Bars-RSIPeriod-1)的数据了?
else //接下来这段我就完全不明白了,这里esle对应上面的if语句应为if(i==Bars-RSIPeriod-1),我这里不明白在什么情况下 会出现i 不等于!==Bars-RSIPeriod-1 的情况?(因为这里并没有出现i++或者i--之类的情况,i的值怎么会变呢?)
{
rel=Close-Close;
if(rel>0) sump=rel;
else sumn=-rel;
positive=(PosBuffer*(RSIPeriod-1)+sump)/RSIPeriod;
negative=(NegBuffer*(RSIPeriod-1)+sumn)/RSIPeriod;
}
PosBuffer=positive;
NegBuffer=negative;
if(negative==0.0) RSIBuffer=0.0;
else RSIBuffer=100.0-100.0/(1+positive/negative);
i--;
}
//----
return(0);
}
我是个新手,还在学习当中,这礼拜下班后连续的看了bull老大的教学视频,今天正好看到第12课,刚好讲到如何解读RSI指标这一课,课后复习我发现对这些代码解读不到位,几经考虑还是决定发上来,请教各前辈。希望最好能把 counted_bars和 ifelse循环这两个部分能彻底弄清楚是怎么运作的。
谢谢了。
老大,我好崇拜你哟 我感觉雷雨趋势不错,挺好的ea! 今天无聊来逛逛 既然来了,就留个脚印 原来这样也可以 好人一生平安 支持一下吧 赚钱,赚积分。顶.... 想学EA,拜师,谁收了我吧