Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 682

 

Tengo un gran programa con el mismo tipo de objetos. Me refiero a muchos tipos. Pero se repiten en diferentes módulos del programa. Y en los registros, una vez finalizada la prueba, por ejemplo, me aparecen xxx objetos no borrados. Y así en varios tipos.

¿Cómo puedo saber dónde no estoy borrando objetos? ¿Hay alguna herramienta para esto?

 
mbjen:

Tengo un gran programa con el mismo tipo de objetos. Me refiero a muchos tipos. Pero se repiten en diferentes módulos del programa. Y en los registros, una vez finalizada la prueba, por ejemplo, me aparecen xxx objetos no borrados. Y así en varios tipos.

¿Cómo puedo saber dónde no estoy borrando objetos? ¿Hay alguna herramienta para esto?

Error de la construcción de 1930.

 
¡El EA de prueba de alguna manera abrió BUYSTOP por debajo del precio! Ahora ni siquiera puedo cerrar el pedido manualmente. ¿Cómo es posible?
Archivos adjuntos:
 

Me sorprendió encontrar que MQl5 soporta OpenCL

¿No ha escrito nadie un optimizador para robots durante este tiempo, de modo que millones de ejecuciones no llevarían siglos, sino al menos años? :)

 
Igor Makanu:

significa que estás contando con cada tick el código que presentaste y no inicializando las variablesSredRazmax ySredRazmin

Es un buen hábito inicializar las variables antes de usarlas - eso es lo que te enseñan las universidades, reduce el tiempo que se tarda en encontrar errores ;)

Los inicialicé al principio, y en el comentario puedes ver otro array elemento por elemento (para comprobar y el 0 no cambia, por lo que la fórmula debería funcionar,) Aquí está el código completo:

//+------------------------------------------------------------------+
//|                                                           01.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

#property indicator_buffers 1
//#property indicator_color1 Red
//#property indicator_width1 1

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern int nn=30;

int shift, ww=0;
double zz, SredRazmax, SredRazmin, Sredn; 
double HZZ[];


int OnInit()
  {
//--- indicator buffers mapping
    SetIndexBuffer(0, HZZ);
 // SetIndexStyle(0, DRAW_SECTION);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
  for(shift = 0; shift <= Bars-1; shift++)
  {
      zz = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, shift);
           if(zz > 0.0)
           {
           HZZ[ww]=zz;
           ww++;          
           }
  }
   
  
       for(ww=0;ww<=nn;ww++)
       {
      if(HZZ[ww]>HZZ[ww+1]){SredRazmax += HZZ[ww];}     
      if(HZZ[ww]<HZZ[ww+1]){SredRazmin += HZZ[ww+1];}
      
       
  Comment("Средний размах = ", (SredRazmax-SredRazmin)/nn,",",HZZ[0],",",HZZ[1],",",HZZ[2],",",HZZ[3],",",HZZ[4]); 
        }      
   
//---------------------------------------------+
//расчет среднего значения           
//---------------------------------------------+      

   //    for(ww=0;ww<=nn;ww++){
   //    if(HZZ[ww]>HZZ[ww+1]){Sredn += HZZ[ww]-HZZ[ww+1];}     
   //    if(HZZ[ww]<HZZ[ww+1]){Sredn += HZZ[ww+1]-HZZ[ww];}
       
 // Comment("Средний размах = ", Sredn,",",HZZ[0],",",HZZ[1],",",HZZ[2],",",HZZ[3],",",HZZ[4]); 

            
         
     
       
//--- return value of prev_calculated for next call
    return(0);

  }
 

¿Qué es? Tengo MT4. Construye 1090.

 
mbjen:

¿Qué es? Tengo MT4. Construye 1090.

Un objeto creado mediante new debe adjuntarse a una matriz de objetos o eliminarse por sí mismo en OnDeinit()
 
Dmitry Belov:

Los inicialicé al principio, y el comentario da salida a otro array elemento por elemento (para comprobar que el aspecto y el 0 no cambian, por lo que la fórmula debería funcionar,) Aquí está el código completo:

No los has inicializado al principio ni en ningún sitio, sólo los has declarado

Escribí antes de usar, es decir, si tienes las variables SredRazmax, SredRazmin, Sredn son sumas de valores del array, entonces para calcular correctamente la suma, necesitas poner a cero la variable y además añadir valores del array y guardarlos en esta variable

es decir

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
    SredRazmax = 0.0;
    SredRazmin = 0.0;
    Sredn = 0.0;
    .....

Y la segunda, lo que tienes una duda, en el indicador cada tick se llamará aOnCalculate() y significa que contará constantemente los topes de ZigZag en cada tick, es decir, aproximadamente 40-60 veces por segundo

 
Artyom Trishkin:
Un objeto creado por new debe adjuntarse a una matriz de objetos o eliminarse por sí mismo en OnDeinit()

Gracias por la iluminación. Pero al menos deberías leer mi pregunta.

 
mbjen:

Gracias por la iluminación. Pero al menos deberías leer mi pregunta.

Lo hice y lo contesté.
Razón de la queja: