//+------------------------------------------------------------------+//| Average True Range |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,limit;
//--- check for bars countif(rates_total<=ExtPeriodATR)
return(0); // not enough bars for calculation//--- preliminary calculationsif(prev_calculated==0)
{
ExtTRBuffer[0]=0.0;
ExtATRBuffer[0]=0.0;
//--- filling out the array of True Range values for each periodfor(i=1;i<rates_total && !IsStopped();i++)
ExtTRBuffer[i]=MathMax(high[i],close[i-1])-MathMin(low[i],close[i-1]);
//--- first AtrPeriod values of the indicator are not calculateddouble firstValue=0.0;
for(i=1;i<=ExtPeriodATR;i++)
{
ExtATRBuffer[i]=0.0;
firstValue+=ExtTRBuffer[i];
}
//--- calculating the first value of the indicator
firstValue/=ExtPeriodATR;
ExtATRBuffer[ExtPeriodATR]=firstValue;
limit=ExtPeriodATR+1;
}
else limit=prev_calculated-1;
//--- the main loop of calculationsfor(i=limit;i<rates_total && !IsStopped();i++)
{
ExtTRBuffer[i]=MathMax(high[i],close[i-1])-MathMin(low[i],close[i-1]);
ExtATRBuffer[i]=ExtATRBuffer[i-1]+(ExtTRBuffer[i]-ExtTRBuffer[i-ExtPeriodATR])/ExtPeriodATR;
// ExtATRBuffer[i]=(ExtATRBuffer[i-1]+(ExtTRBuffer[i]-ExtTRBuffer[i-ExtPeriodATR])/ExtPeriodA)*4;
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
你好,请不要太责备我,我只是在学习这门语言和一般的OOP。
你能告诉我为什么当我试图把分配给ExtATRBuffer[i]=.... 的整个公式相乘时当我乘以1时,图表上显示的是实际值,当我乘以小数点后的0.5时,一些数值在零线上下波动。
我应该怎样做才能避免错误?
我需要得到实际的APR值乘以一个可变的常数 ...
感谢所有回复的人!!!。
谢谢大家!帮助理解:测试错误:2019.12.04 14:14:40.097 TestGenerator:不匹配的数据错误(2019.01.21 23:30的高值0.71570没有从最低时间段达到,高价0.71560不匹配。)
加载被测仪器的历史记录(F2)。
加载被测仪器的历史记录(F2)。
谢谢您的关注!已加载,但现在的摘要是:2019.12.04 16: 00: 20.408 TestGenerator: 不一致的数据错误(2016.03.30 23: 45时超过了体积限制409)。
谢谢您的关注!已下载,但现在的摘要是:2019.12.04 16: 00: 20.408 TestGenerator: 不一致的数据错误(2016.03.30 23: 45时超过了体积限制409)。
对于每个时间段,下载历史记录。
对于每个时间段,下载历史记录。
这个600美元的顾问,再次做了测试,没有交易。把它交给你,如果你解决了问题,请发送设置
尝试使用FileOpen()打开一个不存在的文件...
我读过这方面的文章。唯一的线索可能在于这句话:"要打开的文件的 名称,可能包含子文件夹。如果该文件被打开用于写入,如果没有指定的子文件夹,将被创建。" 但即使在这里说了一些子文件夹,也许它是指在这个目录中的这些子文件夹中,文件将被创建,因为它不是正常写入的。你可以正常写入,如果没有文件,将被创建。我又不是科学家,不可能猜出所有的细节。我甚至仍然不明白许多功能是如何工作的,因为没有功能代码或适当的描述。你知道,他们扔给你一块骨头,而你自己明白它是否可以食用。
我读过这方面的文章。唯一的线索可能在于这句话:"要打开的文件的 名称,可能包含子文件夹。如果该文件被打开用于写入,如果没有指定的子文件夹,将被创建。" 但即使在这里说了一些子文件夹,也许它是指在这个目录中的这些子文件夹中,文件将被创建,因为它不是正常写入的。你可以正常写入,如果没有文件,将被创建。我又不是科学家,不可能猜出所有的细节。我甚至仍然不明白许多功能是如何工作的,因为没有功能代码或适当的描述。 你知道,你抛出某种骨头,你就会明白它是否可以食用。
你如何在早晨迎接太阳?你研究过所有的天文学吗?
标准函数并不是为了弄清其内部工作原理。他们是为了使用它们。而描述是在文档中。
我告诉你使用FileOpen()来创建一个新文件。但是没有......,你必须做一个十页的合唱,而不是仅仅 "拿去用"。嗯,有时你可以对那些帮助你的人说 "谢谢"。
你好。
难道没有人要对《图片报》的帖子 说些什么吗?
也许把它放在一个新的主题里是有意义的,这样会有更多人看到它?如果是这样,就请版主把它贴出来...或者自己创造一个?