مرحبا ، المبرمجين من ذوي الخبرة!
لقد واجهت مشكلة غريبة على المصفوفات في MT4. بلدي EA يتعامل مع متعدد أزواج. لذلك أنا بحاجة إلى استخدام المصفوفات.
كما يظهر رمز المرفقة ، أعلن بعض المتغيرات في شكل صفيف قبل init (). في وقت لاحق ، في إجراء لتلخيص عدد الصفقات ، وعدد العقود ، والربحالخسارة العائمة ، لن يعمل الحساب لوضع هذه القيم في متغيرات الصفيف المعلنة.
4 التنبيهات () أنا وضعت في رمز جميع عودة 0 للقيم المقابلة (NO.of الحرف ، والكم ، و PL) ، في حين أنها في الواقع من المفترض أن تعكس قيم مثل 2،3،0،6 ، أو 120 ( فمثلا).
مثال واحد: هذا الخط:
تنبيه (lt؛ 2gt ؛: هذا Pairs [i] له PL من DoubleToStr (PairNetPL [i] ، 1))؛
يجب أن تعطيني:
lt ؛ 2gt ؛: هذا USDJPY لديه PL من 110.5
لكن في الواقع يعطيني:
lt ؛ 2gt ؛: هذا USDJPY لديه PL من 0
المشكلة هي أنني متأكد من إرجاع OrderProfit () 110.5 أيضاً. على ما يبدو ، على نحو ما ، لا يمكن نقل القيم ببساطة إلى الصفيف حتى يكتب شفرتي ذلك.
يمكن لأي شخص أن يضيء لي هنا؟
شكرا جزيلا.
كود مدرج مزدوج 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)؛ لـ (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؛) {Alert (lt؛ 1gt ؛: pair is Pairs # 91؛ i # 93؛ type of OrderType () ، PL OrderProfit ())؛ PairNetPL # 91؛ ط # 93؛ = PairNetPL # 91 ؛ i # 93؛ OrderProfit ()؛ تنبيه (lt؛ 2gt ؛: this Pairs # 91؛ i # 93؛ 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 تنبيه (lt؛ 3gt ؛: DoubleToStr (PairBuys # 91؛ i # 93؛، 1))؛ } if (OrderType () == OP_SELL) PairSells # 91؛ i # 93؛ = PairSells # 91 ؛ i # 93؛ 1 تنبيه (WindowExpertName () Pairs # 91؛ i # 93؛ DoubleToStr (PairBuys # 91؛ i # 93؛، 0) buys؛ و DoubleToStr (PairSells # 91؛ i # 93؛، 0) sells )؛ }}}} لـ (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؛ ط # 93؛ = PairNetPos # 91 ؛ i # 93؛ * الكثير؛ TotalTrades = TotalTrades PairNetPos # 91؛ i # 93 ؛؛ }/Alert (WindowExpertName () - TotalTrades: DoubleToStr (TotalTrades، 0))؛ عودة (0)؛ }