[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 429

 
Dimka-novitsek:

¡¡¡Buenos días!!! Debo haber entendido mal algo sobre las matrices o algo así. ¡¡¡La función no pone un beneficio en el array!!! Es cero en todas las circunstancias. ¡Cero y ya está!

int Orderasthitaem[6][3];
void Orderasthitaem()
{
 int BUY = 0, SELL = 0, BUYLIMIT = 0, BUYSTOP = 0, SELLLIMIT = 0, SELLSTOP = 0;
 double BUY_Profit = 0, SELL_Profit = 0;
 for (int i = 0; i < OrdersTotal(); i++)
  {
   OrderSelect(i, SELECT_BY_POS);  
   if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
    {            
     int type = OrderType();
     if (type == 0) {BUY++; BUY_Profit = BUY_Profit + OrderProfit();}
     if (type == 1) {SELL ++; SELL_Profit = SELL_Profit + OrderProfit();}
     if (type == 2) {BUYLIMIT++;}
     if (type == 3) {SELLLIMIT++;}
     if (type == 4) {BUYSTOP++;}
     if (type == 5) {SELLSTOP++;}}}
       
     Orderasthitaem[0][1] = BUY;
     Orderasthitaem[0][2] = BUY_Profit;
     Orderasthitaem[1][1] = SELL;
     Orderasthitaem[1][2] = SELL_Profit;
     Orderasthitaem[2][1] = BUYLIMIT;
     Orderasthitaem[3][1] = SELLLIMIT;
     Orderasthitaem[4][1] = BUYSTOP;
     Orderasthitaem[5][1] = SELLSTOP;        
    }
  }
}
Función.

El obiógrafo está fuera de todas las funciones.

 
¡¡¡Gracias!!!
 

¿Por qué un array como int? Y si los beneficios son fraccionados, pero no creo que eso sea significativo... ¡Sí, aparentemente no hay necesidad de un dowble!

Lo redefiniré ahora y lo probaré. Pero, ¿hará la diferencia? ¿Por qué no ha funcionado? Lo intentaré...

 
ruslanchik:
Si el ticket de la orden se almacena en el servidor del corredor, ¿dónde se almacenan las órdenes de majik y los comentarios?

En el servidor del corredor.
 
Ah, ya veo lo que asignas a los elementos del array. ¡¡¡¡¡¡¡¡Sí, gracias!!!!!!!!
 
Hola, estoy estudiando el tutorial de MQL4 de Sergey Kovalev y aún no he encontrado cómo acceder a las matrices de series temporales de otros pares de divisas. Es decir, necesito cargar matrices de series temporales de varios pares de divisas en un EA. Sé que se puede acceder a algunos datos mediante la función MarketInfo(), pero el problema es que los ID de las solicitudes no contienen el cierre ni otros parámetros de las series de precios. Por favor, aconsejar donde puedo leer cómo organizar el trabajo (si hay) con arrays-series de tiempo y varios instrumentos, o tal vez la forma de eludir esta limitación.
 
Todavía no he compilado ni probado nada, sólo lo he mirado. Tuck, la cuestión es que al salir de los bucles no se guardan los valores de las variables BUY_Profit y prue, ¿no? El programa se ejecuta secuencialmente, ¿o no se guarda?
 
Dimka-novitsek:
Todavía no he compilado ni probado nada, sólo lo he mirado. Tuck, la cuestión es que a la salida de los bucles, los valores de BUY_Profit y BUT no se guardan, ¿verdad? El programa se ejecuta secuencialmente, ¿o no se guarda?
Dimka-novitsek:
Ah, ya veo lo que estás asignando a los elementos del array. ¡¡¡¡¡¡¡¡Sí, gracias!!!!!!!!

Cualquier tipo es posible. Es que no me di cuenta de que una de las variables es doble. Si necesitas el doble, pon el doble.

¿Funciona?

 

Sólo estoy mirando. И... ¡¡¡¡¡¡OOOOOOO!!!!!! ¡¡¡¡¡¡¡Yo lo hice así en el mío, declaré así Orderasthitaem[6][2]; en el elemento dos arrays, es decir entendiste, y dirigí ya el tercero Orderasthitaem[0,2] !!!!!!!

¡¡¡¡¡¡¡¡¡¡¡Efectivamente, aquí está el perro en el agujero!!!!!!!!!!! ¡¡¡OOO!!!

 
Dimka-novitsek:
Todavía no he compilado ni probado nada, sólo lo he mirado. Takm, la cuestión es que al salir de los bucles, los valores de las variables BUY_Profit y prue no se guardan, ¿verdad? El programa se ejecuta secuencialmente, ¿o no se guarda?

...también podrías hacer esto:

double Orderasthitaem[6][2];
void Orderasthitaem()
{
    double ld_Profit = 0.;
    int li_Total = OrdersTotal();
    ArrayInitialize (Orderasthitaem, 0.);
    if (li_Total == 0) return;
    for (int i = 0; i < OrdersTotal(); i++)
    {
        OrderSelect (i, SELECT_BY_POS);  
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
        {            
            int type = OrderType();
            ld_Profit = OrderProfit();
            Orderasthitaem[type][0]++;
            if (type > 1) continue;
            Orderasthitaem[type][1] += ld_Profit;
        }
    }
}
- Depende de quién te guste.