错误、漏洞、问题 - 页 3018

 
Artyom Trishkin:

然后你要画到指标线+烛台的指标,应该画在烛台下面。对于其他的--在蜡烛图上方绘制的,设置图表在背景中绘制蜡烛图。我个人认为没有任何其他办法。

但是,就在MQL5中构建程序的便利性和灵活性而言,你可以要求MQL5开发人员为指标缓冲区 创建一个属性(针对任何一个指标缓冲区)。

 

在build 2940中,他们重写了Alglib,现在处理复数是一个结构(以前有一个类)。

并犯了错误。

#include <Math\Alglib\complex.mqh>
void OnStart()
{
      al_complex a(1, 2);
      al_complex b(3, 4);
      a += b;
      printf("tst#1 : a.real = %f , a.imag = %f", a.re, a.im);

      al_complex c(1, 2);
      al_complex d(3, 4);
      c -= d;
      printf("tst#2 : c.real = %f , c.imag = %f", c.re, c.im);
 }

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#2 : c.real = 4.000000 , c.imag = 6.000000


来源复杂的.mqh

//+------------------------------------------------------------------+
//| Overloading (+=)                                                 |
//+------------------------------------------------------------------+
void al_complex::operator+=(const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
//+------------------------------------------------------------------+
//| Overloading (-=)                                                 |
//+------------------------------------------------------------------+
void al_complex::operator-=(const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
 

我不记得宣布了一个新的数据类型复合体,但没有插件库,一切都能正常工作。

void OnStart()
{
      complex a(1, 2);
      complex b(3, 4);
      a += b;
      printf("tst#1 : a.real = %f , a.imag = %f", a.real, a.imag);

      complex c(1, 2);
      complex d(3, 4);
      c -= d;
      printf("tst#2 : c.real = %f , c.imag = %f", c.real, c.imag);
 }

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




新的复杂类型从何而来?....帮助中没有任何内容,还增加了什么内容?

 
Igor Makanu:

我不记得宣布了一个新的数据类型复合体,但没有插件库,一切都能正常工作。

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




新的复杂类型从何而来?....帮助中没有任何内容,还增加了什么内容?

有一个来自开发商的确认,即增加了新的类型。最近。

 
Igor Makanu:

我不记得宣布了一个新的数据类型复合体,但没有插件库,一切都能正常工作。

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000

新的复杂类型从何而来?....在帮助中没有任何内容,还有什么被添加?

在这里

7.MQL5:增加了对复数 运算的支持。


增加了新的内置类型 "复合"。
struct complex
  {
   double             real;   // вещественная часть
   double             imag;   // мнимая часть
  };
复杂 "类型可以作为MQL5-函数的参数以值传递(与通常的结构相反,它只能以引用方式传递)。对于从DLL导入的函数,"复合 "类型必须只通过引用来传递。

为了描述复合常数,使用了后缀'i':
complex square(complex c)
  {
   return(c*c);
  }
  
void OnStart()
  {
   Print(square(1+2 i));  // в качестве параметра передается константа
  }

// будет выведено "(-3,4)" - это строковое представление комплексного числа
对于复数,只有简单的运算:=,+,-,*,/,+=,-=,*=,/=,==,!=。

未来还将增加更多的数学功能:获得绝对值、正弦、余弦和其他许多功能。
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
  • 2021.05.14
  • www.mql5.com
В пятницу 21 мая 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Artyom Trishkin:

在这里

7.MQL5:增加了对处理复数 的支持。


增加了一个新的内置类型 "复合"。
复合类型可以作为MQL5函数的参数以值传递(与通常的结构相反,它只能以引用方式传递)。对于从DLL导入的函数,"复杂 "类型必须只通过引用来传递。

为了描述复数常数,使用了后缀'i':
对于复数,目前只有简单的操作:=, +, -, *, /, +=, -=, *=, /=, ==, !=。

未来还将增加更多的数学功能:获得绝对值、正弦、余弦和其他许多功能。

好的,谢谢,很遗憾,帮助添加得太晚了

 
执行错误。
void OnStart()
{
    const string text[] = { "ABC", "", "ABC" };
    uchar array[];
    int start = 0;
    int n = 0;
    for ( int i = 0; i < ArraySize( text ); i++ )
    {
        const int count = StringLen( text[ i ] );
        n += StringToCharArray( text[ i ], array, start, count );
        start += count;
    }
    Print( ArraySize( array ), ":", n );
}

结果:6:7

预期:6:6

 
A100:
执行错误。

结果:6:7

预期:6:6

count = 0 - 只复制字符串的结尾。然而,""!"=NULL

 
fxsaber:

count = 0 - 只复制字符串的结尾。还是"" !=NULL

又有多少人

StringToCharArray

它应该在count = 0时复制吗?

提示:当count = 3时,将复制3个字符。

 
A100:

当count = 0时,应该复制这些字符?

看起来count=0与count=-1的工作方式相同,在""的情况下,它复制了一个终端空,所以没有额外的检查,空字符串无法正常转换。

原因: