¿Qué causa el error de desbordamiento de pila en mql4?

 

¿Qué causa el error de desbordamiento de pila en mql4 durante la compilación? Sospecho que el uso de una función para crear objetos. A continuación se muestra la función que se ha llamado más de un centenar de veces para crear objetos.

int ObCreate(string ObName,double Xdist,double Ydist,double Zoom)
 {
 
   ObjectCreate(ObName, OBJ_LABEL, 0, 0, 0);  // Creating obj.
   ObjectSet(ObName, OBJPROP_CORNER, 0);    // Reference corner
   ObjectSet(ObName, OBJPROP_XDISTANCE, Xdist*ZoomTimes);// X coordinate   
   ObjectSet(ObName, OBJPROP_YDISTANCE, ZoomTimes*Ydist);// Y coordinate
 return(0);
 }

A continuación se muestra un ejemplo de uso

   ObCreate("EURUSD",Column1x,15,ZoomTimes);

He creado el mismo número de objetos de forma normal sin obtener este error, pero cuando introduje y usé esta función para crear los objetos restantes es cuando el error apareció. Ver el ejemplo de abajo que no introduce el error a pesar de que su más intensivo de trabajo para el número de objetos.

   ObjectCreate("EURUSD", OBJ_LABEL, 0, 0, 0);  // Creating obj.
   ObjectSet("EURUSD", OBJPROP_CORNER, 0);    // Reference corner
   ObjectSet("EURUSD", OBJPROP_XDISTANCE, Column1x*ZoomTimes);// X coordinate   
   ObjectSet("EURUSD", OBJPROP_YDISTANCE, ZoomTimes*15);// Y coordinate
 
tonny:

¿Qué causa el error de desbordamiento de pila en mql4? Sospecho que el uso de una función para crear objetos. A continuación se muestra la función que se ha llamado más de un centenar de veces para crear objetos.

A continuación se muestra un ejemplo de uso

He creado el mismo número de objetos de forma normal sin obtener este error, pero cuando introduje y usé esta función para crear los objetos restantes es cuando el error apareció. Ver el ejemplo de abajo que no introduce el error a pesar de que su más intensivo de trabajo para el número de objetos.

Nunca he tenido un desbordamiento de pila, por lo que he leído suelen ser causados por la recursividad pero no veo eso en el código que has puesto... ¿por qué tu función es de tipo int? ¿qué sentido tiene pasar la variable double zoom cuando no la usas?

Una cosa más, los valores de OBJPROP_XDISTANCE y OBJPROP_YDISTANCE se supone que son int no double.
 
RaptorUK:
Nunca he tenido un desbordamiento de pila, por lo que he leído suelen ser causados por la recursividad pero no veo eso en el código que has puesto... ¿por qué tu función es de tipo int? ¿qué sentido tiene pasar la variable double zoom cuando no la usas?

Una cosa más, los valores de OBJPROP_XDISTANCE y OBJPROP_YDISTANCE se supone que son int y no double.


Eso es lo que me extraña.

RaptorUK:
Nunca he tenido un desbordamiento de pila, por lo que he leído suelen ser causados por la recursividad pero no veo eso en el código que has puesto... ¿por qué tu función es de tipo int? ¿qué sentido tiene pasar la variable double zoom cuando no la usas?

Una cosa más, los valores de OBJPROP_XDISTANCE y OBJPROP_YDISTANCE se supone que son int no double.

Hice un poco de encontrar y reemplazar y im todavía para corregir la parte inferior del indicador.

RaptorUK:
Nunca he tenido un desbordamiento de pila, por lo que he leído suelen ser causados por la recursividad pero no veo eso en el código que has puesto... ¿por qué tu función es de tipo int? ¿qué sentido tiene pasar la variable double zoom cuando no la usas?

Una cosa más, los valores de OBJPROP_XDISTANCE y OBJPROP_YDISTANCE se supone que son int no double.

Hombre por favor, lea más libro sobre ObjectSet(). Espera, déjame ayudarte. Abajo hay un extracto.

bool ObjectSet( string name, int index, double value)
 
tonny:


Hombre, por favor, lee más libros sobre ObjectSet(). Espera, déjame ayudarte. Abajo hay un extracto.

Voy a ver tu cita y te subo con esto.......

OBJPROP_XDISTANCE102intValor entero para establecer/obtener la propiedad del objeto de distancia X del ancla en píxeles.
OBJPROP_YDISTANCE103intValor entero para establecer/obtener la propiedad del objeto de distancia Y del ancla en píxeles.

¿se usaría un double para esto?

OBJPROP_BACK9boolValor booleano para establecer/obtener la bandera de dibujo de fondo para el objeto.
OBJPROP_RAY10boolValor booleano para establecer/obtener la bandera de rayos del objeto.
OBJPROP_ELLIPSE11boolValor booleano para establecer/obtener la bandera de elipse para los arcos de fibo.


 
tonny: Realmente me he perdido en lo que esperabas. A mí tampoco me ha aparecido el error de "desbordamiento depila " durante la compilación. ¿Podrías darnos pautas exactas de cómo debemos reproducir el problema?
 
Ovo:
tonny: Realmente me he perdido en lo que esperabas. A mí tampoco me apareció el error de "desbordamiento de pila" durante la compilación. ¿Podrías darnos pautas exactas de cómo debemos reproducir el problema?
¿Cómo intentabas reproducirlo? Lo de arriba es sólo una parte del código que dije claramente, he llamado a la función más de cien veces, así que si quieres reproducirlo podrías simular las 108 llamadas de la función.
 
RaptorUK:

Voy a ver su cotización y le subo con esto...............................

¿usarías un doble para esto?

En lo que estoy haciendo no hace ninguna diferencia hay más que el poco ive publicado aquí.
 
tonny:
En lo que estoy haciendo no hace ninguna diferencia hay más que el poco ive publicado aquí.
Si no quieres publicar todo el código, para que se pueda reproducir el error, por favor codifica algo que puedas publicar en su totalidad que reproduzca el mismo error.
 
RaptorUK:
Si no quieres publicar todo el código, para que se pueda reproducir el error, por favor codifica algo que puedas publicar en su totalidad que reproduzca el mismo error.

De acuerdo.
 

Hice un experimento y sustituí algunos de estos objetos

ObjectCreate("EURUSD", OBJ_LABEL, 0, 0, 0);  // Creating obj.
   ObjectSet("EURUSD", OBJPROP_CORNER, 0);    // Reference corner
   ObjectSet("EURUSD", OBJPROP_XDISTANCE, Column1x*ZoomTimes);// X coordinate   
   ObjectSet("EURUSD", OBJPROP_YDISTANCE, ZoomTimes*15);// Y coordinate

y utilicé un estilo de función como el de abajo y el error desapareció. Es como si el IDE pudiera tomar menos de lo anterior que de lo siguiente. Intentaré reemplazar todo el estilo de arriba con el estilo de abajo y veré si aparece algo más.

ObCreate("EURUSD",Column1x,15,ZoomTimes);
 
He adjuntado aquí el script que produce el error y la versión neutralizada que no lo produce. Quizás alguien pueda tener una solución diferente. Hombre este error es grande.
Archivos adjuntos: