مسح المعاملات: محاور مقروءة من النص، وسقف للتركيبات

مسح المعاملات هو كتلة «Parameters to sweep» في الاختبار الرجعي التلقائي داخل Replay. وكل محور مفتاح معامل مع قائمة قيم مفصولة بفواصل؛ ويوسّعها المحرك جداءً ديكارتيًا مسقوفًا عند 400 تركيبة، ويختار تحليل Walk-Forward أفضل تركيبة لكل شريحة.

Senzoukria · التوثيق · آخر تحديث: سبتمبر 2026


أين تجده

الموضع
Replay ← Automatic backtest ← «Walk-forward — find the best configuration» ← Parameters to sweep
المحاور الافتراضية
lookback 10 و20 و40 · stopTicks 20 و40 و80 · targetTicks 40 و80 و160 (27 تركيبة) إلى أن يُقرأ النص
السقف الصارم
400 تركيبة (MAX_COMBOS)؛ وفوقها تُرفض التشغيلة ولا تُقتطع
معيار الاختيار
SQN افتراضيًا؛ وعامل الربح أو التوقّع لكل صفقة أو شارب لكل صفقة

ما الذي يفعله

يحوّل المسح استراتيجيةً واحدة إلى شبكة تركيبات. وكل محور مفتاح معامل وقائمة قيم تُكتب هكذا «10, 20, 40». ويبني المحرك الجداء الديكارتي لكل المحاور فوق معاملات الاستراتيجية الأساسية (expandSweep)، ثم يشغّل اختبارًا رجعيًا واحدًا لكل تركيبة على الشموع نفسها، بالتتابع، حتى تبقى الواجهة صالحة للاستعمال أثناء العمل.

وداخل تحليل Walk-Forward يُعاد تقييم الشبكة على الجزء التدريبي من كل شريحة؛ ثم تُختبر التركيبة صاحبة أفضل درجة على الجزء الذي لم يشارك في الاختيار. ويقرأ العدّاد تحت المحاور «{n} combinations × {folds} slices — about {duration}» حتى تعرف الكلفة قبل ضغط Run.

والمحاور تُقترح من النص نفسه. فقارئ ساكن (parametresLus) يمسح المصدر بحثًا عن params.get("key", default) وparams["key"] وparams.key ?? default وأسماء مستعارة من سطر واحد بصيغة lambda أو سهم تغلّف params. ونصوص C++ لا تعرض أي params في الواجهة الثنائية v1، فلا يُقترح لها شيء. والمفتاح الذي لا يقرؤه النص أبدًا يُظهر التحذير «This script never reads “{key}”: sweeping it would return identical results.»

الإعدادات

عناصر التحكم في كتلة Parameters to sweep وصف Walk-forward فوقها
الإعدادالقيمة الافتراضيةما الذي يغيّره
الشرائح4 (الإدخال من 2 إلى 12)عدد الطيّات المتتالية غير المتداخلة؛ وكل طيّة تتدرب على بدايتها وتختبر على نهايتها
نسبة التدريب0.7 (من 0.5 إلى 0.9، بخطوة 0.05)الكسر من كل شريحة المستعمل لاختيار التركيبة؛ والباقي هو اختبار خارج العيّنة
معيار الاختيارSQNالدرجة المستعملة لترتيب التركيبات: SQN أو عامل الربح أو التوقّع لكل صفقة أو شارب لكل صفقة. وإجمالي الأرباح والخسائر غائب عن قصد
مفتاح المحور / القيمlookback وstopTicks وtargetTicks بثلاث قيم لكل واحدسطر لكل معامل؛ والمدخلات الفارغة أو غير الرقمية تُسقَط بصمت
Add a parameter—يضيف المعامل التالي الذي يقرؤه النص ولا يستعمله أي محور بعد، مع قيم مقترحة؛ وإلا سطرًا فارغًا
Explore every readable parameter (n)—يستبدل بالمحاور حتى خمسة معاملات مقروءة من النص، بقيم حول قيمها الافتراضية
Remove this parameter—يحذف سطر المحور
أدنى عدد صفقات10 (ثابت في المحرك)التركيبة بصفقات أقل تُدرَّج بـ −∞ ولا يمكن اختيارها أبدًا

كيف تُبنى القيم المقترحة

  • القيمة الافتراضية الصحيحة ≥ 2 تُعامَل نافذةً أو عدًّا: فالاقتراح هو النصف والقيمة نفسها والضعف (20 ← 10، 20، 40).
  • القيمة الافتراضية في المجال ]0، 1] تُعامَل نسبةً: ±0.1، مع إبقائها بين 0 و1 حصرًا.
  • وأي رقم آخر يُعامَل معاملَ ضرب: ±25 %، مقرَّبًا إلى منزلتين عشريتين.
  • qty وcolor وcolour لا تُقترح أبدًا: فالكمية تضاعف النتيجة دون تغيير أي قرار. ويبقى بوسعك كتابتها يدويًا.
  • تُقترح ثلاثة محاور افتراضيًا، بالترتيب الذي يقرؤها به النص؛ وزر البرق يوسّع ذلك إلى خمسة.

الحدود والمزالق

سقف الأربعمئة تركيبة ليس إعداد أداء. واللوحة تقول ذلك صراحةً: كل تركيبة إضافية سحبة أخرى من البيانات نفسها، وبعد تلك النقطة تقيس حظَّ إفراط في المواءمة لا استراتيجية. فضيّق مدىً أو امسح معاملات أقل في المرة الواحدة.

والقارئ ساكن. فهو لا يرى مفتاحًا يُبنى أثناء التشغيل (params.get("hmm" + suffix)) ولا حلقةً على قاموس؛ ومثل هذه المعاملات يجب كتابتها يدويًا. وفي المقابل تتوقف المحاور عن متابعة النص ما إن تحرّرها؛ ويعيد إجراء «re-read the script» زمام الأمر.

وعدد المحاولات المُمرَّر إلى نسبة شارب المنقوصة هو عدد التركيبات، لا التركيبات × الشرائح؛ فالتحقق النظيف لا يُحتسب ضدك. وانظر صفحة اختبارات الإفراط في المواءمة لمعرفة كيف يغذّي هذا العدد PSR وDSR وPBO.

هذه الصفحة بلغات أخرى

أسئلة شائعة

لماذا يعيد مسحي نتائج متطابقة لكل تركيبة؟
لأن المفتاح الممسوح لا يقرؤه النص. واللوحة توسمه الآن («This script never reads …»)؛ فاستبدل به واحدًا من المعاملات المقترحة من المصدر، أو أضف نداء params.get إلى نصك.
هل أستطيع مسح أكثر من 400 تركيبة بتشغيلتين؟
تستطيع، لكن كل تشغيلة مجموعة سحبات أخرى على الشموع نفسها، ونسبة شارب المنقوصة لا تعرف إلا محاولات التشغيلة الجارية. والسقف موجود لإبقاء التصحيح أمينًا؛ ففضّل محاور أقل بخطوات أوسع.
هل يعمل المسح على التوازي؟
لا. يشغّل المحرك التركيبات واحدةً تلو الأخرى ويبلّغ عن التقدّم أثناء ذلك، فتبقى اللوحة مقروءة بينما تُستوفى الشبكة. والتقدير المعروض بجوار عدد التركيبات موجود لتخطيط التشغيلة قبل بدئها.

اقرأ أيضًا