所以4066的错误是MTF指数的典型问题,终端没有反馈其他TF的数据,你需要检查其他TF的数据的完整性。
Vitaly Gorbunov:
那么,错误4066是MTF用户的一个典型问题,终端没有抽到其他TF的数据,需要检查其他TF数据的完整性。
那么,错误4066是MTF用户的一个典型问题,终端没有抽到其他TF的数据,需要检查其他TF数据的完整性。
在给出建议之前,请仔细看看代码和我所写的内容。
该代码有一个错误检查和一个空数据检查。而当一个函数在没有错误的情况下返回不正确的数据时,它就是一个错误!
Alexey Kozitsyn:
也许我错过了什么,告诉我你在哪里检查历史的完整性,例如,在CheckCurrentHourOpenTime() 过程中
在给出建议之前,请仔细看看代码和我所写的内容。
该代码有一个错误检查和一个空数据检查。而当一个函数在没有错误的情况下返回不正确的数据时,它就是一个错误!
Vitaly Gorbunov:
也许我错过了什么,请告诉我你在哪里检查历史的完整性,例如,在CheckCurrentHourOpenTime() 过程中。
也许我错过了什么,请告诉我你在哪里检查历史的完整性,例如,在CheckCurrentHourOpenTime() 过程中。
你说的故事完整性是什么意思?
我说的是,在检索历史值时有一个检查错误的功能。每项功能中都有一个检查。在这里,它是。
//--- Проверяем, получено ли время открытия часового бара if(tempHourOpenTime==0 || err!=0) // Если время бара не получено return(false); // Возвращаем ложь
也就是说,如果收到零值或错误--时间不会被写入全局变量。你认为这还不够吗?
关键是SeriesInfoInteger()函数首先返回一个错误,但在下一次运行时却返回NO!而且它也没有返回正确的值!Alexey Kozitsyn:
你说这里没有错误是什么意思!?那么,为什么它会发出 "假 "的错误代码?它说历史上没有问题的地方是可以的...
再一次,这个函数并不检查历史的完整性它返回它能在其中找到的信息。在这个特定的案例中,它找到了终端关闭时要求的小时条。其余的历史还没有被加载。
要检查一个给定的TF的历史是否完全分页,只需使用一个函数。
bool IsTFDataReady(ENUM_TIMEFRAMES eTF) { ResetLastError(); iTime(NULL, eTF, 1); return GetLastError() == ERR_NO_ERROR; }
如果该函数返回false,说明所请求的TF的数据不完整。否则,它就是完整的。
Ihor Herasko:
要检查一个给定的TF的历史是否完全分页,只需使用一个函数。
如果该函数返回false,则所请求的TF的数据不完整。否则,它就是完整的。
你在定时器中检查过吗?你看到我评论了几行了吗?我检查了这个函数,它根本没有显示任何错误,也显示了不正确的数据。我再检查一下。
目标: 当启动指标时,在计时器中获取当前数据:周线、日线和小时线的开盘时间。然后把它们写在全局变量中,以便进一步使用。目前的时间框架是М1。
实施: 我们使用SeriesInfoInteger()函数获得条形图时间。
结果: 作为一个结果,如果终端持续运行了几个小时,例如,它关闭了一晚上,我们在它的第一次(一天)启动时得到这样的结果。
正如你所看到的,数据检索时间是2018.09.21 11:11,对于这个时间,我们得到一天的开放时间=2018.09.20(尽管它应该是2018.09.21),小时的开放时间=2018.09.20 16:00(尽管它应该是2018.09.21 11:00)。而终端返回的时间不过是它最后一次关闭时的数据。也就是说,无论终端是否被关闭,数据都会被缓存并返回。我明白,如果每次都返回错误#4066(请求的历史数据处于更新状态),直到数据被更新,但没有,返回的是ERROR数据!这个错误只返回一次,然后你就可以忍受它了。有一个明显的缓存错误。我请开发人员(@Slava)注意一下!我的意思是说,如果你想知道更多的信息,请联系我。
我重复一遍。如果在定时器中要求,将出现错误的数据!
终端版本: x64,1090。