Hallo, ervaren codeerders!
Ik heb een vreemd probleem ondervonden bij matrices in MT4. Mijn EA heeft te maken met multi-paren. Dus ik moet arrays gebruiken.
zoals de bijgevoegde code laat zien, declareer ik enkele variabelen in array-vorm v��r init (). later, in een procedure om het aantal transacties, het aantal loten en de zwevende winstverlies samen te vatten, zal de berekening om deze waarden in deze aangegeven matrixvariabelen te zetten niet werken.
de 4 alerts () die ik in de code heb gezet, geven allemaal 0 terug voor de corresponderende waarden (NO.of trades, lots, en PL), terwijl ze in feite waarden als 2,3,0,6 of 120 ( bijvoorbeeld).
een voorbeeld: deze regel:
Alert (lt; 2gt ;: this Pairs [i] heeft PL van DoubleToStr (PairNetPL [i], 1));
zou mij het volgende moeten geven:
lt; 2gt ;: deze USDJPY heeft een PL van 110,5
maar geeft me eigenlijk:
lt; 2gt ;: deze USDJPY heeft PL van 0
het probleem is dat ik zeker ben dat OrderProfit () ook 110.5 retourneert. ogenschijnlijk kunnen de waarden op de een of andere manier eenvoudigweg niet worden doorgegeven aan de array, zelfs niet als mijn code dit schrijft.
kan iemand hier een licht voor mij schijnen?
erg bedankt.
Code dubbele PairBuys # 91; # 93;, PairSells # 91; # 93;, PairNetPos # 91; # 93;, PairNetLot # 91; # 93;, PairNetPL # 91; # 93 ;;/before the 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); voor (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 () == Paren # 91; i # 93;) {Alert (lt; 1gt ;: pair is Paren # 91; i # 93; met type OrderType () , en PL OrderProfit ()); PairNetPL # 91; i # 93; = PairNetPL # 91; i # 93; OrderProfit (); Alert (lt; 2gt ;: this Pairs # 91; i # 93; heeft PL van 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; Alert (lt; 3gt ;: DoubleToStr (PairBuys # 91; i # 93;, 1)); } if (OrderType () == OP_SELL) PairSells # 91; i # 93; = PairSells # 91; i # 93; 1; Alert (WindowExpertName () Paren # 91; i # 93; heeft DoubleToStr (PairBuys # 91; i # 93;, 0) koopt; en DoubleToStr (PairSells # 91; i # 93;, 0) verkoopt .); }}}} voor (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 ;; else PairNetPos # 91; i # 93; = -PairBuys # 91; i # 93; PairSells # 91; i # 93 ;; PairNetLot # 91; i # 93; = PairNetPos # 91; i # 93; * Kavels; TotalTrades = TotalTrades PairNetPos # 91; i # 93 ;; }/Alert (WindowExpertName () - TotalTrades: DoubleToStr (TotalTrades, 0)); return (0); }