任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 43

 

帮助我写一个函数,返回窗口中可见的条形图中的最大ATR值。我在互联网上搜索了一遍,没有找到类似的东西。

谢谢你。

 
dr.Vasgenich :

帮助我写一个函数,以获得窗口中可见的条形图中的最大ATR值。我在互联网上搜索了一遍,没有找到类似的东西。

谢谢你。

/

外部int p = 4; // ATR周期

//------

int start()

{

int i;

双M。

while( i < WindowBarsPerChart() - p )

{

double a = iATR( NULL, 0, p, i ) 。

如果( m < a )

{

m=a。

}

i++;

}

警报( " 可见的条数 的最大ATR值是", m / Point ); //

/////

return(0);

}

 

Boeing747 谢谢你。我应该马上在这里写信。

因此,我的版本中的函数的最终变体看起来如下

double ATR_Max() {
int i;
双M。
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i ) 。
if ( m < a ) {
m=a。
}
i++;
}
Alert( " 可见条数的最大ATR值是- ", m )。
return(m)。
}

 
dr.Vasgenich :

Boeing747 谢谢你。我应该马上把它写在这里。

因此,在我的版本中,函数的最终变体看起来是这样的

double ATR_Max() {
int i;
双M。
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i ) 。
if ( m < a ) {
m=a。
}
i++;
}
Alert( " 可见条数的最大ATR值是- ", m )。
return(m)。
}

我一定是在 while( i < WindowBarsChart() - p ) 中犯了一个错误。

最有可能的是,iATR( NULL, 0, p, i );函数计算了图表上所有条形的值,你可以,或者说应该

改为 while( i < WindowBarsChart())。我从未使用过iATR();我应该找个时间试试。

实际上,你可以不使用iATR()函数来编写你的函数,可以说是以纯粹的形式。

 
Boeing747 :

我一定是在 while( i < WindowBarsChart() - p ) 中犯了一个错误。

最有可能的是,iATR( NULL, 0, p, i );函数计算了图表上所有条形的值。

改为 while( i < WindowBarsChart())。我从来没有使用过iATR()函数,我应该找个时间试试。

基本上,我可以不使用iATR()来写你的函数,可以说是纯粹的形式。


我现在也想,这个时期和它没有关系。移除它可能会更好。

你不能通过一个数组来做吗?在一个数组中收集窗口中所有APR的值,然后用这个函数找到最大值--ArrayMaximum 我的知识恐怕不够用。




 
dr.Vasgenich :

我现在一直在想,这个时期和它没有关系。移除它可能更好。

这不能通过一个数组来完成吗?在一个数组中收集窗口中所有APR的值,然后用这个函数找到最大值--ArrayMaximum 恐怕我的知识还不足以应付这个问题。




是的,你可以在循环中滚动iATR();来给数组打分,然后使用ArrayMaximum 来提取ATR的最大值。 但是仍然会得到但愿,因为仍然需要像第一个选项那样使用循环来给数组打分。但是在第一个版本中,最大值是在滚动循环的过程中计算的,这比使用ArrayMaximum选项要经济得多。你不需要了解太多。 你可以在教科书或参考书中找到关于ArrayMaximum的详细信息。
 
Boeing747 :
是的,可以在一个循环中滚动iATR();,用它来给数组评分,然后用ArrayMaximum来提取ATR的最大值。但同样的,它变成了特别使用循环来给数组评分,就像在第一个变体中一样。你不需要任何特殊知识。 你可以在教科书或参考书中找到关于ArrayMaximum的详细描述。

谢谢你,我明天会试着检查。还有一个问题,我怎样才能在这个函数中节省测试人员的资源,以便在一个新的条形图出现后计算最大值,而不是在每一个刻度线上 计算?
 
dr.Vasgenich :

谢谢你,我明天会尝试检查操作。还有一个问题,我如何在这个函数中保存测试者的资源,以便在一个新的条形图出现后计算最大值,而不是在每一个刻度线上计算?

你可以先试试这种方式

在全球范围内宣布t

并在循环中写入

如果( t != Time[0])

{

t = 时间[0]。

//计算ATRmax的循环

}

这样一来,循环中的计算将在一个新条形 的开口处进行一次。

 

Boeing747, dr.Vasgenich, 伙计们,你们不能使用 "SRC "按钮吗,或者你们能接受吗?

 
Zhunko :

Boeing747, dr.Vasgenich, 伙计们,你们不能使用 "SRC "按钮吗,或者你们能接受吗?

我总是忘记使用 "SRC "按钮,这一定是一种习惯。 60岁时,很难改变主意。 我明天会试着使用你的按钮。