错误、漏洞、问题 - 页 363

 

SymbolsTotal() 和SymbolName()在测试器中从哪里获取信息? 我在终端和测试器中的第i个符号之间出现了不匹配。

如果在终端中是第3个USDJPY,那么在测试器中就是第3个EURGBP。

我只是对MarketWatch的符号进行枚举,并按序列号将其编入Expert Advisor。

 

下午好!

我有一个关于IndicatorSetString函数的问题,在该函数中你可以为指标指定一个简短的名称,随后可以参照该名称从图表中删除该指标

我认为这是一个奇怪的情况。

在办公室的电脑上,这个程序进行得很顺利,但在另一台家用电脑上,其短名称的值 在一开始就自动设置了(也就是说,没有考虑到输入参数,我用它来形成一个新的名称),而新的名称只有在分离指标和重新加载后才出现

我首先想到的是软件的差异,但经过比较,我意识到一切都很基本,完全相同。

- 专家和指标代码。

- 软件版本(Build 425)。

- 操作系统(WinXP SP3

- 相同的设置(特别比较)。

一般来说,检查的情况如下。

1.屏幕上显示了几个按钮,每个按钮都有一个简短和一般的指标名称

2.当你按下按钮时,以其通用名称对应的指标就会出现,而当你松开它时,就会根据短名称删除它。

3.在办公室的电脑上,指标在第一次按下时就被删除,而在家里的电脑上只在第二次按下时才被删除。

这可能的原因是什么?

如果从示意图上看,不包括专家和指标的常规东西,以及与所述问题没有直接关系的其他功能,它看起来如下。

1. 指标 My_Indicator

   input double  Offset  = 0;
   int OnInit()  
   {  
      string NewNameIndicator = OldNameIndicator + Offset;
      IndicatorSetString (INDICATOR_SHORTNAME, NewNameIndicator);
   }

2. 在EA。

   void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
   {  
        String ShortNameIndicator1;
        //---При нажатии            
        if (sparam==My_Button1.Name()){
            if(My_Button1.State()==true){
                Int handle = iCustom (_Symbol,_Period, "My_Indicator1 ", "FirstParameter");
                ChartIndicatorAdd(0,0,handle);
                ShortNameIndicator1 = ChartIndicatorName(0,0,ChartIndicatorsTotal(0,0)-1);
                 Alert (“State()=true, IndicatorName()=”,   ShortNameIndicator1);
             }
        }
         //---При отжатии
        if (sparam==My_Button1.Name()){
           if(My_Button1.State()==false){
                  Alert (“State()=false, IndicatorName()=”,   ShortNameIndicator1);
                  ChartIndicatorDelete(0,0,ShortNameIndicator1);  
           }
        }
    }

结果是。

在办公室的电脑上,IndicatorName 从第一遍开始就作为一个新的名字输出,而在家里的电脑上只从第二遍开始

在办公室的电脑上,指标名称在第一次按下后被删除,而在家庭电脑上则在第二次按下后被删除。

同时,在主电脑上第一次按压和释放后,显示的是原来的指标名称(My_Indicator,没有在名称中加入输入参数),尽管专家顾问和指标的代码,我重复一下,在两种情况下使用的是相同的。

 

在此引用我给Servicedesk的信息


Версия и битность терминала



MetaEditor 5.00 build 425. Windows 7 ultimate, build 7600.

Описание проблемы

При создании файла скрипта с кодом

void OnStart()
{
}


试图编译导致错误的内部错误#108

在下载了最新的终端版本并在同一文件夹中重新安装后,错误变成了内部错误#-3

操作顺序
我不知道这是否与错误有关,但它是在我使用相应的自动MetaEditor程序更新MQL5帮助文件后开始出现的。

预期的结果


脚本的正常编译))


今天,在对电脑进行反病毒清理后,问题消失了。

该恶意软件似乎是新的,因为它没有被任何已知的反病毒软件发现。外部表现如下。

  • 在c:\Windows\AppPatch文件夹中存在一个名称无意义、扩展名为.dat的文件。文件头显示它是可执行的,原名是dd.exe,"产品名称 "和 "版权 "字段是无意义的一组大写字母。
  • 在HKLM\Software\Microsoft\Windows NT\Winlogon注册表键中存在一个修改过的Userinit条目,其路径为上述文件。当条目被删除时,如果病毒仍在内存中,后者往往会不知不觉地重新创建。
  • 偶尔运行几份conhost.exe和route.exe进程,有时还有netsh.exe。
  • 遇到了MetaEditor 5的故障)。- Metaquotes编辑器除了所有功能外,还是一个相当好的恶意软件检测器)

在安全模式下清理了一切。

是的,它被划伤了Webmoney本地账户,但识别数据还没有消失))))。

我建议大家手动检查。

 
Urain:

SymbolsTotal() 和SymbolName()在测试器中从哪里获取信息? 我在终端和测试器中的第i个符号之间出现了不匹配。

如果在终端中是第3个USDJPY,那么在测试器中就是第3个EURGBP。

我只是对MarketWatch的符号进行枚举,并按序列号将其编入Expert Advisor。

你不能依赖MarketWatch中的符号顺序,因为根据定义它可以是任何。
 

附加的文件:
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi:

什么事?

看起来像en um enum_TYPE_MARKET_INFO,以数字形式出现。

我也有同样的情况。向SD报告。

 
Renat:
市场观察中的字符顺序不能作为依据,因为根据定义它可以是任何顺序。

这与符号的顺序或数量无关,但在终端和测试器中,同一时间的符号的顺序和数量是不同的。

我解决了这个问题,通过一个文件将符号列表传递给测试人员。虽然真诚地相信这是一个错误。

 
Urain:

这与符号的顺序或数量无关,但同一时间的符号顺序和数量在终端和测试器中是不同的。

一般来说,我通过一个文件将字符集传递给测试者来解决这个问题。虽然说实话,我认为这是一个错误。

我不太明白这个问题...

而如果用户在工作时改变了市场观察中的字符顺序,是否也会成为一个错误?

 
AlexSTAL:

我不太明白这个问题...

如果用户在Marketwatch运行时改变了它的字符顺序,这是否也是一个错误?

当测试器运行时? 这不太可能,在测试器启动后,它是独立运行的,但在启动前的模式下,预计符号应该是匹配的(那些专家顾问的测试 之间,例如当改变一个EA或改变一个符号或周期时,测试器设置的任何变化都应该导致符号匹配,imho)。
 
Urain:

这与字符的顺序或数量无关,但顺序和数量在终端和测试者中同时是不同的。

一般来说,我通过文件传递测试器中的字符列表来解决这个问题。虽然真诚地相信这是一个错误。

符号数据库(市场观察)从服务器上以异步和随机方式更新。在任何情况下,你都不能依赖它的命令。

测试仪是一个独立的程序,通常是远程的。在测试器中,符号库没有被完全转移,只有那些在计算中使用的符号--这样做是为了节省资源。因此,符号的顺序(添加到测试器中的活动符号列表)是不同的。

在参数中使用符号名称- 这是一个更安全的选择。