لقد كنت أعمل في EA التي (على أساس المطابع من أزرار كائن المخطط) ؛ يفتح الصفقات في سعر السوق تجمد أبعاد اللوت على أساس مخاطري باستخدام خط SL الذي أضعه على الرسم البياني. يضبط عمليات التداول المعلقة (ويحسب أبعاد اللقطات اليمنى بناءً على المخاطر٪) مع سطر إدخال و SL الذي أضعه على المخطط. مجموعة متنوعة من أنواع وظائف الإغلاق (كل ما هو متاح ، جميع المخططات ، كل OP ، جميع الأرباح ، جميع التخفيضات إلخ.). نقل التداولات إلى BE كافية لدفع comm. و المقايضات لقد كنت أعمل على وظيفة مراقبة SL التي تقوم بعمل ما تقوم به و تعمل بشكل جيد ولكن فقط في المرة الأولى. أنا اضغط على الزر ، فإنه يتبين أين يتحرك السعر SL وفقا لذلك و. مرة أخرى يحدد هذا مدى التحرك بناءً على المخاطرة الأولية (مثل تحركات SL استخدم سعر الفتح وحالة ثابتة 5: 1 لجني الأرباح لحساب مقدار التحرك حيث يتم وضع هذه المتغيرات التي لن تتحرك ولا تختلط الحسابات) . ما أحاول القيام به هو اتخاذ قرار بشأن حلقة من الأنواع التي أضغط فيها على الرسم البياني وتحرك SL. إذا وصل السعر إلى مستوى جديد ، فإنه يتحرك على SL دون الحاجة إلى ضرب SL slut buttion مرة أخرى. أدرك أنه إذا قمت بتغيير TF الخ ... ونعيد التأكيد على أنه يجب عليّ إعادة الضغط على الزر. هل يمكن وضع هذا الكود في حلقة تستمر في التحرك والتحقق من SL؟ لقد حاولت بعض الأشياء مثل الاستفادة في حين أنها لا تعبث إلا الأشياء وكذلك يرتد SL ذهابا وإيابا. إذا قمت بالمتابعة ، بعد كل ذلك إذا تم الإيقاف بعد السطر الأولي ...
أمل أن أحد ما يستطيع المساعدة. أنا متأكد من أنه خطأ غبي من جانبي أو شيء سهل أنا لا أرى. ما زلت جديدة إلى حد ما على الترميز.
تم إدراج رمز إذا تم الضغط على زر SL Trail (sparam == TSLButton)/ObjectSetInteger (0، TSLButton، OBJPROP_STATE، false)؛ bool TSL = false double TickValue = MarketInfo (الرمز () ، MODE_TICKVALUE) ؛ dual GGG = OrderCommission () OrderSwap ()؛ dual GGG1 = NormalizeDouble (OrderCommission () OrderSwap ()، Digits) * Point؛ المزدوجة XXX = GGG1TickValue ، المزدوج XXY = (OrderOpenPrice () - OrderTakeProfit ())TPFactor؛ int orders_cnt = 0؛ int كاملة = OrdersTotal ()؛ for (int I = 0؛ ilt؛ total؛ I ) if (OrderSelect (I، SELECT_BY_POS، MODE_TRADES) == false)؛ if (OrderSymbol () == Symbol ()) orders_cnt ؛ ObjectSetInteger (0، TSLButton، OBJPROP_COLOR، ButtonTxtCLR)؛ ObjectSetInteger (0، TSLButton، OBJPROP_BGCOLOR، الأحمر)؛ ObjectSetInteger (0، TSLButton، OBJPROP_BORDER_COLOR، الأحمر)؛ RefreshRates ()؛ if (OrderType () == OP_BUY) إذا (Bidgt؛ (OrderOpenPrice () (XXY * two))) TSL = OrderModify (OrderTicket () ، OrderOpenPrice () ، (OrderOpenPrice () - (XXX)) ، OrderTakeProfit () ، 0، clrNONE)؛ if (Bidgt؛ (OrderOpenPrice () (XXY * 3))) TSL = OrderModify (OrderTicket ()، OrderOpenPrice ()، ((OrderOpenPrice () - (XXX)) (XXY)، OrderTakeProfit ()، 0، clrNONE)؛ إذا كانت (Bidgt؛ (OrderOpenPrice () (XXY * 4))) TSL = OrderModify (OrderTicket ()، OrderOpenPrice ()، ((OrderOpenPrice () - (XXX)) (XXY * 3))، OrderTakeProfit ()، 0، clrNONE)؛ if (OrderType () == OP_SELL) إذا (Asklt؛ (OrderOpenPrice () - (XXY * two))) TSL = OrderModify (OrderTicket () ، OrderOpenPrice () ، (OrderOpenPrice () (XXX)) ، OrderTakeProfit () ، 0، clrNONE)؛ إذا كان (Asklt؛ (OrderOpenPrice () - (XXY * 3))) TSL = OrderModify (OrderTicket () ، OrderOpenPrice () ، ((OrderOpenPrice () (XXX)) - (XXY) ، OrderTakeProfit () ، 0 ، clrNONE)؛ إذا كان (Asklt؛ (OrderOpenPrice () - (XXY * 4))) TSL = OrderModify (OrderTicket () ، OrderOpenPrice () ، ((OrderOpenPrice () (XXX)) - (XXY * 3)) ، OrderTakeProfit () ، 0، clrNONE)؛