错误、漏洞、问题 - 页 2206

 
Alexander Nikolaev:
谁知道为什么我不能在Metaquotes模拟服务器上访问最近创建的模拟账户,这些账户是直接在MT4终端创建的?我在一周前创建了一个。头两天还能用,但过了一段时间,账户就消失了,好像是密码不对(虽然是复制的,但我不可能输入错误的密码),我不得不重新打开账户,测试专家顾问。真的有必要每周都创建一个新的账户吗?
长期以来一直如此,如果账户上没有活动,就会被关闭。
 
Denis Sartakov:

我最近写了一个这样的函数,你自己试一下就知道了。

如果不成功,我会解释。

谢谢

 

另一个问题。

CHART_IS_MAXIMIZEDCHART_IS_MINIMIZED 的描述中没有说这些属性是只读的,但是ChartSetInteger(ChartID(),CHART_IS_MAXIMIZED,true);没有工作,可能是什么问题?

 

为什么不能编译?

template <typename T>
void f(T &t)
{
   t.f();
}

void OnStart()
{
   class Q
   {
   public:
      void f() {}
   }q;
   
   f(q);
}

旧版本的编译器对这种结构吃得很好,采取了重新编译有效的早期代码和错误。是意外还是故意折断的?

 
pavlick_:

为什么不能编译?

旧版本的编译器对这样的结构没有问题,我重新编译以前有效的代码,出现了错误。是意外还是故意折断的?

但我们能否根据语言规范在函数内创建类?

 
Konstantin:

但你能根据语言规范在函数中创建类吗?

什么语言规范?Mcl根本没有很好的文档,而在c++中,从参考文献来看,这是正常的做法。

地方班

一个类的声明可以出现在命名空间范围内(在这种情况下,它定义了一个普通的类),在另一个类的定义内(在这种情况下,它定义了一个嵌套 的类),以及在一个函数的主体内,在这种情况下,它定义了一个局部的类。这样的类的名字只存在于函数范围内,在外面是无法访问的。

http://en.cppreference.com/w/cpp/language/class

 

答案是沉默,像往常一样。实际上,解决这个问题很容易--我没有把它优雅地放在函数里面,而是把它放在外面,取了一个令人生畏的名字internal__Chart_bar_shift_Comp。但问题是不同的--他们只是切割了这样一个构造。也就是说,不能保证我的代码明天会被编译。你可以以某种方式用键来选择方言-std=mql18,例如。但是,不,不关心向后兼容的问题。我觉得很难想象这在某些gcc上是可能的。

我想对于一个交易平台来说,一个简单的脚本mql4已经很足够了。或者更好的是,用脚本/专家导入 插件(在动态库中)。但是不,你需要你自己的,正如他们在这里经常说的,"基础设施",在那里你是大而重要的。

 
pavlick_:

根据哪种语言规范?Mcl根本没有很好的文档,但在c++中,这是正常的做法,来自参考书。

地方班

一个类的声明可以出现在命名空间范围内(在这种情况下,它定义了一个普通的类),在另一个类的定义内(在这种情况下,它定义了一个嵌套 的类),以及在一个函数的主体内,在这种情况下,它定义了一个局部的类。这样的类的名字只存在于函数范围内,在外面是无法访问的。

http://en.cppreference.com/w/cpp/language/class

我在某个地方遇到过讨论,说Mql5规范中没有预见到,在论坛上查看,也有关于Lambas的讨论,说它们没有被预见到。

 
pavlick_:

答案是沉默,像往常一样。实际上,要解决这个问题很容易--我没有把它优雅地放在函数里面,而是把它放在外面,取了一个令人生畏的名字internal__Chart_bar_shift_Comp。但问题是不同的--他们只是切割了这样一个构造。也就是说,不能保证我的代码明天会被编译。你可以以某种方式用键来选择方言-std=mql18,例如。但是,不,不关心向后兼容的问题。我很难想象这在某些gcc中是可能的。

可能,一个简单的mql4脚本对于一个交易平台来说已经很足够了。或者更好--用脚本/专家导入插件(在动态库中)。但是不,你需要你自己的,正如他们在这里经常说的,"基础设施",在那里你是大而重要的。

说实话,我不明白他们为什么要这样做。 把所有的辅助实体放在源代码的单独列表中会更容易,例如util.mqh

 
Konstantin:

说实话,我不明白为什么,把所有的辅助实体放在源代码的一个单独的列表中更容易,例如util.mqh

这是一个二进制搜索的谓词,不具有普遍性,在一个函数中只使用一次,为什么要把它放在某个地方?例如,我们有一个结构数组(没有比较运算符,它们不能用<笨拙地进行比较,或者比较条件非常棘手),我们想通过二进制搜索找到一个元素。在plus库中,算法函数需要一个漏斗(方便地以lambda的形式传递),在这个漏斗中我们比较数组元素。在我看来,这是一个非常优雅的解决方案。

int main()
{
    typedef pair<int, double> myPair; // typedef to shorten the type name
    vector <myPair> vec(5);

    myPair low_val; // reference value (set this up as you want)
    auto it = lower_bound(vec.begin(), vec.end(), low_val, 
        [](myPair lhs, myPair rhs) -> bool { return lhs.second < rhs.second; });
}

但由于μl的限制,创建了一个谓词类的实例。