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

 
Buenas noches.
 if(count==0)comment+="No symbols for trading!";
      Comment(comment);
      MqlTick tick;
      tick.ask=SymbolInfoDouble(structPairs.name,SYMBOL_ASK);
      tick.bid=SymbolInfoDouble(structPairs.name,SYMBOL_BID);
      tick.time=TimeCurrent();
      Trade(false,structPairs, tick, Orders, inputs);
¿Qué dice este trozo de código? ¿Cuándo aparece? Todos los pares de la lista están ahí y todo el historial está cargado .
 
Darirunu:
Buenas noches. ¿Qué dice este trozo de código? ¿Cuándo aparece? Todos los pares están en la lista y todo el historial está cargado .

¿Contraseña del inversor?

 
Darirunu:
Buenas noches. ¿Qué dice este trozo de código? ¿Cuándo aparece? Todos los pares de la lista están ahí y todo el historial está cargado .
Si algún contador es 0 (supongo que es el resultado de una ejecución anterior), entonces se añade una línea al comentario
No symbols for trading!

el resto es lo de siempre...

 
Taras Slobodyanik:

Gracias

Comprobación de que no hay ningún objeto en la segunda barra

         for(int jj=i;jj<obj_total;jj++)
           {
            nameARs=ObjectName(jj);
            if(ObjectType(nameARs)!=OBJ_RECTANGLE) continue;
            if(StringFind(nameARs,"QUADRO",0)!=-1)
              {

               time_ars=ObjectGetInteger(0,nameARs,OBJPROP_TIME);//break;

              }
           }
         //===---===
         if(time_ars!=Time[i+2])
           {
           //....
           }
¿Cómo puedo comprobar que no hay objetos en las diez barras?
 

Indicador.

Para cada barra, calcule la suma de los tamaños de las barras alcistas y la suma de los tamaños de las barras bajistas

En el buffer escribe la diferencia de estas sumas.

¿Qué ocurre aquí?

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum=0, down_sum=0;
   for(int i=0;i<limit;i++)
   {
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }
 
Roman Sharanov:

Indicador.

Para cada barra, calcula la suma de los tamaños de las barras alcistas y la suma de los tamaños de las barras bajistas

En el buffer escribe la diferencia de estas sumas.

¿Qué ocurre aquí?

Transferencia

double up_sum=0, down_sum=0;

dentro del primer ciclo - antes de anunciar el segundo ciclo.

 
Roman Sharanov:

Indicador.

Para cada barra, calcule la suma de los tamaños de las barras alcistas y la suma de los tamaños de las barras bajistas

En el buffer escribe la diferencia de estas sumas.

¿Qué ocurre aquí?

Intenta restablecer las variablesup_sum=0, down_sum=0;

antes del segundo bucle interno.

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum, down_sum;
   for(int i=0;i<limit;i++)
   {
    up_sum=0; 
    down_sum=0;
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }

Así

 
Alekseu Fedotov:

Intenta restablecerup_sum=0, down_sum=0;

antes del segundo bucle interno.

Así

lo hizo, y sí, tiene sentido, pero ahora ya no se muestra en absoluto

 
Ghabo:

Gracias

Comprobación de que no hay ningún objeto en la segunda barra

¿Cómo puedo comprobar que no hay objetos en las diez barras?

Si se sabe cómo crear el nombre exacto de un objeto, no tiene sentido recorrer todos los objetos del gráfico.
Basta con repasar estos nombres (supuestos).

for(int i=0;i<10;i++)
   {
   if (ObjectFind(0,"QUADRO"+Time[i])<0)
      Print("Нет объекта на баре № ",IntegerToString(i));
   else
      Print("Найден oбъект на баре № ",IntegerToString(i));
   }
 
Roman Sharanov:

Lo hice, y sí, tiene sentido, pero ahora ya no aparece en absoluto

Sí, también como esto, arreglarlo.

En el bucle interno

for(int f = 0+i; f < Period+i; f++)

Razón de la queja: