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

 
skyjet:


Pero estoy comparando 3,2 y 1 barras, por lo que el cálculo se limita a x >=1?

¿Y significa que los bares con el mismo precio simplemente no se tienen en cuenta, no se les asignan números?

Configurando los parámetros de optimización: inicio 1, paso 1, fin 4; en H1 y H4 la pestaña de resultados está simplemente vacía, en D1 la misma rentabilidad con diferente número de barras analizadas.

Tal vez lo que he entendido de tu pregunta es diferente de lo que querías decir. Mi ejemplo compara los precios de apertura entre las barras 3 y 2, y 2 y 1. Las barras 3 y 1 no se comparan. En caso de que los valores comparados sean iguales - no pasa nada, sólo se pasa a la siguiente comparación.
Por qué x>1 (no >=). La primera iteración compara Open[3]==Open[3-1], es decir, Open[3]==Open[2]. DE ACUERDO. En el segundo (x=2), Open[2]==Open[1]. DE ACUERDO. No hay una tercera iteración. En x>=1 habrá una comparación Open[1]==Open[0], no está bien, porque habrá una comparación con 0 barra.
 
T-G:

Los profesionales no pueden ir a ninguna parte sin ti.

Ayuda con la función. Que cuenta el último número de órdenes perdedoras en el historial a una orden más.

Es decir, el historial muestra 3 últimos pedidos en negativo, luego 1 en positivo y 2 en negativo.

Esta función debe contar los tres últimos (antes de la orden positiva)

int Number=0;
//---
if (OrdersHistoryTotal()>0)
{  for (int i=OrdersHistoryTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {  if (OrderProfit()<0.0)
         Number+=1;
         else break;
}  }  }
Aquí se cuentan los pedidos cerrados sólo en déficit. Si las ganancias = 0 (cero), el recuento se interrumpe.
 
paladin80:
Aquí se cuentan los pedidos cerrados sólo en déficit. Si las ganancias = 0 (cero), el recuento se interrumpe.
Puede ocurrir que no vayan necesariamente en el orden en que los lees. Para ser exactos e inequívocos, los pedidos deben sumarse en una matriz bidimensional: en la primera dimensión está la hora de cierre, y en la segunda el ticket del pedido. A continuación, ordena el array por la primera dimensión, redúcelo a tres y compruébalos (los tres últimos).
 
chief2000:
Quiero reformular y añadir algo a mi pregunta anterior.
A continuación se muestra el código para un array de 4 elementos. En realidad, el número de elementos del array es una variable.
¿Cómo puedo cambiar el código para que el número de bucles 'for' anidados sea variable, un 'for' por elemento del array?
Gracias.

int start() { 

   int Array[4]                                       = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size                                  = ArrayRange(Array,0);


   for(x1=0; x1<Array_Size; x1++) {
      Print("Combination                       = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++) {
         Print("Combination                    = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++) {
            Print("Combination                 = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }


   return(0);
}


Al ver esta situación, empecé a preguntarme. Cuando se dispone de un montón de bucles anidados. ¿Cómo se realizan los cálculos? ¿Desde la más profunda o viceversa?

Es decir, el primero en ser calculado:

 for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);

¿O desde el otro lado? Quiero entender cómo funciona todo.

 
cómo hacer que un EA tenga en cuenta los niveles de los indicadores técnicos. Por ejemplo, cci. Si la línea está por encima del nivel 0, entonces realiza acciones. ¿Cómo hacerlo?
 
webip:
Cómo hacer que un EA tenga en cuenta los niveles de los indicadores técnicos. Por ejemplo, cci. Si la línea es superior a 0, entonces realiza acciones. ¿Cómo hacerlo?

Si cci es mayor que cero, entonces ... Si el cci es menor que cero, entonces...

Función iCCI();

 

Gurús, decidme cómo resolver un problema. Necesitamos un número positivo para calcular la diferencia entre la apertura y el cierre. Por ejemplo, si el precio sube y se resta el precio de cierre del precio de apertura, se obtiene un número menos.

 
artmedia70:

Si cci es mayor que cero, entonces ... Si el cci es menor que cero, entonces...

Función iCCI();



No. Conozco la función, pero no sé cómo reflejarla en el código. ¿Qué te parece esto?

 if(iCCI() > 0)
  {
    //остальной код?
  }
 
Forexman77:

Gurús, decidme cómo resolver un problema. Necesitamos un número positivo para calcular la diferencia entre la apertura y el cierre. Por ejemplo, si el precio sube y le resto un número negativo al precio de apertura, obtengo un número negativo.


doble MathAbs( valor doble)
La función devuelve el valor absoluto (valor modulo) del número que se le pasa
 
hoz:

Al ver esta situación, empecé a preguntarme. Cuando se dispone de un montón de bucles anidados. ¿Cómo se realizan los cálculos? ¿Desde la más profunda o viceversa?

Es decir, el primero en ser calculado:

¿O desde el otro lado? Quiero entender cómo funciona todo...


Puedes ver los resultados que di antes para 4 ciclos, allí el ciclo más interno se dispara una vez para obtener 1234.
Razón de la queja: