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

 

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

对MQL4新手的任何问题,对算法和代码的帮助和讨论

Taras Slobodyanik, 2018.10.07 09:47

我是为了举例而写的)

如果你不需要记住这个符号,你可能不会记住它

如果名字只是一个图表的ID,我如何删除不必要的变量?
(经常使用的话,会有很多变数)

如果没有前缀--同样的事情,如何删除不必要的变量?


=我只是 作为一个例子来)。

如果你想扩展不成熟的思想,这是一个很好的教育例子。)

=如果我只命名图表的ID,我如何删除不必要的变量?

为什么要删除它们呢?例如,如果你想只存储周期,那么name = prefix+symbol就足够了。我有一个假设,就是我完全可以用一个GP来做--如果我在一个图表上只进行一次换帧操作,那么在我进入下一个图表之前,它就已经结束了,在那里,周期被再次询问,GP被覆盖了。这种情况下有什么隐患吗?

 
Taras Slobodyanik:

我的代码,我的代码有效,我看不到你的代码。
请)。

所以我把你的脚本扔到了图表上,全局变量 的列表是0。
 
inter78:
所以我把你的脚本扔到了图表上,全局变量 的列表是0。

你是想检查还是想开车?)
视觉上看列表是看长的位子,比如配音的位子--有abracadabra,或者NaN。

 
psyman:

为什么要删除它们呢?例如,如果你只需要存储一个句号,那么name = prefix + symbol就足够了。我有一个假设,我完全可以用一个GP来做--如果我在图表上只执行一个换帧操作,在我进入下一个图表之前就结束了,在那里,周期被重新查询,GP被改写。这种情况下没有陷阱吗?

这一切都取决于目的

如果该指标(或其他什么)在一个实例中对一个符号起作用,而其他人不会产生同样的变量,那么当然,你可以不费力气。

 
Taras Slobodyanik:

你想检查还是开车?)
从视觉上看清单,就是要看长的位子,比如配音的位子--有abracadabra,或者NaN。

那是如果我现在理解了你刚才写给我的东西,我就不会再去理会你了。只是我的编程知识趋向于零。但如果我可以把ChartID塞进全局变量 而不失真,我会很高兴。谢谢你。
 

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

对MQL4新手的任何问题,对算法和代码的帮助和讨论

Taras Slobodyanik, 2018.10.06 21:47

      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      

我怎样才能如此巧妙地让name变量被赋予一个文本字符串值,然后Line_ALL[i].price 也被写在那里,但作为一个GP?

理论上,名字应该直接覆盖它。

UPD

我想我已经明白了--我需要一个普通变量来存储GP的名字。变量名称可以是相同的。对吗?

 
psyman:

解释一下棘手的部分:名字被赋予一个文本字符串值,然后Line_ALL[i].price 被写在那里,但作为GP?

理论上,名字应该直接覆盖它。

UPD

我想我已经明白了--我需要一个普通变量来存储GP的名字。变量名称可以是相同的。对吗?

在变量名称 中,创建一个名称(文本),然后用这个名称创建一个全局变量,并向这个GP写入一个值。
即生成一个GP的列表,并将数组的一部分存储在其中

1

 
inter78:
如果我理解你刚才写的东西,我就不会打扰你了。只是我的编程知识趋向于零。但如果我可以把ChartID塞进全局变量 而不失真,我会很高兴。谢谢。

我的代码将longChartID写入一个临时的全局变量中。

在视觉上,如果你按下F3,零(或另一个不同的值)就会显示在那里。
发生这种情况是因为终端认为它是一个双倍值并试图显示它,但我们把它塞给了一个长的--这是一个完全不同的数字格式。

如果把这个值作为一个普通的双倍数读回来,那将是一个混乱的局面。
如果它被我的代码读取,它将再次变长(与我们保存的相同)。
如果你在终端窗口中手动点击这个变量,它将被重置,因为终端会检测到交换。

 
Taras Slobodyanik:

在变量名称 中创建一个名称(文本),然后用这个名称创建一个全局变量,并向该GP写入一个值。
即生成一个GP的列表,并将数组的一部分存储在其中。


但这个条件。

GlobalVariableCheck(name) || GlobalVariableTemp(name)

什么原因?

我对 "GlobalVariableTemp试图创建一个临时全局变量 "这个定义本身并不清楚。

为什么要在GlobalVariableSet做的时候尝试创建?

UPD

把它放在OnInit中。

   string   GV_prefix="ZZ_";
   string   ctime=GV_prefix+_Symbol+"_"+ChartID();
   GlobalVariablesDeleteAll(NULL, 0);
    if (GlobalVariableCheck(ctime) || GlobalVariableTemp(ctime))
      GlobalVariableSet(ctime, Period());

在OnChartEvent中调用。

if(GlobalVariableGet(ctime)!=Period()) 

我得到的回应是'ctime' - 未声明的标识符


 
psyman:

但这个条件。

为什么?

GlobalVariableCheck() - 检查这种变量是否已经存在,如果不存在的话
GlobalVariableTemp()- 创建一个临时变量,该变量将在下次启动时被自己删除。

psyman

UPD

我把它写在OnInit中。

我在OnChartEvent中调用它。

在回复中,我得到了'ctime' - 未声明的标识符

字符串需要被移到OnInit上面,放到全局 代码变量 中。

或添加到OnChartEvent

string   GV_prefix="ZZ_";
string   ctime=GV_prefix+_Symbol+"_"+ChartID();