错误、漏洞、问题 - 页 2247

 
A100:
build 1755/1795编译时没有错误。所以这取决于医生...特别是在没有模板的情况下也很好......而且模板怎么会影响它呢!?

我正在使用1816。是的,它在1795中编译没有任何问题。看了另一个1881年--它不能编译。因此,关于医生,这是一个强项。

 
fxsaber:

如果能看到一个可用性的例子就更好了。

由于STL来自于C++,在那里可以看到可用性的例子。移植到MQL的意义在于尽可能地复制容器抽象和算法泛化的原则。特别是,你可以简化编程风格--把通常写成几个带计算的循环的东西写在一行中。

 
Stanislav Korotky:

由于STL来自于C++,你可以在那里看到如何使用它的例子。

不幸的是,我不懂这种语言。

 

在指标中,当周期改变时,全局变量 被重置为零,这是否正确?????。

string test="";
int OnInit()
  {
   Print("N 1 = ",test);
   test="Rezult";
   Print("N 2 = ",test);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   Print("N 3 = ",test);
   return(rates_total);
  }

在理论上,它应该像在EA中一样,他们不应该重新设置.....。

当我改变周期时,如何保存全局变量数据?

 
Vladimir Pastushak:

伙计们,当你改变指标中的周期时,全局变量 被重置,这是否正确?????。

我认为他们没有在EA中归零是不正常的。
 
TheXpert:
我觉得不正常的是,他们没有在EA中归零。

如有必要,应重置此类变量。

如果周期改变,全局变量 不应该被重置...

我们没有办法在周期变化时保存数据...
 
Vladimir Pastushak:

如有必要,应重置此类变量。

一个全局变量 不应该在周期改变时被重置...

我们没有选择在周期变化时保存数据...

这怎么可能呢?
有很多选择。
在我看来,最方便的是通过一个资源。
我自己已经用了很长时间了。

 
Nikolai Semko:

怎么会没有呢?
有很多选择。
对我来说最方便的似乎是通过Rusursy。
我自己长期以来一直在使用。

请给我一个例子...

 
Vladimir Pastushak:

如有必要,应重置此类变量。

一个全局变量 应该在周期改变时被重置...

我们没有选择在周期变化时保存数据...

为什么不呢?新的时期 --> 新的指标实例。而一个被删除的指标实例的变量与一个新的指标实例能有什么关系?

 
Vladimir Pastushak:

请给我一个例子...

union DoubleUint { double d; uint u[2]; };


class Cdouble
  {
private:
   string            Name;
   uint              Var[2];
   uint              w;
   uint              h;
   DoubleUint        du;

public:
                     Cdouble(const string name,double var);
                    ~Cdouble();
   bool              Ok;
   bool              Set(double var);
   double            value;
  };

Cdouble::Cdouble(const string name,double var)
  {
   w=2;
   h=1;
   Ok=false;
   Name="::"+name+ IntegerToString(ChartGetInteger(0,CHART_WINDOW_HANDLE));
   if(ResourceReadImage(Name,Var,w,h))
     {
      du.u[0]=Var[0];
      du.u[1]=Var[1];
      value=du.d;
      Ok=true;
     }
   else
     {
      du.d=var;
      Var[0]=du.u[0];
      Var[1]=du.u[1];
      value=var;
      if(!ResourceCreate(Name,Var,2,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA)) printf("Error create Resource: "+DoubleToString(GetLastError(),0));
      else Ok=true;
     }
  }

Cdouble::~Cdouble()
  {
   if(_UninitReason!=REASON_RECOMPILE && _UninitReason!=REASON_CHARTCHANGE) ResourceFree(Name);
  }
//+------------------------------------------------------------------+
bool Cdouble::Set(double var)
  {
   du.d=var;
   Var[0]=du.u[0];
   Var[1]=du.u[1];
   value=var;
   Ok=false;
   if(!ResourceCreate(Name,Var,2,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA)) {printf("Error create Resource: "+DoubleToString(GetLastError(),0)); return(false);}
   else { Ok=true; return(true);}
  }
//+------------------------------------------------------------------+

这里是指标本身,使用这个类
点击TF,你会看到一切都很好。
#include <CVar\Variable.mqh>

Cdouble d ("abracadabra",-898767.98798);

int OnInit()
  {
   EventSetMillisecondTimer(1000);
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }

void OnTimer()
  {
   Comment(DoubleToString(d.value,5));
   d.Set(d.value+0.01);  
  }