错误、漏洞、问题 - 页 2095

 

在传播测试器中,有一个新的错误。它存在于视觉模式中,也存在于标准模式中(专家看到膨胀的价差)。

你可以通过运行标准例子中的MA专家,用默认参数进行检查。

对于某些日期,从0:00到23:59,全天的点差从2-5扩大到200-500。我在2家经纪公司检查过,问题可能不在报价,而在测试器本身。

这里有一个日期为16.10.2017的例子。该测试应从2017年10月16日开始运行。背景是图表滚动到该日期的终端 - 那里的价差在正常范围内。

另一个例子是关于另一个的。另一个例子来自另一家经纪公司

我设置了一个控制价差的专家顾问,它看到的就是这些200到500的价差。因此,它一整天都在工作,没有遵循算法。

发现的另一个日期是2017年9月19日。从9月到今天,冉冉的测试--大约有20-30%的日子有过高的价格差。看到直到2000年的超额预测。

发送到SD。

PS。答复了。将在新版本中修复。
 
elibrarius:

...

发送到SD。

也在等待这个问题的答案。

打开, 开始: 2017.12.16 14:36, #1911211

 

MetaQuotes-Demo上的OrderSend挂起--有时运行几秒钟,有时脚本不能被删除(只能通过关闭终端)。

 
TRADE_ACTION_CLOSE_BY中的几个错误
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  MqlTradeRequest Request = {0};
  MqlTradeResult Result;      
      
  Request.action = TRADE_ACTION_CLOSE_BY;
  Request.position = OrderSend(_Symbol, OP_SELL, 0.01, Bid, 100, 0, 0);
  Request.position_by = OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);

  Request.symbol = _Symbol; // Если убрать эту строку, то сообщения в логе изменятся

  Print(OrderSend(Request, Result)); // false
}

结果

'7489613': instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': accepted instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': deal #176902665 sell 0.01 GBPUSD at 1.34334 done (based on order #193547458)
'7489613': order #193547458 sell 0.01 / 0.01 GBPUSD at 1.34334 done in 73.458 ms
'7489613': instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': accepted instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': deal #176902666 buy 1.00 GBPUSD at 1.34342 done (based on order #193547459)
'7489613': order #193547459 buy 1.00 / 1.00 GBPUSD at 1.34342 done in 76.044 ms
'7489613': failed close position #193547459 buy 0.99 GBPUSD by position #193547458 [Invalid request]


实际上一切都完美地重叠了,但只有在日志中是错误的信息,而且OrderSend的返回是负的。如果你删除源码中的高亮行,你可以在日志中看到一个完全不充分的信息。

 

MEStyler bug MT4/MT5

 #define  f(x) x   //пробел вначале строки и перед конечным выражением
#define  f(x) x    //стилизатор удалил пробел в начале строки. Пробел перед конечным выражением остался

 #define  f(x) (x)   //пробел вначале строки и перед конечным выражением, ЗАКЛЮЧЕННЫМ В СКОБКИ
#define  f(x)(x) //стилизатор удаляет не только пробел в начале строки, но и разделяющий пробел между аргументом и конечным выражением. 

//В итоге компилятор выдает ошибку во втором случае
//'(' - unexpected in macro definition

 

真正的M1指标。当测试仪数据窗口(视觉模式)中的传播为负数时,传播变得不正确。您的服务器,2017.10.23 01:00和01:01分钟

做了一个检查价差的专家顾问。当点差为负数时,专家顾问看到的是错误的点差,-增加1。截图显示EA中的-1,图表上的-2。如果点差是正数,那么在专家顾问中一切都正确。

实际点位的价差可能与开盘价差有很大不同。这里有一个差额为39分的例子。 2017.10.23 00:53
关于开盘价。


关于
真正的虱子。

我认为在两种模式下都应该匹配的东西......。

 
elibrarius:

我做了一个专家顾问来检查价差。如果点差是负的,专家顾问看到的是错误的点差--增加了1。截图显示专家顾问中的-1,图表上的-2。当价差为正时,专家顾问中的一切都正确。

我确信你在计算价差时在代码中犯了一个错误。如果你找不到,请出示代码。

 

复制......功能怎么了?? "以前他们曾经返回时间序列,但现在没有了。


原则上说,扩展数组索引本身并不难,但以前的代码中,我使用了在Copy后扩展时间序列的函数,...现在可能不工作了
 
Konstantin:

复制......功能怎么了?他们以前会返回时间序列,但现在不会了。


基本上自己扩展数组索引并不难,但以前的代码中,我使用了在Copy后扩展时间序列的函数...现在可能不工作了

原本就是这样的,而且在帮助中也写了。


 
fxsaber:

我确信你在计算价差时在代码中犯了一个错误。如果你找不到它,请给我看代码。

嗯,找到它))))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }