Hola, codificadores experimentados!

He experimentado un problema extraño en matrices en MT4. Mi EA está tratando con múltiples pares. Así que necesito usar arreglos.

como se muestra en el código adjunto, declaro algunas variables en forma de matriz antes de init (). más adelante, en un procedimiento para resumir el número de operaciones, el número de lotes y la pérdidaganancia flotante, el cálculo para colocar estos valores en estas variables de matriz declaradas no funcionará.

las 4 alertas () puse en el código todas devuelven 0 para los valores correspondientes (NO. de oficios, lotes y PL), mientras que en realidad se supone que reflejan valores como 2,3,0.6 o 120 ( por ejemplo).

Un ejemplo: esta línea:
Alerta (lt; 2gt ;: este Pairs [i] tiene PL de DoubleToStr (PairNetPL [i], 1));

debería darme
lt; 2gt ;: este USDJPY tiene un PL de 110.5

pero en realidad me da:
lt; 2gt ;: este USDJPY tiene un PL de 0

el problema es que estoy seguro de que OrderProfit () también devuelve 110.5. Al parecer, de alguna manera, los valores simplemente no se pueden transmitir a la matriz, ni siquiera mi código lo escribe.

¿Alguien puede arrojarme una luz aquí?

muchas gracias.

Código insertado double PairBuys # 91; # 93;, PairSells # 91; # 93;, PairNetPos # 91; # 93;, PairNetLot # 91; # 93;, PairNetPL # 91; # 93 ;;/antes del init () void Count_PL_Trades_Lots () {TotalTrades = 0; EAPL = 0.0; ArrayInitialize (PairBuys, 0); ArrayInitialize (PairSells, 0); ArrayInitialize (PairNetPos, 0); ArrayInitialize (PairNetLot, 0); ArrayInitialize (PairNetPL, 0); para (int k = 0; k lt; OrdersTotal (); k ) {OrderSelect (k, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber () == MagicNumber OrderLots () == Lots) {for (int i = 0; i lt; ArraySize (Pairs); i ) {if (OrderSymbol () == Pairs # 91; i # 93;) {Alerta (lt; 1gt ;: par es Pairs # 91; i # 93; con el tipo de OrderType () , y PL OrderProfit ()); PairNetPL # 91; i # 93; = PairNetPL # 91; i # 93; OrderProfit (); Alerta (lt; 2gt ;: this Pairs # 91; i # 93; tiene PL de DoubleToStr (PairNetPL # 91; i # 93;, 1)); EAPL = EAPL PairNetPL # 91; i # 93 ;; if (OrderType () == OP_BUY) {PairBuys # 91; i # 93; = PairBuys # 91; i # 93; 1; Alerta (lt; 3gt ;: DoubleToStr (PairBuys # 91; i # 93;, 1)); } if (OrderType () == OP_SELL) PairSells # 91; i # 93; = PairSells # 91; i # 93; 1; Alerta (WindowExpertName () Pairs # 91; i # 93; tiene DoubleToStr (PairBuys # 91; i # 93;, 0) buys; y DoubleToStr (PairSells # 91; i # 93;, 0) se vende .); }}}} para (i = 0; i lt; ArraySize (Pairs); i ) {if (PairBuys # 91; i # 93; gt; PairSells # 91; i # 93;) PairNetPos # 91; i # 93; = PairBuys # 91; i # 93; - PairSells # 91; i # 93 ;; de lo contrario PairNetPos # 91; i # 93; = -PairBuys # 91; i # 93; PairSells # 91; i # 93 ;; PairNetLot # 91; i # 93; = PairNetPos # 91; i # 93; * Un montón; TotalTrades = TotalTrades PairNetPos # 91; i # 93 ;; }/Alerta (WindowExpertName () - TotalTrades: DoubleToStr (TotalTrades, 0)); retorno (0); }