@ تغير؛ هل يمكنك مساعدتي في تحويل شفرة Tradestation التالية إلى MT4: Inserted Code Choppy Market Index Function تقوم هذه الدالة بإرجاع قيمة من 0 إلى 100. تشير القيمة الأقل إلى تردد أعلى في السوق (choppiness) ، في حين تشير القيمة الأعلى إلى السوق الرائجة. الإدخال الوحيد هو عدد الحانات التي ننظر إليها مرة أخرى. المدخلات: periodLength (عددية) ؛ Vars: num (0)، denom (1)؛ إذا كانت (periodLengthlt؛ gt؛ 0) ثم تبدأ denom = Highest (High، periodLength) - Lowest (Low، periodLength)؛ num = Close # 91؛ periodLength-1Number93؛ -- قريب؛ num = القيمة الإجمالية (عدد) ChoppyMarketIndex = 0.0؛ if (denomlt؛ gt؛ 0) then ChoppyMarketIndex = numdemon * 100؛ النهاية؛ هل لاحظت أن هذه الوظيفة كانت تتكون من أغراض مختلفة (وحدات بناء)؟ حسبنا الدين (المقام) من خلال توظيف وظائف أعلى وأدنى. حسبنا العدد (البسط) عن طريق استخدام وظائف AbsValue (إرجاع القيمة المطلقة لعدد). المقتطف الوحيد المحير من الكود في هذه الوظيفة هو على الأرجح: Inserted Code Close # 91؛ periodLength-1 # 93؛ - إغلاق قد تكون تسأل لماذا نحن طرح 1 في periodLength. هذا سؤال رائع. إذا قمت بتضمين سعر الإغلاق لبعض الحسابات ، فسيتم الإشارة إلى السعر النهائي بعد مرور 30 يومًا عن طريق الإغلاق [29]. ضع في اعتبارك أن Close [1] سعر إغلاق يوم أمس ليس اليوم. نظرًا لأننا نحتاج إلى أن يتدفق مؤشرنا بين 0 و 100 إيجابي ، فإننا نزيل العلامة السلبية لحركة هبوطية في السوق. نحن مهتمون فقط بالمسافات المطلقة. هذا ما توصلت إليه ، ولكن لست متأكداً من أنه تم ترميزه بشكل صحيح: كود مزدوج مدرج ChoppyMarketIndex (int periodLength) double num = 0؛ double denom = 0 if (periodLength! = 0) denom = High # 91؛ iHighest (Symbol ()، PERIOD_D1، MODE_HIGH، periodLength، 0) # 93؛ - منخفض # 91 ؛ iLowest (الرمز () ، PERIOD_D1 ، MODE_LOW ، periodLength ، 0) Number93 ؛؛ num = Close # 91؛ periodLength-1 # 93؛ - أغلق # 91 ؛ 1 # 93 ؛؛ عدد الأسطوانات = MathAbs (عدد) ؛/denom = MathAbs (denom)؛ إذا (denom! = 0) return (NormalizeDouble (numdenom * 100،0))؛ شكرا مسبقا،