错误、漏洞、问题 - 页 2931

 

10日,终端的内存消耗显示为高。在Windows服务器上则要少得多。

显然,内存消耗的计算取决于操作系统。

 
fxsaber:

这种功能,即使你知道,你也要在脑子里把整层的内容重新提出来。

在这里,我在做一个自我报告的存在认定。在切换TF的时候,它似乎是有效的。

我并没有真正进入其中,但从这些台词来看。

    const int Total = ::IndicatorParameters(handle, Type, Params);
    ::IndicatorRelease(handle);

    uchar Bytes[];

    for (int i = 1; i < Total; i++)
    {
      ::ArrayCopy(Bytes, _R(Params[i].double_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].integer_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].string_value).Bytes, ::ArraySize(Bytes));
    }

指标名称(在第0个参数中)在创建签名时没有被使用,这很奇怪。

 
fxsaber:

10日,终端的内存消耗显示为高。在Windows服务器上则要少得多。

显然,内存消耗的计算取决于操作系统。

相反,服务器轴上的内存预留更为理想。
 
Stanislav Korotky:

我并没有真正进入其中,但从这些台词来看。

指标名称(在第0个参数中)在签名创建中没有使用,这很奇怪。

return("::" + (string)::ChartID() + (string)INIT_SYNC::crc64(Bytes) + ::MQLInfoString(MQL_PROGRAM_NAME));
 
fxsaber:

是的,我遇到过这种情况。验证开始第一遍,后面的就不启动了。启动按钮不能启动。

调试了 - 它运行了。在发布版中做了调试,按理说一切都很好,但却没有效果。


现在我特别推出了调试版本。它按下启动按钮没有任何问题。

无法弄清该错误的原因。

呵最近看到这个答案。

据我所知,是我的本地代理没有启动,为什么没有搞清楚。在最新版本的终端中,它似乎启动得更好。

 
fxsaber:

10日,终端的内存消耗显示为高。在Windows服务器上则要少得多。

显然,内存消耗的计算取决于操作系统。

我有一种感觉,在Windows服务器上的服务器不太正确。

或者,更确切地说,图形设置 不断被重置,这取决于内存的短缺。同时,调度员的一切似乎都很正常。不是vpc有限,就是mt5更贪婪。

 
Print(PERIOD_H4);

得到的结果是16388。我怎样才能做相反的程序:把数值16388 替换掉,得到一个有周期名称PERIOD_H4 的字符串?是否有一个内置的函数,或者我应该自己写一个转换器?如果没有内置函数,那么自定义函数会是什么样子?是否有必要编写类似键值匹配的东西?

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

得到的结果是16388。我怎样才能做相反的程序:把数值16388 替换掉,得到一个有周期名称PERIOD_H4 的字符串?是否有一个内置的函数,或者我应该自己写一个转换器?如果没有内置函数,那么自定义函数会是什么样子?是否有必要编写类似键值匹配的东西?

Print(EnumToString((ENUM_TIMEFRAMES)16388));
 
fxsaber
Print(EnumToString((ENUM_TIMEFRAMES)16388));

事实证明,有的。这让人松了一口气。谢谢你。

 

我正试图让用户从指标设置窗口的菜单中选择两个时间段和它们的数量。

enum PERIOD
  {
   NO_PERIOD=0,      // NOT USED
   P1=PERIOD_H1,     // H1 
   P2=PERIOD_H2,     // H2 
   P3=PERIOD_H4,     // H4 
  };

input PERIOD TIMEFRAME_1=P1;
input PERIOD TIMEFRAME_2=P2;
input PERIOD TIMEFRAME_3=P3;

ENUM_TIMEFRAMES PArray[3]={P1,P2,P3};

而我想让选定的时期直接进入PArray。但从上面的例子中可以看出,我给数组分配的是程序中预先设定的值,而不是用户输入的值。此外,编译器会产生警告。

implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      28
   'ENUM_TIMEFRAMES::PERIOD_H1' will be used instead of 'PERIOD::P1'    test.mq5        23      28
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      31
   'ENUM_TIMEFRAMES::PERIOD_H2' will be used instead of 'PERIOD::P2'    test.mq5        23      31
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      34
   'ENUM_TIMEFRAMES::PERIOD_H4' will be used instead of 'PERIOD::P3'    test.mq5        23      34

当我试图将最后一行替换为。

ENUM_TIMEFRAMES PArray[3]={TIMEFRAME_1,TIMEFRAME_2,TIMEFRAME_3};

编译器就会产生一个错误。

'TIMEFRAME_1' - constant expression required    test.mq5        23      28
'TIMEFRAME_2' - constant expression required    test.mq5        23      40
'TIMEFRAME_3' - constant expression required    test.mq5        23      52

另外,NO_PERIOD=0意味着PERIOD_CURRENT,我不需要这个,我需要类似false或EMPTY_VALUE的东西,但它们根本不适合。

如何解决这个问题?

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