新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1933

 

同事们,我被难住了。我需要一些帮助。

我有一个正常工作的指标,我是用两个做的,但这不是重点。我想隐藏第一个外部变量块,但当我在编译后删除这个块中的任何输入时,安装有指标的终端在图表上挂起。

第76至86行的代码片段

input string     01 = "••  Channel:";   // ------------------------------------------------------------
input string     02 = "";       //  

input ENUM_TF_MINUTES   TMA_TimeFrame = TF_CURR;                        // Time Frame
input uint              TMA_Half_Length = 55;                                                                   // Averaging Period
input ENUM_APPLIED_PRICE        TMA_Price = PRICE_CLOSE;        // Applied _Price
input double    TMA_ATR_Multiplier = 3;                                                         // ATR Multiplier
input uint              TMA_ATR_Period = 100;                                                                   // ATR Period
input double    TMA_Band_Deviation_Percent = 50;                        // Band Deviation Percent
input bool              TMA_Interpolate = true;                                                         // Interpolate?
input uint Bars_Limit=1000;

如果我把所有的这个块移到比其他变量低的位置,甚至我把最外层的变量向上或向下移动,它也会挂起。

如果我改变块内变量的顺序,它就能正常编译。终端不会冻结。

我不明白发生了什么事。也许我没有看到明显的东西,我的眼睛已经模糊了(()我附上代码

P.S. 问题已经解决,代码已被删除。
 
Andrey Kaunov #:

同事们,我被难住了。我需要一些帮助。

我有一个正常工作的指标,我是用两个做的,但这不是重点。我想隐藏第一个外部变量块,但当我在编译后删除这个块中的任何输入时,安装有指标的终端在图表上挂起。

第76至86行的代码片段

如果我把所有的这个块移到比其他变量低的位置,甚至我把最外层的变量向上或向下移动,它也会挂起。

如果我改变块内变量的顺序,它就能正常编译。终端不会冻结。

我不明白发生了什么事。也许我错过了一些明显的东西,我的眼睛很模糊 (((( 我把代码附在后面

用const代替输入

欢欣鼓舞!

 
Maxim Kuznetsov #:

用常数代替输入

欢欣鼓舞!

没有帮助,在向图表中添加指标时仍然挂起终端。

 
Andrey Kaunov #:

没有帮助,终端在向图表添加指标时仍然挂起。

它是否可以编译?

所以,如果参数有一个输入属性,它就能工作,但如果是常数,它就会挂起?

没有这样的奇迹

 
Andrey Kaunov #:

这是一个shaitan,我什么都不明白。也许我没有看到明显的东西,我的眼睛已经模糊了 (((( 我附上代码

从第379行开始,你有递归到指标(调用本身)。那里有参数,在改变参数的顺序后,你也需要匹配它们。

 
Nikolay Ivanov #:

从第379行开始,你有递归到指标(调用自己)。那里有一些参数,在改变参数的顺序后,你也需要调整它们。

非常感谢你,尼古拉。

是的,我应该挖得更深。我被困在参数中。

 

你能告诉我为什么内循环在这个循环中不起作用吗?

for (int Try=0; Try<1;) 

  {  Print("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Print("цикл 2"); Try=1; Try2=1;
...


它不打印"循环2"。只有 "第一周期"。

 
谁知道如何固定OBJ_RECTANGLE_LABEL的尺寸,使其在不同的显示器上都一样?我按照内置OneClickTrading面板的大小做了一个小面板(以像素为单位),但在不同的显示器上,我的面板会改变大小,但内置面板不会。
 
Ivan Butko #:

你能告诉我为什么内循环在这个循环中不起作用吗?

for (int Try=0; Try<1;) 

  {  Print("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Print("цикл 2"); Try=1; Try2=1;
...


循环2 " 没有打印。只有 "第一周期"

一切打印,警报。

void OnStart()
  {
//---
for (int Try=0; Try<1;) 

  { Alert("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Alert("цикл 2"); Try=1; Try2=1;
        }}
   
  }
//+------------------------------------------------------------------+

2022.03.20 10:28:29.373 Script qqq EURUSD,M1: 删除
2022.03.20 10:28:29.373 qqq EURUSD,M1: uninit reason 0
2022.03.20 10:28:29.373 qqq EURUSD,M1: 提醒:周期2
2022.03.20 10:28:29.357 qqq EURUSD,M1: 提醒:周期1
2022.03.20 10:28:29.326 qqq EURUSD,M1:初始化

 
Valeriy Yastremskiy #:

一切打印,警报

2022.03.20 10:28:29.373 Script qqq EURUSD,M1: 删除
2022.03.20 10:28:29.373 qqq EURUSD,M1: uninit reason 0
2022.03.20 10:28:29.373 qqq EURUSD,M1: 提醒:周期2
2022.03.20 10:28:29.357 qqq EURUSD,M1: 提醒:周期1
2022.03.20 10:28:29.326 qqq EURUSD,M1:初始化

谢谢你的支票!我将看一下