Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 128

 

Hola! Estoy comparando los precios de apertura de 3 barras (3,2,1). ¿Cómo no voy a contar las barras en las que los precios son iguales?

for( x=<3;x--)
{
 if( Open[x]==Open[x] )
  {
    x+1;
   }
  if( Open[x]<Open[x] )
   {
   ,,,
   }
 
skyjet:

Hola! Estoy comparando los precios de apertura de 3 barras (3,2,1). ¿Cómo no voy a contar las barras en las que los precios son iguales?

for (int x=1; x<3; x++)
{
 if(Open[x]==Open[x+1]) continue;
 if(Open[x]<Open[x+1])
   {
   //--- action
   }
}
 
Hola, ayúdame. Estoy jugando en H1, tengo un indicador H4. Se muestra correctamente. Pero si lo ejecuto en el probador, con la visualización, por ejemplo a principios de año, muestra la información actual que hay ahora en el mercado. En general, no funciona en el Probador de Estrategias. Cómo hacer que funcione. O bien tirar sobre el tema en el que se resuelve.
 
artmedia70:
¿Cómo se vacía? ¿Sale algo, o hay ceros en las celdas de la matriz?


Nada en absoluto.

Incluso si se va a Objetos no hay nada en absoluto, excepto las flechas y las líneas de tendencia...

artmedia70:

¿Por qué aumenta la i en el cuerpo del bucle?

y esto: i<=p, ¿por qué "o igual a"?


Cometí un error por cansancio. Lo arreglé de esta manera:

for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }

Este trozo de código está en la propia función:

//+-------------------------------------------------------------------------------------+
//| Закрытие ордеров, отсортированных по размеру лотов                                  |
//+-------------------------------------------------------------------------------------+
void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   if (p > 0)
   {
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}
 
hoz:


Nada en absoluto.

Incluso si se va a Objetos no hay ningún objeto, salvo las flechas y las líneas de tendencia...


Fui yo quien se equivocó por cansancio. Lo arreglé de esta manera:

Este trozo de código está en la propia función:

Antes y después

if (p > 0)

Valor p no impreso.

¿Tengo que escribir la secuencia de búsqueda de fallos por ti?

 
artmedia70:

Antes y después.

No imprimir el valor p.

¿Tengo que escribir la secuencia de error por ti?



De hecho, sí. De todos modos, esta es la situación:

void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   pr("___p = " + p);   // Значение кол-ва позиций до if..
   
   if (p > 0)
   {
      pr("p = " + p);   // Значение кол-ва позиций после if..
      
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}

Yo lo he hecho así, pero tampoco sale nada en esta parte del gráfico. Aunque en otros lugares imprimía 0, cuando una posición estaba abierta y se cerraba enseguida por toma. Es decir, en esta área kosakova trabaja como si...

Aquí tienes una captura de pantalla:

¿Debo imprimir ahora todos estos valores?

p++;
ArrayResize(a, p);
a[p-1][0] = OrderLots();
a[p-1][1] = OrderTicket();

Parece que queda mucho por hacer. Al fin y al cabo, todo está claro y suele estar escrito allí.

 
hoz:


De hecho, lo es. De todos modos, esta es la situación:

Lo he ejecutado así, pero tampoco sale nada en esta parte del gráfico. Aunque en otros lugares imprimía 0, cuando una posición estaba abierta y se cerraba enseguida en la toma. Es decir, en este sector, kosakova trabaja como si...

Aquí tienes una captura de pantalla:

¿Debo imprimir ahora todos estos valores?

Parece que queda mucho por hacer. Al fin y al cabo, todo está claro y suele estar escrito ahí.

¿Comprende y ve lo que contiene su matriz inmediatamente después de que se "llene" con datos de la orden? No. No lo sabes, sólo lo supones. Muestre el contenido de todas las celdas del array, no con su pr(), sino con el Print() estándar e intente mirar en el registro del probador y vea lo que tiene en el array, en cada celda, justo después de llenarlo. Cuando sepas con seguridad que el contenido del array coincide con tus ideas sobre su contenido, entonces imprímelo con tu pr(). Si no te da los mismos resultados - es tu pr(), si los datos coinciden, entonces busca un error en el siguiente paso.
 
Hay errores relacionados con el lote en el libro de registro( errorOrderSend 4051). Resuelve este problema. Tal vez sea de ayuda. Entonces veremos qué pasa.
 
hoz:
Hay errores relacionados con el lote en el libro de registro (error OrderSend 4051). Resuelve este problema. Tal vez sea de ayuda. Y luego ya veremos.

Mira los tanques, reinicia, tal vez ayude... :-)

P.D. Estoy siendo amable.

 
Se trata de una matriz unidimensional cuyo tamaño puede variar.
¿Cómo recorrer todas las combinaciones posibles de elementos de la matriz entre sí?
El orden de los elementos no importa, es decir, 123==213==321...

Este es un ejemplo para una matriz con 4 elementos:
[4] <=> { 1 2 3 4 }

1, 12, 13, 14, 123, 124, 134, 1234, 
2, 23, 24, 234, 
3, 34,
4
Razón de la queja: