//+------------------------------------------------------------------+//| Search position of an element in a sorted list |//+------------------------------------------------------------------+
CObject *CList::QuickSearch(CObject *element)
{
int i,j,m;
CObject *t_node=NULL;
//--- checkif(m_data_total==0)
return(NULL);
//--- check the pointer is not needed
i=0;
j=m_data_total;
while(j>=i)
{
//--- ">>1" is quick division by 2
m=(j+i)>>1;
if(m<0 || m>=m_data_total)
break;
t_node=GetNodeAtIndex(m);
if(t_node.Compare(element,m_sort_mode)==0)
break;
if(t_node.Compare(element,m_sort_mode)>0)
j=m-1;
else
i=m+1;
t_node=NULL;
}
//--- resultreturn(t_node);
}
那么这个问题。如果指标在M15上运行。一个新的蜡烛形成了。当要求提供M15和M30的数据时,它们是否应同时提供?
是的。
在创建一个指标(将其纳入正常的处理周期)并进入正常的tick处理周期(ontik)后,数据将很有可能被获得。但不要忘了,由于可能有其他符号的历史下载,所以没有保证。
就是说,要经常检查指标数据请求的结果。如果你要求ontika中的数据,而它是不可用的,那么立即退出,在下一次打勾时检查。
不要犯典型的错误,"一切都准备好了,我不考虑数据交付和计算的技术过程,它不应该与我有关,我总是很幸运"。始终实现懒惰的初始化逻辑和数据控制。
请确保在一个空的图表基础上测试你的程序。通常只要用手动清除的历史数据库重新启动终端,就可以通过错误的索引或除以0得到各种访问错误。
如果你在一个符号上得到了一个M15条,那么在同一个符号上肯定有一个M30条。
是的。
另一个问题。当从EA和指标中调用BarsCalculated()函数 时,其行为是否相同?
有什么问题吗?
只是我用不同的信息进行了实验。根据我的理解,它们应该以同样的方式工作。但他们没有。由于今天是星期天,没有办法查看当前时间。但它们在测试器中的工作方式也不同。这里有两个代码样本。要点如下。我们正试图从七个TFs获得数据。我们(顾问和指标)不是从最重要的TF开始。例如,从М15.如果当前的tick已经同步形成了一个新的蜡烛,并通过BarsCalculated()接收这个蜡烛的数据--那么我们就用BarsCalculated()记录计算的条数和当前蜡烛的时间。见代码中的细节。
该指标。
第一次打勾。
对于每个TF,都会形成一个新的蜡烛。但在TF M1, M5, M15上,BarsCalculated()返回0。但在TF M30, H1, H4, D1上,它返回-1。这里我们有一个问题,为什么该功能的工作方式不同?因此,如果我们在M30 TF上运行,对于M1、M5、M15、M30 TF,BarsCalculated()返回0,而对于H1、H4、D1 TF,它分别返回-1。由此我们可以得出结论,对于较高的TF,数据最初是不可用的。
第二个勾。
根据代码逻辑,同步,即写参数(都是根据样本的日志)。
第三次和下一次打勾。
我们通过TF M30, H1, H4, D1的指标获得一个新条形。虽然,这些数据似乎已经得到了。结果发现,TF上的数字,比当前的数字大了1。非常奇怪的行为。在未来(使用目前的例子),我们将无法获得同步性。
专家顾问。
第一次打勾。
立即实施同步化。BarsCalculated()的新值是与新蜡烛的形成同步接收的。
第二次及以后的抽查。
函数的逻辑行为。一切都是同步的。
在测试器中按点运行这两个例子,你会自己看到。目前该函数的行为对专家顾问和指标来说是不同的。另外,来自指标的数据对于较高的时间框架来说是延迟的。因此,我认为,当请求提供M15和M30的数据时 ,它们不会同时提供 。实际数据绝对不是这样的!
如果我弄错了,请告知如何正确地从旧的TF中获得指标数据?谢谢你。
为什么要给比较 公司打两次电话?这可能是一个昂贵的操作(如果我们需要检查大型对象的平等性,而不是某些字段的等价性)。
人们可以在第一次调用Compare 后简单地保存结果。
图表底部的这些图标是从哪里来的?
图表上没有指标,但每次都会出现图标。 我已经厌倦了删除它们。 我怎样才能把这玩意关掉? 我在终端设置中找不到任何关于它的信息。
图表底部的这些图标是怎么来的?
图表上没有指标,但每次都会出现图标。 我已经厌倦了删除它们。 我怎样才能把这玩意关掉? 我在终端设置中找不到与之相关的东西。
这些是 "日历 "标签中的事件。要删除:在 "日历 "选项卡内点击右键->"在图表上显示"->"删除所有事件"。
P.S.并取消勾选 "自动更新 "选项。现在,新的日历事件将不会显示在图表上。
以任何专家顾问(来自MetaQuotes的例子)为例,在某一时期以相同的参数在Build 975下运行它。
获得结果,即收益率曲线图和交易表。
现在,在相同的时期和相同的参数下,在build 1010下运行相同的EA,你会得到完全不同的结果......。
P.S. Metatester是32位的
大家好)请帮助我启动定时器。
int OnInit()
{
bool setTimer=EventSetTimer(60)。
Print("setTimer")。
}
空白的OnTimer()
{
Print("passing time")。
}
问题:为什么它不工作?让我大跌眼镜......(((。