Hai, coders berpengalaman!
Saya mengalami masalah aneh pada array di MT4. EA saya berurusan dengan multi-pasangan. Jadi saya perlu menggunakan array.
seperti yang ditunjukkan oleh kode terlampir, saya mendeklarasikan beberapa variabel dalam bentuk array sebelum init (). kemudian, dalam prosedur untuk meringkas jumlah perdagangan, jumlah lot, dan labarugi mengambang, perhitungan untuk memasukkan nilai-nilai ini ke dalam variabel array yang dinyatakan tidak akan berfungsi.
4 peringatan () saya masukkan dalam kode semua mengembalikan 0 untuk nilai yang sesuai (NO perdagangan, lot, dan PL), sementara pada kenyataannya mereka seharusnya mencerminkan nilai-nilai seperti 2,3,0,6, atau 120 ( sebagai contoh).
satu contoh: baris ini:
Peringatan (lt; 2gt ;: ini Pasangan [i] memiliki PL DoubleToStr (PairNetPL [i], 1));
harus memberi saya:
lt; 2gt ;: USDJPY ini memiliki PL 110,5
tetapi sebenarnya memberi saya:
lt; 2gt ;: USDJPY ini memiliki PL 0
masalahnya adalah bahwa saya yakin OrderProfit () mengembalikan 110,5 juga. tampaknya, entah bagaimana, nilai-nilai tidak bisa disampaikan ke array bahkan kode saya menulisnya
Adakah yang bisa menjelaskan kepadaku di sini?
terimakasih banyak.
Kode ganda yang dimasukkan PairBuys # 91; # 93;, PairSells # 91; # 93;, PairNetPos # 91; # 93;, PairNetLot # 91; # 93;, PairNetPL # 91; # 93;;/sebelum 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); untuk (int k = 0; k lt; OrdersTotal (); k ) {OrderSelect (k, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber () == MagicNumber OrderLots () == Lot) {for (int i = 0; i lt; ArraySize (Pasangan); i ) {if (OrderSymbol () == Pasangan # 91; i # 93;) {Alert (lt; 1gt ;: pasangan adalah Pasangan # 91; i # 93; dengan jenis TipeTipe () , dan PL OrderProfit ()); PairNetPL # 91; i # 93; = PairNetPL # 91; i # 93; OrderProfit (); Peringatan (lt; 2gt ;: this Pairs # 91; i # 93; memiliki PL 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 Lansiran (lt; 3gt ;: DoubleToStr (PairBuys # 91; i # 93;, 1)); } if (OrderType () == OP_SELL) PairSells # 91; i # 93; = PairSells # 91; i # 93; 1 Lansiran (WindowExpertName () Pasangan # 91; i # 93; memiliki DoubleToStr (PairBuys # 91; i # 93;, 0) membeli; dan DoubleToStr (PairSells # 91; i # 93;, 0) menjual .); }}}} untuk (i = 0; i lt; ArraySize (Pasangan); i ) {if (PairBuys # 91; i # 93; gt; PairSells # 91; i # 93;) PairNetPos # 91; i # 93; = PairBuys # 91; i # 93; - PairSells # 91; i # 93 ;; selain itu PairNetPos # 91; i # 93; = -PairBuys # 91; i # 93; PairSells # 91; i # 93 ;; PairNetLot # 91; i # 93; = PairNetPos # 91; i # 93; * Banyak; TotalTrades = TotalTrades PairNetPos # 91; i # 93 ;; }/Lansiran (WindowExpertName () - TotalTrades: DoubleToStr (TotalTrades, 0)); return (0); }