错误、漏洞、问题 - 页 606

 
uncleVic:
其实并不清楚为什么?毕竟,如果你的程序删除了一个对象,它就知道这个对象。但如果对象被移除,而程序甚至不知道它,那就是终端的错。

不是那么简单的(很遗憾它从服务台消失了,我将尝试再次提出这个问题)。

我们需要处理当用户意外地从图表中删除一个对象的情况。但这个对象不应该被删除。例如,它是一个列表或下拉菜单的底层。

所以在OnChartEvent代码中,我需要处理这个事件并重新绘制控件。

所以我必须删除这个控件中的所有其他对象。我想我不需要解释为什么我应该删除这个控件的所有顶部对象。

因此,事实证明,处理这个事件时,算法进入了一个深度循环。脚本将删除对象并获得对象被删除的事件,这意味着必须再次处理这个事件--删除和渲染...简而言之,算法混乱。

我不知道如何在当前的CHARTEVENT设置中修复它。这就是为什么我建议,脚本要明白--这是谁的删除--由终端(由狡猾的用户)还是由脚本本身(由同一个程序员)。

当你开始积极从事控制工作时,你迟早都要自己处理这个问题。

 
sergeev:

不是那么简单的(很遗憾它从服务台消失了,我会再试着找出问题)。

我不知道如何在当前的CHARTEVENT设置中解决这种情况。这就是为什么我建议,脚本应该明白--谁删除了它--通过终端(由狡猾的用户)或通过脚本本身(由同一个程序员)。

当你开始积极使用控制装置时,你迟早会面临这个问题。

我自己也遇到过这种情况。在艺术库的最初版本之一(在控制 方面),这个机制是实施的,但由于某些原因,它被删除了(我确实计划以后恢复它)。

这没有什么聪明之处。每个控制器都应该能够自我恢复。基层,当被删除时,就会删除躺在上面的一切。恢复工作是由事件完成的。

 
uncleVic:


这没有什么聪明之处。每个控制器都需要有自我修复的能力。基层在被删除时,会删除上面的一切。然后通过事件进行恢复。

好吧,这就是我要说的,当收到一个删除事件时,控件会自我恢复。

但是,一旦控件恢复自身(删除上层对象),就会再次开始删除事件。

不管怎么说,我为什么要费力地再次证明显而易见的事情呢 :))当贵公司在开发标准库时 需要鼠标移动事件时,他们即时添加,没有多余的问题。双重标准的做法变成了....
但我认为,如果这个同样的建议由用户发送给服务台,他们会再拖他一个月,以了解他们为什么需要这个建议。

相信我,这是很需要的!我已经在服务台写过,我们不试图推广MT5和MQL5,但我们是为了自己的利益。

我们诚实地通过各种方式,为我们在MQL中的任务找到快速和紧凑的解决方案。如果我们遇到障碍,我们总是写信给服务台。但我们并不总是在那里遇到任何理解。

正如我在上面写的,我很高兴你自己制作控制库。你至少可以对我们所有必须解决的问题有一点了解,而不需要你的任何理解。

PS。
维克多,对不起,那么严重,只是一个痛苦的脖子。
我只想请贵公司听听MQL程序员的要求。毕竟,我们在MQL中解决的各种任务比你能想象的要多得多。有时我只想听到服务台的回答:是的,我们会在下一次构建中这样做

谢谢你的理解。

 

sergeev:

...当 你的公司需要一个鼠标移动事件时...

如果你知道我为 "成人 "程序员做了多少事而打破了我的拳头......。
 
冒着听起来没有创意的风险,但仍...女士们,先生们--何时开市?有谁知道至少有一个粗略的时间表吗?
 
uncleVic:
如果你知道我为 "成人 "程序员做了多少事而打破了我的拳头......。
维克多,你和我在同一条船上 :))) 让我们 一起。
 

我试图根据脚本为一个实施交易所 执行的符号建立一个多头头寸(SYMBOL_TRADE_EXECUTION_EXCHANGE,交易所执行)。

#include <Trade\Trade.mqh>                   
input double InpLots          =0.1;  
input int    InpTakeProfit    =500;
input int    InpSL            =300;
CTrade       myTrade;

void OnStart()
  {   
   double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double tp=SymbolInfoDouble(_Symbol,SYMBOL_BID)+InpTakeProfit*_Point;
   double sl=SymbolInfoDouble(_Symbol,SYMBOL_BID)-InpSL*_Point;
   myTrade.SetTypeFilling(ORDER_FILLING_IOC);
   myTrade.PositionOpen(_Symbol,ORDER_TYPE_BUY,InpLots,price,0,0,"Test Buy");
   Sleep(500); // интервал задержки
   myTrade.PositionModify(_Symbol,sl,tp);
  }

我得到一个错误。

  • 交易所在0.00000买入0.10 EURUSD.e。
  • 兑换失败,在0.00000买入0.10 EURUSD.e [无效止损]。

也就是说,终端没有看到我想买的价格。我尝试了不同的价格,但仍然收到0.00000。

我试着在MT4中运行一个类似的脚本,在相同的交易条件下,它在那里工作...在MT5中没有...

请把鼻子对准错误。

 
denkir:
  • 兑换失败,在0.00000买入0.10 EURUSD.e [无效止损]。

这是一个服务器信息,不是一个终端信息。在这个问题上,我没有什么可说的了。

向服务台提交请求

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
papaklass:

为什么会发生数组溢出错误?

好吧,你通常在阅读之前给它写点东西...
 
papaklass:

为什么会发生数组溢出错误?


你在哪里调用ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5