错误、漏洞、问题 - 页 1680

 

在日志中。

2016.09.12 22:20:37.728 Books   invalid book item[RTS-9.16,buy,99040.00000,-4]
BCS-MetaTrader5, real, 1415.从模拟账户切换到真实账户时发生的。没有运行专家顾问或指标。假人号的窗户是开着的。
 
fxsaber:

在该杂志中。

BCS-MetaTrader5, real, 1415.这发生在我从模拟账户转到真实账户的时候。没有专家顾问或指标在运行。驾驶舱的窗户是开着的。

我写过关于这个错误的文章

https://www.mql5.com/ru/forum/95131

invalid book transaction
invalid book transaction
  • 评论: 2
  • www.mql5.com
Раньше не было, появилось сегодня (реал). Что это...
 
prostotrader:
主题标题下的那些星号是什么?还有评论的数量也是如此。
 
fxsaber:
主题标题下的那些星号是什么?还有评论的数量。
顺便说一句,我想了很久,这些主题的星星应该设置在哪里。
 

在调试模式下,我怎样才能找到我目前所处的函数 是从哪里调用 的?

粗略地说,我希望能够访问一个嵌套的函数/方法调用树。这有可能吗?

 
fxsaber:
在调试模式下,我怎样才能找到我目前所处的函数 是从哪里调用 的?

在 "循序渐进 "模式下,逐一查看 "调试 "标签。

步骤

 
Karputov Vladimir:

在 "循序渐进 "模式下,逐一查看 "调试 "标签。

谢谢你。我不明白为什么该指标在开始时调用OnCalculate 两次。我想弄清楚它对什么事件有反应。不幸的是,我在调试标签上看不到任何事件。
 
fxsaber:
谢谢。我不明白为什么一开始指标会调用OnCalculate两次。我想知道这个回复是针对什么事件的。遗憾的是,在调试中看不到任何事件。

有时发生两次,有时发生一次,甚至可能发生三次:你把这段代码放在Oncalculate() 中 -

//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   Print(__FUNCTION__,", rates_total ",rates_total,", prev_calculated ",prev_calculated);

当历史被调换时,它将被清除(当历史被调换时prev_calculated==0)。

 
Karputov Vladimir:

有时发生两次,有时发生一次,甚至可能发生三次:你把这段代码放在Oncalculate()中 -

当历史交换发生时(当历史交换prev_calculated==0),它将被清除。

不,我现在是在RTS上运行,当kotirs站立时。发现它被调用了一次,而调试器却在说谎,显示好像是两次。播放代码(在一个没有滴答声的角色上运行)。

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1

int Func(){ return(0); }

int OnCalculate( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[] )
{
//  return(0); // если расскоментировать и здесь поставить точку останова, то отладчик отработает, как надо
  return(Func()); // здесь поставить точку останова (F9)
}

在按下F5后,它将会碰到一个断点。而在第二次按下F5后--类似的情况。虽然这不应该是--作为一种确认,你可以缩短代码中的那一行,然后用它来试试。

 
fxsaber:

不,我现在是在RTS上运行,当kotirs站着的时候。发现它被调用了一次,而调试器在撒谎,把它显示成了两次。回放的代码(在没有滴答声的字符上运行)。

在按下F5后,它将会碰到一个断点。而在第二次按下F5后--类似的情况。但不应该是这种情况--作为确认,你可以废掉代码中的那一行,用它来试试。

报价是去是留没有任何区别。你必须在指标中控制prev_calculate==0的条件--这是历史互换,第二点--疏于对变化的条形进行重新计算的模式,即事实上,rate_total -prev_calculate+1。