Errores, fallos, preguntas - página 2531

 
Aleksey Vyazmikin:

Es una pena que ni siquiera nos atrevamos a participar en las pruebas. El tema es interesante en mi opinión, porque resulta que los distintos procesadores manejan tareas diferentes, pero aún no hay suficientes estadísticas.

Mi procesador de rarezas sólo queda en mi poder y en un museo, apenas interesa a nadie.

 
Aleksey Vyazmikin:

Es una lástima que ni siquiera se haya atrevido a participar en las pruebas.

Quería ejecutar una prueba en el primer día, pero el hilo ha crecido a varias páginas, algunos errores en la primera versión del código de prueba ... no leer más, mis propios intereses

Creo que necesito un manual claro (con imágenes ) y un mínimo de reflexión sobre lo que hay que hacer para el usuario, entonces la actividad del usuario puede aparecer

 
Igor Makanu:

Quise hacer la prueba el primer día, pero el hilo creció a varias páginas, algunos errores con la primera versión del código de la prueba... No quise leer más, me interesé por mis propios intereses

Creo que necesito un manual claro (con imágenes) y un mínimo de reflexión sobre lo que hay que hacer para el usuario, entonces la actividad del usuario puede aparecer

Y el propio foro es muy incómodo para algo así, necesitamos la oportunidad de que el autor del tema edite el primer mensaje al final de cualquier periodo, donde se encuentra toda la información necesaria y relevante, en lugar de buscar entre la masa de mensajes. En este formato, es sólo un hilo para flubear.

 

He aquí una pregunta.

Necesito almacenar un puntero a un array de tipo double[] (habitual, indicador) para que pueda ser referenciado dentro del programa.

Los desarrolladores estándar sugieren o bien pasar una referencia a este array a lo largo de la jerarquía de funciones, abarrotando los parámetros de entrada donde es absolutamente innecesario, o bien copiar todo el array a sí mismo encada tic, y luego utilizar una referencia a su array interno, que puede ser pasado y recordado y utilizado dentro de la jerarquía de funciones.

Ambas soluciones me parecen muy feas. Pasar una referencia a través de todo el árbol de llamadas ya es feo, y si tenemos en cuenta que no sabemos en qué momento podríamos necesitar acceder al array, se convierte en algo realmente estúpido.

Copiar todo el array en cada tic, cuando hay uno de origen, también es un poco de mentalidad, y lo más importante, se pierde productividad.

¿Alguien se ha encontrado con este problema? ¿Cómo evitar esta estúpida limitación?

Recuerdo que una vez, creo,fxsaber sugirió una función de copia de direcciones mediante alguna acción chamánica, pero no la encuentro.

¿Quién puede sugerir qué?

 
Vict:

Mi procesador de rarezas sólo está en mi poder y en un museo, no es interesante para nadie.

Siempre es interesante evaluar el progreso.


Igor Makanu:

Quería hacer la prueba el primer día, pero el hilo ha crecido hasta tener varias páginas, algunos fallos con la primera versión del código de prueba... No he seguido leyendo y me he interesado por mis propios intereses

Creo que necesito un manual claro (con imágenes ) y un mínimo de pensar qué hacer para el usuario, entonces la actividad del usuario puede aparecer

No debería haber ningún fallo ahí, los demás funcionan bien. Ahora hay una captura de pantalla de cómo debe configurarse el probador de estrategias.

No creí que fuera difícil configurar el optimizador en absoluto... Lo que no está claro ahora, déjame darte una pista.


Victora:

Y el propio foro es muy incómodo para algo así, necesitamos la posibilidad de que el autor del hilo edite el primer mensaje después de cualquier punto, donde se encuentra toda la información necesaria y relevante, en lugar de buscar entre la masa de mensajes. En este formato, es sólo un hilo para flubear.

No tenemos otro foro, actualizo los resultados regularmente cuando hay información - no es tan difícil de encontrar.

 
Georgiy Merts:

He aquí una pregunta.

Necesito almacenar un puntero a un array de tipo double[] (habitual, indicador) para que pueda ser referenciado dentro del programa.

Los desarrolladores estándar sugieren o bien pasar una referencia a este array a lo largo de la jerarquía de funciones, abarrotando los parámetros de entrada donde es absolutamente innecesario, o bien copiar todo el array a sí mismo encada tic, y luego utilizar una referencia a su array interno, que puede ser pasado y recordado y utilizado dentro de la jerarquía de funciones.

Ambas soluciones me parecen muy feas. Pasar una referencia a través de todo el árbol de llamadas ya es feo, y si tenemos en cuenta que no sabemos en qué momento podríamos necesitar acceder al array, se convierte en algo realmente estúpido.

Copiar todo el array en cada tic, cuando hay uno de origen, también es un poco de mentalidad, y lo más importante, se pierde productividad.

¿Alguien se ha encontrado con este problema? ¿Cómo evitar esta estúpida limitación?

Recuerdo que una vez, creo,fxsaber sugirió una función de copia de direcciones mediante alguna acción chamánica, pero no la encuentro.

¿Quién puede sugerir qué?

Si hablamos de mql5, podríamos envolver el indicador en una clase y, si es necesario, tirar de él, y en esa clase organizar la copia y el almacenamiento de los datos necesarios a la ngbin necesaria y controlar su actualización única en cada tick. Yo lo hago así.
 
Vladimir Simakov:
Si hablamos de mql5, entonces, como alternativa, convertimos el indicador en una clase y, si es necesario, la recuperamos y la utilizamos para almacenar y copiar los datos necesarios en la ngbin necesaria y controlar su actualización única en cada tick. Yo lo hago así.

Eso es lo que suelo hacer yo...

Pero no funciona con los topes indicadores. ¿O me he perdido algo y se puede hacer de alguna manera?

 
Georgiy Merts:

Pero con los topes indicadores, la envoltura no desaparece.

Siempre fue así.
 
Georgiy Merts:

Pero con los topes indicadores, la envoltura no pasa. ¿O me he perdido algo, se puede hacer de alguna manera?

todo funciona, pero las matrices que serán búferes indicadores deben describirse con el modificador public

He creado un indicador HMA para MQL4 - 4 indicadores en una subventana:

CHMA *hma[4];
int OnInit()
  {
//--- indicator buffers mapping
   int i=0;
   hma[0] = new CHMA(4,PeriodInd1,Method1,Price1,Shift1);
   hma[1] = new CHMA(3,PeriodInd2,Method2,Price2,Shift2);
   hma[2] = new CHMA(2,PeriodInd3,Method3,Price3,Shift3);
   hma[3] = new CHMA(1,PeriodInd4,Method4,Price4,Shift4);

   IndicatorBuffers(16);
   IndicatorSetDouble(INDICATOR_MINIMUM,0.0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,5.0);
   IndicatorSetInteger(INDICATOR_HEIGHT,IndHeight);
   while(i<8)       { SetIndexBuffer(i,hma[int(i/2)].Uptrend); SetIndexBuffer(i+1,hma[int(i/2)].Dntrend); i+=2; 			}
   for(i=0;i<4;i++) { SetIndexBuffer(i+8,hma[i].ExtMapBuffer); SetIndexBuffer(i+12,hma[i].vect); 					}
   for(i=0;i<8;i++) { SetIndexStyle(i,DRAW_ARROW,EMPTY,ArrowWidth, i%2==0 ? ArrowColor1 : ArrowColor2); SetIndexArrow(i,ArrowCode); 	}
   for(i=8;i<17;i++){ SetIndexStyle(i,DRAW_NONE);											}
   IndicatorShortName("");
   IndicatorDigits(0);
//---
   return(INIT_SUCCEEDED);
  }

y la propia clase donde se acaba de copiar el cuerpo del antiguo indicador:

class CHMA
  {
private:
   int               period_,shift_,p,level_;
   ENUM_APPLIED_PRICE price_;
   ENUM_MA_METHOD    method_;
   double            GetWMA(int x,int per){ return(iMA(NULL,0,per,0,method_,price_,x+shift_)); }
public:
   double            ExtMapBuffer[],vect[],Uptrend[],Dntrend[];
                     CHMA(int level,int period,ENUM_MA_METHOD method,ENUM_APPLIED_PRICE price,int shift);
   void              calcind(int lim,int prevcalculated);
   int               lastvalue();
  };

el color amarillo es el de los antiguos buffers del indicador, no quise cambiar el código del antiguo indicador en absoluto, simplemente lo copié a la clase, me llevó algo menos de una hora

 
TheXpert:
siempre lo hizo.

¿Qué quieres decir? Se puede declarar un miembro de la clase como una matriz de indicadores.

Lo comprobaré ahora.

Hmmm... Bien...

Bien, entonces - todo es mucho más sencillo, y la cuestión se resuelve sin problemas - declaramos los miembros de la clase como arrays indicadores, y pasamos un puntero a esta misma clase para memorizarlo. La solución, por supuesto, no es muy agradable, pero en ausencia de punteros a la matriz, está bien.