الوثائق1.0 (latest)
الصفحاتالتحسين · 20 / 29

التحسين

يمكن لـ QuantCraft تشغيل عدة اختبارات رجعية متتالية بقيم مختلفة لـمعاملات الإدخال الخاصة بك وتتيح لك مقارنة النتائج. اضبط عمليات التشغيل من Test (تشغيل الشيفرة)؛ وتظهر النتائج الملخّصة في نتائج الاختبار. تتوفر استراتيجيتا بحث:

  • Brute force — جرّب كل تركيبة من القيم التي تدرجها.
  • Genetic — استخدم خوارزمية جينية لاستكشاف فضاءات بحث كبيرة بعدد تشغيلات أقل بكثير.

يُضبط كلا الوضعين في علامة تبويب Script بنافذة Run backtest (زر Test) ولا يظهران إلا عندما يصرّح نصّك عن معاملات عبر quantcraft.inputs (ولا تزال المسارات الأقدم quantcraft.inputs_module / ide.inputs_module تُطابَق للنصوص الحالية). احفظ شبكات التحسين وإعدادات النافذة الأخرى بـإعدادات التشغيل المسبقة (.qcs) (تُخزَّن optStep / optMax لإعدادات الاختبار الرجعي المسبقة).


أين تجده

  1. افتح نافذة Test بزر Test في شريط أدوات بيئة التطوير.
  2. افتح علامة تبويب Script (تظهر عندما يستورد نصّك params من quantcraft.inputs — أو من المسارات الأقدم quantcraft.inputs_module / ide.inputs_module).
  3. فعّل Optimize واختر Brute force أو Genetic.

تستخدم عمليات التحسين نفس إعدادات Symbol & data وSimulation المستخدمة في الاختبار الرجعي العادي. كل ما تضبطه هو كيف تتغير المعاملات.


سلوك جدول المعاملات عند تفعيل التحسين

يكتسب جدول Parameter values عمودين إضافيين عند تفعيل التحسين:

العمودالغرض
Parameterالاسم من نصّك (للقراءة فقط).
Typeint أو float أو bool أو str.
Valueفي الأنواع الرقمية هو بداية الشبكة. وفي bool/str هو القيمة الثابتة.
Stepرقمي فقط. الخطوة بين القيم المتتالية (موجبة أو سالبة).
Maxرقمي فقط. الحد الأعلى للشبكات التصاعدية أو الحد الأدنى للتنازلية.

السلوك بحسب النوع:

  • int / float — تُولَّد القيم بالشكل start, start+step, … حتى Max شاملًا (مع التقريب في int).
  • bool — يتوسّع تلقائيًا إلى true وfalse (قيمتان).
  • str — يُترك ثابتًا؛ فمعامل السلسلة لا يتغير.

يعرض كل صف عنصرًا نائبًا صغيرًا (true / false أو fixed) عندما لا يمكن توسيع القيمة، لترى بنظرة سريعة أي المعاملات تتغير فعلًا.


القوة الغاشمة (شبكة المعاملات)

تقيّم القوة الغاشمة كل تركيبة من القيم التي عرّفتها. فإذا أدرجت 5 قيم لـ length و4 قيم لـ threshold، فهذه 5 × 4 = 20 اختبارًا رجعيًا.

الحدود والتحقق

  • إجمالي عدد التركيبات محدود بـ 256 تشغيلًا. وفوق ذلك تمنع النافذة الإرسال برسالة صريحة تطلب منك توسيع الخطوات أو إزالة معاملات من الشبكة.
  • يحتاج كل نطاق رقمي إلى الثلاثة: Value (البداية) وStep وMax. ولا يمكن أن تكون Step تساوي 0.
  • إذا لم يكن Max قابلًا للوصول من Value بإشارة Step المختارة، تشرح النافذة المشكلة (مثل: البداية ≤ الحد الأقصى للخطوات الموجبة).

ما تراه أثناء التشغيل

عند إرسال تحسين بالقوة الغاشمة:

  • تظهر لافتة ترويسة في عرض Test results: Optimization — <file> (current/total).
  • تسجّل لوحة المخرجات كل تشغيل مع تركيبة معاملاته، بالإضافة إلى سطر ترويسة: Optimization (brute force): N backtest run(s).
  • يعرض شريط تقدّم لوحة المخرجات Run X / N.
  • يتوفر زر Stop — وتُحفظ عمليات التشغيل المكتملة وتظهر في النتائج.

ما تراه عند الانتهاء

تعرض لوحة Test Results عرض Optimization:

  • ترويسة تلخّص النص وعدد عمليات التشغيل المكتملة.
  • شريط علامات تبويب لجميع عمليات التشغيل، تحمل كل علامة تركيبة المعاملات (مثل length=20, threshold=1.5). وعندما تطول التسميات، تُعرض التركيبة الكاملة فوق مخطط التشغيل النشط.
  • يعرض اختيار علامة تبويب عرض الأداء المعتاد لذلك التشغيل (مخطط حقوق الملكية والمقاييس والصفقات)، لتتمكن من التعمّق في أي تركيبة.
  • إذا أُوقف التشغيل قبل اكتمال جميع التركيبات، تنبّه لافتة إلى أن النتائج جزئية.

البحث الجيني

الوضع الجيني هو الاختيار الصحيح عندما تكون شبكة القوة الغاشمة أكبر من اللازم. فبدلًا من تجربة كل تركيبة، يُطوّر مجموعة صغيرة من المرشّحين عبر عدة أجيال، محتفظًا بـالأنسب وموفّقًا بينها.

