mql5语言的特点、微妙之处以及技巧 - 页 39

 
瓦西里-索科洛夫
没有提到要完全取代铸件。
是的,他们切断了可能性。
 
瓦西里-索科洛夫

通过写/读二进制的任意铸造...熄灯。没有必要进一步阅读...

你有更好的建议吗?
 
瓦西里-索科洛夫

p.s. 我看了你的代码。

通过写/读二进制的任意铸造...熄灯。不要再读下去了...

有通过联盟的任意铸造--任何简单的结构 都不需要自定义构造器和复制操作符。对于本资源中的所有文章,这种铸造方式将发挥作用。

template <typename T>
class CASTING
{
public:
  template <typename T1>
  static const T Casting( const T1 &Value )
  {
    union CAST
    {
      T1 Value1;
      const T Value2;

      CAST( const T1 &Value)
      {
        this.Value1 = Value; // кастомный оператор может все испортить
      }
    };

    const CAST Union(Value);

    return(Union.Value2);
  }
};

#define _C(A, B) CASTING<A>::Casting(B)

void OnStart()
{
  MqlTick Tick = {0};
  
  Tick = _C(MqlTick, Tick); // Tick = (MqlTick)Tick;
}

但如果你想覆盖100%的铸造--通过文件。有一个选择。

 
组合器
有更好的建议吗?
显然,不要在结构和赋值运算符 中使用自定义构造函数。编写简单的代码。
 
瓦西里-索科洛夫
显然,不要在结构和赋值运算符 中使用自定义构造函数。编写简单的代码。
那么你就不应该使用结构的常量字段。
 

这是一个受欢迎的测试

if (ArrayResize(Array, NewSize) == NewSize)
// ....

完全不等同于

if (ArrayResize(Array, NewSize) == ArraySize(Array))
// ....
 

实际上,ArrayResize()返回

返回值

如果成功,该函数返回调整大小后数组中包含的所有元素的数量;否则,返回-1,数组不被调整大小


 
罗费尔德

实际上,ArrayResize()返回

这种行为在一年前就已经改变了。本周在帮助中澄清了这一点。
 
CopyTicks仅在指标中是异步的

现在,我们只有一个指标要求,用我们拥有的数据离开。而分页对自己来说是有效的。

专家和脚本的做法略有不同。在那里,进行了几次尝试,以等待必要的数据。只要有数据进来,就会进行尝试。一旦连接出现问题,我们就立即放弃连接。

 

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

5月的MetaQuotes-演示锦标赛报名

Vladimir Karputov, 2017.05.05 11:54

已添加。是的,我需要在终端的整个信号基础上进行循环。

讯源总数

返回终端中可用的信号总量


顺便说一下,我建议在运行前(特别是在从另一个服务器切换或刚刚启动后)至少点击一次终端的 "信号 "选项卡--这应该激活实际数据库的分页。