datetime StartDt=iTime(Symbol(),PERIOD_CURRENT,Bars(Symbol(),PERIOD_CURRENT,iTime(Symbol(),TF_iDeltaP,0),iTime(Symbol(),PERIOD_CURRENT,0))-1);
datetime StopDt=iTime(Symbol(),PERIOD_CURRENT,1); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данныхint BarsGo=Bars(Symbol(),PERIOD_CURRENT,StartDt,StopDt);
if(StartDt>StopDt)BarsGo=0;
if(StartDt==StopDt)BarsGo=1;
if (BarsGo>0)
{
//Полный расчет с вычислениями - копирование массивов цен и прочие тяжелые функции
}
else
{
//Упрощенный расчет с присвоением эмпирических значений переменным
}
datetime StartDt=iTime(Symbol(),PERIOD_CURRENT,Bars(Symbol(),PERIOD_CURRENT,iTime(Symbol(),TF_iDeltaP,0),iTime(Symbol(),PERIOD_CURRENT,0))-1);
datetime StopDt=iTime(Symbol(),PERIOD_CURRENT,1); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данных
我已经为自己做了一个检查,但这个检查是为了绕过这个函数的错误,帮助中完全没有说需要检查,这意味着它应该是内置的。
然后,你说的是指标检查,而我是用Bars来计算正确的柱状体开始时间,因为iBarShift在我看来只适合于外汇,在外汇市场上,由于清算和交易时段 不是一整天,历史记录不会经常出现故障。
而你的验证在哪里?为什么要引入一些变量,如果(当你碰撞历史或改变历史)你只需要完全重新计算指标。这通常是从 "0 "到 "rate_total-1 "进行。
而你的支票在哪里?而且,如果你只是需要完全重新计算指标(当你交换历史或改变历史时),你为什么要输入一个变量。通常情况下,它是从 "0 "到 "rate_total-1 "进行的。
我的问题与指标或历史分页没有关系。这里有一段代码
在一般情况下,当打开一个新的条形图 时,当条形图的开始日期大于当前TF上的零条形图的移动量时,就会出现这个问题。这不是辩护,而是检测代码中的错误的障碍!这是不可能的。
此外,如果日期重合,返回数字2是完全不符合逻辑的--这里的推理是什么?
FORTS上酒吧的开始时间可能不一致,这导致了计算的错误,例如,一个酒吧不是在14:00开盘,而是在14:05开盘--我也遭遇了这种情况。
也许程序员开始是按照文档中所说的方式工作的,但后来决定最好是返回'之间'而不是'从'和'到'所示的日期,但文档中没有纠正这种描述。实际上,这并不是很有必要。
我甚至没有FORTS的演示。我不能检查它。
也许他们最初是按照文档中的描述做的,但后来决定最好是返回 "之间 "的日期,而不是 "从 "和 "到 "的日期,但文档中的描述没有得到纠正。但他们并没有修复描述。
我甚至没有FORTS的演示。我不能检查它。
怎么可能是不必要的,我猜不出来,如果是错误,以后会改正的,那么代码就不会再工作了,我将会在很长一段时间内寻找错误......但Artem认为这不是一个错误,并没有在essence....,也没有写任何东西。
似乎在MQ的模拟账户 上,人们连接到FORTS...
怎么可能不是呢,我猜不出来,如果是错误,以后会改正的,那么这个代码就不会再工作了,我就会在关键的时候寻找错误......但Artem认为这不是一个错误,并没有在essence....,也没有写任何东西。
似乎人们正在从MQ连接到FORTS的模拟账户上...
好吧,如果你现在足够小心,不能把开始时间和结束时间弄错,那么就没什么好怕的。让他们统治。
我对指标或历史分页没有问题。这里有一段代码
一般来说,当打开一个新条形图 时,当条形图的开始日期与当前TF上的零条形图相差超过1条时,问题就会出现。对iTime()、Bars()返回的内容没有检查
你应该有。你真的应该这样做。在帮助中查看 - iTime()和Bars()返回什么?那么注释中是怎么说的呢?
好吧,如果你现在足够小心,不能把开始时间和结束时间弄错,那就没什么好怕的了。让他们统治。
我只是不喜欢坐着被动地等待,而且我被禁止具体询问开发者--这个问题原本是针对他们的。
对iTime()、Bars()返回的内容没有检查。
嗯,你应该这样做。你真的应该这样做。在帮助中查找--iTime()和Bars()返回什么?那么注释中是怎么说的呢?
在代码中做一次这些检查就够了,还是应该在每个函数调用 之后/之前做这些检查?
建议做什么样的检查,对于当前的酒吧/历史?什么是最好的方法?
我怎样才能找到这条信息的原因?
在代码中做一次这些检查就够了,还是应该在每个函数调用 之后/之前做这些检查?
你建议做什么样的检查,对于目前的酒吧/历史?什么是最好的方法?
你不知道如何检查返回值是否为零?而且不知道如何在OnCalculate()中退出,返回值为0?你有没有试过在一个网站上搜索信息?