Errores, fallos, preguntas - página 2247

 
A100:
build 1755\1795 compila sin errores. Así que depende del médico... Sobre todo porque está bien sin la plantilla... ¡¿y cómo podría afectarle la plantilla?!

Estoy usando 1816. Sí, compila en 1795 sin problemas. Miré otro 1881 - no compila. Así que, sobre el doc, ese fue un punto fuerte.

 
fxsaber:

Estaría bien ver un ejemplo de usabilidad.

Dado que la STL proviene de C++, los ejemplos de usabilidad se pueden ver allí. El punto de portar a MQL es replicar tanto como sea posible el principio de abstracción de contenedores y la generalización de algoritmos. En particular, puede simplificar el estilo de programación - escribir en una línea lo que de otro modo se suele escribir como varios bucles con cálculos.

 
Stanislav Korotky:

Como la STL proviene de C++, puedes ver ejemplos de cómo utilizarla allí.

Por desgracia, no entiendo este idioma.

 

¿Es correcto que en los indicadores las variables globales se pongan a cero cuando se cambia el periodo ????

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);
  }

En teoría debería ser como en los EAs, no deberían resetearse.....

¿Cómo guardo los datos de las variables globales cuando cambio de periodo?

 
Vladimir Pastushak:

Chicos, ¿es correcto que las variables globales se restablezcan cuando se cambia de periodo en los indicadores ????

Me parece anormal que no se pongan a cero en los EAs
 
TheXpert:
Me parece anormal que no se pongan a cero en los EAs

Dichas variables deben ser restablecidas si es necesario.

Una variable global no debe reiniciarse cuando se cambia el periodo...

No tenemos forma de guardar los datos cuando el periodo cambia...
 
Vladimir Pastushak:

Dichas variables deben ser restablecidas si es necesario.

Una variable global no debe reiniciarse cuando se cambia el periodo...

No tenemos la opción de guardar los datos cuando el periodo cambia...

¿Cómo no es posible?
Hay muchas opciones.
La más conveniente me parece que es a través de un recurso.
Yo mismo lo uso desde hace mucho tiempo.

 
Nikolai Semko:

¿Cómo no va a serlo?
Hay muchas opciones.
Lo más conveniente para mí parece ser a través de rusursy.
Yo mismo he estado usando durante mucho tiempo.

Dame un ejemplo, por favor...

 
Vladimir Pastushak:

Dichas variables deben ser restablecidas si es necesario.

Una variable global no debe reiniciarse cuando se cambia el periodo...

No tenemos la opción de guardar los datos cuando el periodo cambia...

¿Por qué no habría de hacerlo? Nuevo período --> nueva instancia de indicador. ¿Y qué puede tener que ver una variable de una instancia de indicador eliminada con una nueva?

 
Vladimir Pastushak:

Dame un ejemplo, por favor...

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);}
  }
//+------------------------------------------------------------------+

Y aquí está el indicador mismo, usando esta clase
Haz clic en el TF y verás que todo está bien.
#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);  
  }
Razón de la queja: