[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 655

 
Vinin:

Naturalmente, y cuando más.


mm, pensé, trozos de completado, bueno, hay 128 kilobytes fusionados - grabado. Ya que sería más correcto en caso de choque. Aunque para la historia, por supuesto, lo que sea.

Es que no me cuadraba, estaba descargando, pero no había donde ir hasta que cerraba el terminal ))

 
ToLik_SRGV
Gracias por el consejo sobre Print(), lo investigaré.
 
sanyooooook:

Se puede cambiar este parámetro en el inite, pero en el inicio es dudoso.


Gracias, porque cuando el TF en la ventana cambia, el indicador se reinicia, significa que podemos volver a colorear los buffers

Y la cuestión es que, en cualquier TF, el color de las líneas correspondientes a los estocásticos de otros TFs es siempre del mismo color. Es decir, si el estocástico horario es azul, que sea azul en todos los TFs.

Por supuesto, podemos asignar búferes del color adecuado a la TF correspondiente, pero entonces el programa de procesamiento se complica. Y queremos que lea un mismo búfer en todas las condiciones.

 
ToLik_SRGV:

Print() tienes que ponerlo aquí primero:

que, asegúrese de que la matriz c1b_1[i] está vacía, por lo que la comparación en si ceros, comprensiblemente no se abren los tratos.

Y ceros ahí porque el periodo de promediación en la función iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i) ( extern int AvgB=25;) es mayor que el propio array c1b, ArrayResize(c1b,PeriodB ) (extern int PeriodB=20;), por lo que no puede promediar nada.


Sí, de hecho "0", pero lo que hay que hacer, dime - no funciona en ambos sentidos (y períodos iguales establecidos) probado ambas opciones (nuevo y viejo) Print("NormalizeDouble(c1b_1 ..., null devuelve (muestra sólo c1b[i] valor, todos los demás, incluyendo c1s[i] - ceros), ayudar a traer una de las opciones a un estado de trabajo o al menos compartir una pista, que va a ver la falla?

Nuevo:

// Торговые критерии   
   double c1b[];
   ArrayResize(c1b,PeriodB);
   double c1b_1[];
   ArrayResize(c1b_1,AvgB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   {
   c1b_1[i]=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   }
   }
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   double c1s_1[];
   ArrayResize(c1s_1,AvgS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   {
   c1s_1[i]=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   }
   }
   
   Print("NormalizeDouble(c1b_1[i],4) - ",NormalizeDouble(c1b_1[i],4));
   Print("NormalizeDouble(c1b_1[i+2],4) - ",NormalizeDouble(c1b_1[i+2],4));
   Print("NormalizeDouble(c1b_1[i+3],4) - ",NormalizeDouble(c1b_1[i+3],4)); 

if (NormalizeDouble(c1b_1[i],4)<NormalizeDouble(c1b_1[i+2],4)&&NormalizeDouble(c1b_1[i+2],4)>NormalizeDouble(c1b_1[i+3],4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1[i],4)>NormalizeDouble(c1s_1[i+2],4)&&NormalizeDouble(c1s_1[i+2],4)<NormalizeDouble(c1s_1[i+3],4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Antiguo:

// Торговые критерии
   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   }
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   }
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);
   
   Print("NormalizeDouble(c1b_1,4) - ",NormalizeDouble(c1b_1,4));
   Print("NormalizeDouble(c1b_2,4) - ",NormalizeDouble(c1b_2,4));
   Print("NormalizeDouble(c1b_3,4) - ",NormalizeDouble(c1b_3,4));

if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Entero:

Archivos adjuntos:
21_1.mq4  15 kb
 

Señores, me pregunto, si hago un bucle de cuatro plazos para encontrar la señal, ¿se llamará a los datos cada vez, con más carga de CPU que si hubiera, por ejemplo, cuatro ventanas del mismo indicador con diferentes plazos?

 
Rossi:

Señores, me pregunto, si recorro cuatro marcos temporales para encontrar una señal, ¿se llamará a los datos cada vez, con más carga de CPU que si hubiera, por ejemplo, cuatro ventanas del mismo indicador con diferentes marcos temporales?


Depende de cómo se aplique.
 

int TiempoMasivo[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}

aproximadamente así, sin asignar memoria para cada marco temporal

 
Lo mismo.
 
Rossi:

int TiempoMasivo[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}

aproximadamente así, sin asignar memoria para cada marco temporal


int TimeMassive[]={15, 30, 60, 240} ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}
Eso es un poco más preciso
 
¿Qué puede causar un desbordamiento de pila? Cuando se abre una posición con una toma grande (la toma se calcula a partir de la volatilidad y se multiplica por 100, el tamaño es 41*100), se registra un desbordamiento de pila y... ...sólo tómalo. No se abren más posiciones hasta que esta se cierre, y esta, por supuesto, no se cerrará por el enorme TP.... Y el EA no funciona correctamente en absoluto, porque debería cerrar todas las posiciones cuando se alcanza el beneficio total predefinido de las posiciones abiertas... Pero no sucede, aunque esta posición lleva mucho tiempo con enormes beneficios, unos dos mil puntos... ¿Cómo puedo combatirlo? No se puede asegurar la situación cuando las posiciones abiertas desbordan la pila, y todo se pone al revés...