创建一个机器人 - 页 7

 
Vladimir M.:
我通常在OnDeinit中清除句柄和计算部分,一切都会被删除。该对象不是一个指标。

https://www.mql5.com/ru/docs/chart_operations/chartindicatordelete

"从图表中删除一个指标并不意味着该指标的计算部分也将从终端内存中删除要释放指标手柄,请使用IndicatorRelease() 函数。"

是的,弗拉基米尔,我已经做过了,以前也写过,但结果还是一样。

问候,弗拉基米尔。

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

新的交易机器人

MrBrooklin, 2020.09.28 10:38

我已经解决了这个问题一个多小时了。我想在专家顾问启动时在图表上创建并显示ZigZagColor指标。这是在int OnInit中完成的。

   handle_iCustom=iCustom(m_symbol.Name(),Period(),"Examples\\ZigzagColor",
                          Inp_ZZ_Depth,
                          Inp_ZZ_Deviation,
                          Inp_ZZ_Backstep);
   ChartIndicatorAdd(ChartID(),0,handle_iCustom);

该指标被创建并显示。现在我需要在专家顾问被删除后,将该指标删除。我正在写。

void OnDeinit(const int reason)
  {
//---
   IndicatorRelease(handle_iCustom);
   ObjectsDeleteAll(0,"Examples\\ZigzagColor");
  }

但指标没有被删除。我已经把一切都整理好了。我已经清理了手柄并应用了删除功能。我想知道它没有卸载的原因是什么。

问候,弗拉基米尔。


 
Alekseu Fedotov:

用函数将指标从图表中删除


图表指标删除(ChartIndicatorDelete)

long chart_id, // 图表ID

int sub_window // 子窗口的编号

const string indicator_shortname // 短的指标名称

);

谢谢你,阿列克谢,我明天会在头脑清醒的情况下尝试一下,我已经被我得到的信息搞糊涂了。正如他们所说,我明天早上会睡得更好!

我现在还有一件事非常不解和惊讶。我试图用Vladimir Karputov开发的脚本清除图表,但这个脚本完全删除了所有东西,除了自定义指标 ZigzagColor!试着用同样的脚本删除一个简单的ZigZag,它也没有删除!这是个谜...

问候,弗拉基米尔。

 
MrBrooklin:

谢谢你,阿列克谢,明天我将在头脑清醒的情况下试一试,因为我已经陷入了混乱的信息之中。俗话说--------------早上更聪明

现在还有一件事 我非常不解,也 让我很吃惊。我试图用Vladimir Karputov开发的脚本清除图表,但这个脚本完全删除了所有东西,除了自定义指标 ZigzagColor!试着用同样的脚本删除一个简单的ZigZag,它也没有删除!这是个谜...

问候,弗拉基米尔。

试试这个脚本


#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int window=ChartWindowFind(0,"ZigzagColor");
   bool res=ChartIndicatorDelete(0,window,"ZigzagColor");
//--- проанализируем результат вызова ChartIndicatorDelete()
   if(!res)
     {
      PrintFormat("Не удалось удалить индикатор ZigzagColor с окна #%d. Код ошибки %d",
                  window,GetLastError());
     }
  }


 

简称ZigzagColor - 这是默认的,如果你设置的不同,你需要写上这些数字。

2020.09.29 03:41:36.604 IndicatorDelete (XAUUSD,M30)    ZigZag(12,5,3)

而这正是你需要放入的东西

ZigZag(12,5,3)
 
SanAlex:

简称ZigzagColor - 这是默认的,如果你设置的不同,你需要写上这些数字。

而且应该这样拼写

或者你可以改变指标本身--给一个更容易的名字

//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag("+(string)InpDepth+","+(string)InpDeviation+","+(string)InpBackstep+")");
   PlotIndexSetString(0,PLOT_LABEL,"ZigzagColor");
//--- set an empty value

比如说

//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag");
   PlotIndexSetString(0,PLOT_LABEL,"ZigzagColor");
//--- set an empty value

-----------------------------------------------

我已经向你展示了这个脚本--如果这个脚本被附加到一个图表上,并且你没有给出一个指标名称,它将在不删除任何指标的情况下工作--但它将在专家顾问窗口中写出哪些指标是可用的。

https://c.mql5.com/3/332/IndicatorDelete.mq5

这是我所拥有的

CS      0       03:41:36.549    IndicatorDelete (XAUUSD,M30)    EWO(5,35)
DF      0       03:41:36.604    IndicatorDelete (XAUUSD,M30)    ZigZag(12,5,3)
KR      0       03:41:36.626    IndicatorDelete (XAUUSD,M30)    LeMan_BrainTrend1Sig
FE      0       03:41:36.646    IndicatorDelete (XAUUSD,M30)    Hline VSC
RN      0       03:41:36.666    IndicatorDelete (XAUUSD,M30)    Pivot Lines TimeZone
KG      0       03:41:36.686    IndicatorDelete (XAUUSD,M30)    Line through two fractals
DL      0       03:41:36.706    IndicatorDelete (XAUUSD,M30)    sanbox
 
Alekseu Fedotov:

试试这个脚本

大家好!

Aleksey,我已经应用了你的脚本。我得到了错误代码 4115。我在手册中找到了它的意思。

绘图指示器不能删除

4115

从图表中删除指标时出错


问候,弗拉基米尔。

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Коды ошибок и предупреждений - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex:

或者你也可以改变指标本身,给它一个更简单的名字

像这样

-----------------------------------------------

我已经下载了脚本--如果这个脚本附在图表上,而你没有给出指标名称,它将在不删除任何指标的情况下工作--但它将在专家顾问窗口中写出哪些指标是存在的。

https://c.mql5.com/3/332/IndicatorDelete.mq5

这就是我所拥有的!

你好!我已经实施了你的脚本。专家 选项卡中出现了两个指标:Volumes 和ZigZag(80,20,0)。确实如此,只是由于某种原因,ZigZag 指标没有写上颜色

问候,弗拉基米尔。

 
Alekseu Fedotov:

试试这个脚本

MrBrooklin:

大家好!

阿列克谢,应用你的脚本。我得到了错误代码 4115。

问候,弗拉基米尔。

我必须更加小心。

bool  ChartIndicatorDelete( 
   long           chart_id,              // идентификатор графика 
   int            sub_window             // номер подокна 
   const string   indicator_shortname    // короткое имя индикатора 
   );

指标名称和指标简称往往不一致。

 
MrBrooklin:

你好!我已经应用了你的脚本。专家 选项卡中出现了两个指标:Volumes和ZigZag(80,20,0)。确实如此,只是由于某种原因,ZigZag 指标没有写上颜色

真诚的,弗拉基米尔。

所以,你必须这样写--ZigZag(80,20,0)

在这种情况下,它肯定会被删除。

-----------------

但没有颜色

因为它在指标中是这样写的

IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag("+(string)InpDepth+","+(string)InpDeviation+","+(string)InpBackstep+")");

 
SanAlex:

你必须这样写 -ZigZag(80,20,0)。

ZigZag一定会被删除。

-----------------

但没有颜色

因为它在指标中是这样写的

如果你改变了设置,你需要添加那些你在指标中指定的数字。

比如说

ZigZag(12,5,3)