错误、漏洞、问题 - 页 2798

 
Alexey Viktorov:

我不知道你是看了文档还是只是从我的帖子里拿了功能描述。

我怀疑你只有图形对象是有趋势的。如果是这样,你为什么需要一个前缀?还有一个按对象类型进行的删除

所以你不必改变项目中的任何东西,只要写上

)))))))))))))

当然,我是在看文件。是的,一切皆有可能!但是我做了这个...那什么,它不工作或以某种方式妨碍了...?

而在该项目 中,情况比这更复杂。正如我上面所说的...
 
Artyom Trishkin:

这只是一种特殊情况。前缀是一般和普遍的。虽然删除所有趋势线 也会影响不属于程序的对象。

同意。 chart_id:0(当前图表)。这意味着它将只影响这个图表。而如果会有其他的程序,你可以在每个对象的名字上加上ID,然后用适当的前缀调用ObjectsDeleteAll,这个函数就不会混淆任何东西了这就是为什么我在上面的帖子中说,对象的命名很复杂,我需要在使用这个函数之前进行思考。但阿列克谢对我,也是他的朋友表示不满......。徒劳无功!

 
Mihail Matkovskij:

为什么会这样? chart_id:0(当前图表)。它只意味着在这个图表上。而如果会有其他项目,也有ID这样的概念。如果它被添加到每个对象的名称中,ObjectsDeleteAll函数就不会混淆任何东西了。这就是为什么我在上面的帖子中说,对象的命名很复杂,我在使用这个函数之前必须考虑清楚。但阿列克谢对我,也是他的朋友表示不满......。徒劳无功!

在回答之前,请动动脑筋 :)

写在对象名称中的ID是一种前缀,通过识别它来删除程序对象。

现在看看我写给阿列克谢的代码,以及他的代码如何只删除你需要的对象,这些对象将没有ID,并将在图表上留下不属于程序的 "外来 "对象?

我对这个代码的回答是阿列克谢,有阿列克谢的这样一条信息。

因此,你不应该改变项目中的任何东西,而只是写上

ObjectsDeleteAll(0, 0, OBJ_TREND);
)))))))))))))
 
Artyom Trishkin:

在回答之前,请动动脑筋 :)

ID,写在对象的名称中--它是一种前缀,通过它来识别程序中的对象被删除。

现在看看我写给阿列克谢的代码,以及他的代码如何只删除你需要的对象,这些对象不会写有ID,而会在图表上留下不属于程序的 "外来 "对象?

我给阿列克谢的回复是对这个代码的回复,有阿列克谢的这样一条信息。

已编辑。你的回答很正确。是我搞砸了一点。我还想说点别的。

 
Mihail Matkovskij:

但阿列克谢对我很反感......。

你不会得到它的......我都是为了正义。你不应该暴露你的缺点,每个人都有缺点,我也一样,为了终端的错误。

有一个最近的例子:前段时间,我很高兴使用这样的噱头,在一个变量上点击右键,"转到定义",要返回到同一个变量,我按下棘轮上的键 "返回"。但今天我注意到,它不再工作了。原因是什么?昨天我更新到了2530......我甚至用了一些粗话,但突然想起我还得换上限。我打开了ME 2474和OOPS.....................,它没有工作。如果我脑子里有一条短信,把我对开发商的想法都写出来,会怎么样?那会是什么样子呢?

我的意思是,在写bug之前不要着急,要寻找你的代码中的缺陷。

 
Alexey Viktorov:

你不会的......我完全支持正义。不要暴露自己的缺点,每个人都有缺点,我也一样,为了终端的bug.

谁在揭露它?https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 。 我希望你这次 仔细阅读...?我还要告诉你多少次,你才能最终想通,不再在这里胡说八道?

 
Mihail Matkovskij:

谁在贴?https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 。 我希望你这次 已经仔细阅读了......?我还要告诉你多少次,才能让你最终明白,不要在这里乱写乱画!!。

我完全支持公平。

关于交易、自动交易系统和交易策略测试的论坛

虫子、虫子、问题

Mihail Matkovskij, 2020.07.11 14:47

我做了一个源码,其中出现了这个错误。
//+------------------------------------------------------------------+
//|                                           DeleteChartObjects.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version   "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

#include <ChartObjects\ChartObjectsLines.mqh>
#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- input parameters
input int      nBars = 100000;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int customN_Bars = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CArrayObj listOfTrendLines;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
//--- indicator buffers mapping
  int totalBars = iBars(NULL, PERIOD_CURRENT);
  customN_Bars = (nBars < totalBars) ? nBars : totalBars;
//---
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[]
) {
  CChartObjectTrend * trend;
  int delta = rates_total - customN_Bars;
  int shift;
  int i;
  for(i = 0; i < customN_Bars; i++) {
    shift = delta + customN_Bars - i - 1;
    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
  }
  return(rates_total);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
  
  CChartObjectTrend * trend;
  
  int i = listOfTrendLines.Total() - 1;
  for(; i >= 0; i--) {
    trend = dynamic_cast <CChartObjectTrend *> (listOfTrendLines.At(i));
    
    if(CheckPointer(trend) == POINTER_INVALID)
      continue;
    
    delete trend;
  }
}
//+------------------------------------------------------------------+

展示该错误的行动。

把指标扔在图表上。

2.从图表中删除指标。

3.按Ctrl+B,然后在窗口中按 "列出所有",可以看到尚未删除的对象。

物品

我在100000人中有多达294人。

如果你减少输入参数nBars的值,这个错误就不会出现。


 
Alexey Viktorov:

我完全支持公平。



所以那个帖子没有说是哪个错误,是我的程序还是终端错误。我以为这是一个终端错误。但拉希德-乌马罗夫 向我解释了一切,我理解他。一切对我来说都是非常清楚的。没有终端错误,我的假设是错误的。你带着某种狂热的热情跟着我。我问你原因是什么,你告诉了我。

你早就该闭嘴了,我也不会继续。

这就是原因...

你能不能停止这种无稽之谈!?一个成年人(我希望)...

 
Mihail Matkovskij:

所以那条信息没有说是哪个错误,是我的程序还是终端的错误。我以为这是一个终端错误。但拉希德-乌马罗夫 向我解释了一切,我理解他。一切对我来说都是非常清楚的。没有终端错误,我的假设是错误的。你带着某种狂热的热情跟着我。我问你原因是什么,你告诉了我。

这就是原因...

你能不能停止这种无稽之谈!?一个成年人,我希望...

好的。风卷残云中,我换了鞋。将其作为一个终端错误报告,............,你的生活就像你知道的那样。

 
连接存储设备

https://storage.mql5.io,不可能登录。