المعاملات الفائقة

بدّل علامة التبويب الداخلية إلى Genetic وسترى هذه الحقول:

الحقلالنطاقملاحظات
Population size4 – 64عدد المرشّحين المقيَّمين في كل جيل. القيم المعتادة 8–32. ويجب أن يكون أكبر من Elitism.
Generations1 – 40يشغّل كل جيل مجموعة كاملة من الاختبارات الرجعية.
Elitism≥ 1، < المجموعةأفضل المرشّحين يُنسخون دون تغيير إلى الجيل التالي.
Crossover rate0 – 1احتمال أن ينتج والدان طفلًا مختلطًا (وإلا يُنسخ الوالد الأول).
Mutation rate0 – 1احتمال القفز عشوائيًا لكل جين إلى قيمة منفصلة أخرى.
Fitness metricقائمة منسدلةما يعظّمه البحث (انظر أدناه).
Random seed (optional)نصاستخدم البذرة نفسها لإعادة إنتاج بحث بالضبط.

العدد الإجمالي للاختبارات الرجعية المشغّلة هو population × generations. وهذا الناتج محدود بـ 400 تقييم — فإذا تجاوزته، تطلب منك النافذة خفض إحدى القيمتين.

الأليلات (القيم المنفصلة التي يمكن أن يتخذها كل معامل) هي نفس الشبكات تمامًا التي كانت ستبنيها القوة الغاشمة:

  • تستخدم المعاملات الرقمية Value / Step / Max لإنشاء قائمة منفصلة.
  • تصبح المعاملات المنطقية (bool) true / false.
  • المعاملات النصية ثابتة (ولا تؤثر في البحث).

يحتاج البحث الجيني إلى معامل واحد على الأقل يمكن أن يتغير (أكثر من أليل واحد). وتمنع النافذة الإرسال وتطلب منك توسيع شبكة رقمية أو تضمين bool إذا كانت كل المعاملات ثابتة.

مقاييس اللياقة

تقدّم القائمة المنسدلة (الأعلى أفضل):

  • Sharpe ratio (الافتراضي)
  • Sortino ratio
  • Total return
  • Total P/L ($)
  • Profit factor
  • Calmar ratio

يُقرأ المقياس من أداء حساب كل اختبار رجعي — وتحصل عمليات التشغيل التي فشلت على أدنى لياقة ممكنة فتُرتَّب دائمًا في النهاية.

ما تراه أثناء التشغيل

  • لافتة الترويسة: Genetic optimization — <file> مع Generation g of N, individual i of P.
  • تسجّل لوحة المخرجات البحث: Genetic optimization: population P, N generation(s), fitness = …، ثم ── Gen g/N, indiv i/P: <combo> ── لكل اختبار رجعي.
  • يعرض شريط التقدّم Gen g/N · i/P.
  • تظهر لوحة نتائج جزئية فور اكتمال أولى عمليات التشغيل — إذ تُرتَّب المرشّحات المقيَّمة بحسب اللياقة وتُدرج ببادئات G<g>·… لتعرف من يتصدّر دون انتظار البحث بأكمله.

ما تراه عند الانتهاء

  • تعرض لوحة Test Results Genetic optimization — <file> إلى جانب مقياس اللياقة المستخدم وعدد عمليات التشغيل.
  • يتضمن العرض النهائي الجيل الأخير مرتّبًا بحسب اللياقة، والأفضل في الأعلى. وتفتح كل علامة تبويب عرض الأداء الكامل لذلك التشغيل.
  • إذا ضغطت Stop، تُعرض التقييمات المكتملة من جميع الأجيال حتى الآن مرتّبة بحسب اللياقة، وتنبّه لافتة إلى أن البحث أُوقف مبكرًا.

نصائح عملية

  • ابدأ صغيرًا. شبكة قوة غاشمة من 3 معاملات بعشر قيم لكل منها هي بالفعل 1000 تشغيل — أعلى بكثير من حد 256. قلّل الخطوات قبل تفعيل التحسين.
  • فضّل Genetic للفضاءات الكبيرة. فيما يتجاوز نحو 3 معاملات رقمية، يكون عادةً أسرع وأكثر فائدة استخدام بضعة أجيال من البحث الجيني بدل شبكة قوة غاشمة ضئيلة.
  • ثبّت بذرة عندما تريد أن يكون تشغيل Genetic قابلًا لإعادة الإنتاج (مثل مقارنة استراتيجيتين بالبحث نفسه).
  • استخدم Stop بحرية. يحتفظ الوضعان بعمليات التشغيل المكتملة فعلًا، فيمكنك المقاطعة بمجرد ظهور فائز واضح.
  • اختر اللياقة عن قصد. تكافئ Sharpe وSortino الاتساق، وتلاحق Total return / Total P/L النمو الخام، وتكافئ Profit factor التوازن بين الربح والخسارة، وتعاقب Calmar التراجعات العميقة.
  • افحص كل تشغيل. تحتوي كل علامة تبويب نتيجة على مخطط حقوق الملكية القياسي والمقاييس وسجل الصفقات — ويمكنك تصدير تقرير HTML لأي تشغيل منفرد تمامًا كما في اختبار رجعي واحد.
6 دقائق للقراءةاقترح تعديلًا ↗
التحسين — الوثائق (1.0 (latest)) | QuantCraft