实时的提基 - 页 21

 
Aleksey Mavrin:

这就是今天的照片。当然,我们没有检查OnBook是否与Tick匹配,而只是取了下一个,希望如果OnTick领先于OnBook,那么相应的就会是相同或稍晚的。

当然,在没有额外检查的情况下,最大值是没有指标的,或过冲或真正的OnBook地方慢。


但这是一个能解释的人?为什么部署了这么多的OnTicks,而没有一个OnBook适合它们之间?


因为你自己写道:"代码是曲折的,也许是歪的,我看一下结果。"

//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{ 
  if((Mode != USE_BOOK) || (symbol != Symbol())) return;
  TimeArrayBook[curBook]=GetMicrosecondCount();
  curBook++
 }
void OnTick()
{
  if(Mode != USE_TICK) return;
  TimeArrayTick[curTick]=GetMicrosecondCount();
  curTick++
}

而且你根本不需要计时器...

 
但我不知道负责人是否对他的问题的答案感到满意。
 
prostotrader:

因为你自己写道:"代码是曲折的,也许是歪的,我看一下结果。"

而且你根本不需要计时器...

你没有发现原因是由于代码中的错误。或者你没有理解这个问题。我已经在开机功能中输出了一个标记,没有计时器,但还是有一堆刻度,中间没有OnBooks。
 
Aleksey Mavrin:
你没有发现原因是由于代码中的错误造成的。或者你没有理解这个问题。我也只是在开机功能中打印了一个标记,没有使用计时器,但仍然有一群人在嘀嗒声中没有开机书。

1.我完全不清楚你是如何运行EA(s)的

2.有两个由Andrei和我自己写的代码,它们是

它们相互印证那么,为什么要为你的事情费心 呢?

3.安德烈和我都在衍生品市场上运行过EA,而你在股票市场上运行过。

也许该终端在基金上有一些缺陷(甚至没有在股市上运行MT5)。

就个人而言,在基金方面,我通过快速交易系统进行交易。

 
prostotrader:

1.我完全不清楚你是如何运行EA(s)的

2.有两个由Andrei和我自己写的代码,它们是

它们相互印证。那么,为什么要为你的事情费心 呢?

3.安德烈和我都在衍生品市场上运行过EA,而你在股票市场上运行过。

也许该终端在基金上有一些缺陷(甚至没有在股市上运行MT5)。

就个人而言,在基金方面,我通过快速交易系统进行交易。

哦,我明白了。我明天会在期货上试试。你为什么不在基金上使用mt5?是否有任何缺点?
Z.s. 那里的代码有3行)只是固定了msk的时间,没有任何检查,这样队列就不会被处理程序拖慢,在定时器上,它打印并计算延迟。我也没有彻底理解你的代码,一般的操作原理从输出中已经很清楚了。
 
Aleksey Mavrin:
1.啊,我明白了。明天,我将在一个期货上试一试。为什么你不在基金上使用MT5?你有什么缺点吗?
S.s. 那里的代码有3行)只是固定了msc的时间,没有任何检查,这样队列就不会被处理程序拖慢,在定时器上,它打印出来并计算延迟。我也没有彻底理解你的代码,一般的操作原理从输出中已经很清楚了。

1.在经纪人那里的第二个和随后的终端是付费的,我没有只交易股票(股票组合)的策略。

2.如果你要输出累积的GetMicrosecondCount(),那么

在OnDeinit()中不使用定时器,当EA退出时,一切都会打印出来。

void OnDeinit(const int reason)
{
  if(Mode == USE_BOOK)
  {
    if(is_book == true) MarketBookRelease(Symbol());
  } 
  if(reason == REASON_REMOVE)
  {
   //Распечатываем данные
  } 
}
 
prostotrader:

2.如果你要输出累积的GetMicrosecondCount(),那么

在OnDeinit()中不使用定时器,当EA退出时,一切都会打印出来。

你也可以这样做,我最初就是这样做的,以保持跟踪。但由于计时器的原因,OnTicks可能被跳过,但OnBooks不应该被跳过,因为它们是有保证的。也许我没有考虑到一些问题,也许不是所有的Ticks都会启动杯子的变化,即OnBook?
 
Aleksey Mavrin:
是的,你也可以这样做,我最初这样做是为了让它更清晰。但由于计时器的原因,OnTicks可能会被跳过,但OnBooks不应该,它们是有保证的。 也许我没有考虑到一些问题,也许不是所有的Ticks都会启动玻璃的变化,即OnBook?

还有。

你需要检查计数器。

void OnBookEvent(const string &symbol)
{ 
  if(curBook >= 65534) return;
  if((Mode != USE_BOOK) || (symbol != Symbol())) return;
  TimeArrayBook[curBook]=GetMicrosecondCount();
  curBook++
 }
void OnTick()
{
  if(curTick >= 65534) return;
  if(Mode != USE_TICK) return;
  TimeArrayTick[curTick]=GetMicrosecondCount();
  curTick++
}

A,在声明数组 时,要做到以下几点

ulong TimeArrayBook[
INT_MAX];

а инициализировать так
ArrayInitialize(TimeArrayBook, 0);

	          
 
prostotrader:

还有。

我们需要做一个反检查。

A,初始化时的数字应该是65535 而不是65536

不,没有必要。它是故意这样做的,以便不检查任何东西。他们是Ushort。阵列的大小 过大,但它并不影响任何东西。
 
Aleksey Mavrin:

谁能解释这个问题?为什么有这么多的OnTicks被取消注册,而它们之间没有一个OnBook?

看一下日志的时间。这一切都发生在一个毫秒中,而在它旁边(在同一个毫秒中)有一堆的安书。

你可以通过计数器来计算所有的事件,但即使在视觉上你也可以看到有更多的OnBooks。