المعلمات الفائقة
تتيح المعلمات الفائقة لتعريف استراتيجية واحد إنتاج مجموعة مضبوطة من الاختبارات التاريخية. يوسّع AQE النطاقات المضبوطة عند الحاجة، ويشغّل كل تركيبة بالتتابع، ويسجّل القيم الدقيقة مع بذرة حتمية. يحتفظ التشغيل العادي بالقيم الاحتياطية للاستراتيجية، ولذلك لا تؤدي إضافة هذه الميزة إلى تغيير الاختبارات التاريخية المعتادة.
تعريف إعداد
Section titled “تعريف إعداد”أنشئ HyperParameterConfig وسجّل كل معلمة مرة واحدة. تحدد values() مجموعة قيم منفصلة، وتنشئ range(min, max, increment) نطاقًا عدديًا. تُستخدم القيمة الاحتياطية المقدَّمة إلى HyperParameter::new() عند عدم تمرير أي خيار للمعلمات الفائقة.
use aq_engine::prelude::*;
let mut hyperparameters = HyperParameterConfig::new();hyperparameters .set_sweep_id("ema-crossover-v1") .add_hyper_parameter( HyperParameter::new("atr_period", 14).values([10, 14, 20]), )? .add_hyper_parameter( HyperParameter::new("ema_period", 21).range(10.0, 30.0, 5.0), )?;الدالة set_sweep_id() اختيارية. عند إغفالها، يشتق AQE معرّفًا ثابتًا من الإعداد. أعطها قيمة صريحة عندما تريد اسم مجلد مسح واضحًا ودائمًا.
استخدام قيمة في منطق الاستراتيجية
Section titled “استخدام قيمة في منطق الاستراتيجية”اقرأ قيمة نشطة من سياق الاستراتيجية باستخدام الدوال المساعدة ذات الأنواع المحددة. ويظل المُعامِل الأخير هو القيمة الاحتياطية المعتادة المحددة في الشيفرة.
let atr_period = aq_engine::core::strategy::hyperparameters::hyper_int( ctx, "atr_period", 14_usize,);let ema_period = aq_engine::core::strategy::hyperparameters::hyper_int( ctx, "ema_period", 21_usize,);استخدم القيم عند إنشاء نموذج ألفا أو مرحلة معالجة إشارات تداولية أو أي مكوّن آخر للاستراتيجية. يربط مثال المعلمات الفائقة في AQE كلا المُدخلَين بنموذج ألفا المدمج لتقاطع EMA، ويضيف مسار معالجة لإرسال الإشارات التداولية.
تشغيله
Section titled “تشغيله”أرفق الإعداد بكل StrategyState، ثم واصل استخدام مشغّلات الحالة المعتادة. تتصرف الحالة التي لا تتضمن إعدادًا كما كانت تمامًا. أما الحالة التي تتضمن إعدادًا، فتحدد اختيار المعلمات الموافق لـ--hyper-seed تلقائيًا قبل run_backtest() أو run_live().
let mut state = build_strategy_state(timeframe.clone());state.set_hyper_parameter_config(hyperparameters);state.run_backtest(start, end, timeframe).await?;لإجراء مسح كامل، مرّ على اختيارات hyperparameters.process_runs(&args)، وأنشئ حالة جديدة لكل اختيار، واستدعِ set_hyper_parameter_config(config.clone()) ثم set_hyper_parameter_run(&selection, true) قبل استدعاء run_backtest() كالمعتاد. بعد اكتمال التشغيل، تحتفظ الحالة ببيانات تشغيل قابلة للتغيير تخص الوسيط والاستراتيجية، لذا لا يمكن إعادة استخدامها بأمان للبذرة التالية.
للوضع المباشر، استخدم البنية نفسها: أرفق الإعداد واستدعِ state.run_live(None).await?. يحدد الوضع المباشر اختيار المعلمات لبذرة واحدة تلقائيًا، ويرفض المسح الكامل.
المجلد الجذري لملفات النتائج اختياري. بدونه، تُكتب النتائج بمسارات نسبية إلى مجلد عمل العملية، أو إلى موقع مجاور للبيانات الوصفية للاستراتيجية عند توفره. وهو لا يحدد ما إذا كان التشغيل مسحًا؛ بل يحدد ذلك خيار سطر الأوامر المستخدم.
خيارات سطر الأوامر
Section titled “خيارات سطر الأوامر”| الأمر | النتيجة |
|---|---|
cargo run --release | التشغيل مرة واحدة بالقيم الاحتياطية المعتادة. |
cargo run --release -- --hyper-sweep | تشغيل كل تركيبات الجداء الديكارتي بالتتابع. |
cargo run --release -- --hyper-seed c89cfd30 | تشغيل تركيبة محفوظة واحدة. تُقبل بادئة بذرة فريدة. |
cargo run --release -- --live --hyper-seed c89cfd30 | بدء جلسة مباشرة واحدة باستخدام هذا الاختيار الدقيق للمعلمات. |
يجب أن تطابق البذرة المختارة بذرة مولَّدة واحدة بالضبط. يعرض AQE خطأً واضحًا إذا لم تطابق البادئة أي تشغيل أو طابقت أكثر من تشغيل. تقبل الجلسة المباشرة بذرة واحدة كحد أقصى، لذلك يُرفض --hyper-sweep --live. لا تحتاج إلى حساب جدول تبديلات JSON أو تمريره يدويًا.
النتائج وقابلية إعادة الإنتاج
Section titled “النتائج وقابلية إعادة الإنتاج”للمسح الكامل، يكتب AQE النتائج ضمن backtests/hyper/<sweep-id>/<seed>/. تتضمن كل نتيجة قاعدة بيانات SQLite المعتادة للاختبار التاريخي، ومقاييس مرفقة بالبذرة وقيم المعلمات المحددة. يضمن استخدام إعداد الاستراتيجية نفسه والبذرة نفسها اختيار المعلمات ذاتها؛ أما الحصول على نتائج أداء مطابقة، فيتطلب أيضًا إبقاء بيانات السوق وأي تكامل خارجي غير حتمي دون تغيير.
استخدام AQS بدلًا من ذلك
Section titled “استخدام AQS بدلًا من ذلك”إذا كنت تستخدم AlgoQuant Studio، فاضبط النطاقات نفسها في محرر العقد، واربط مدخلات العقد من الشريط الجانبي Hyperparameters. ينشئ AQS إعداد AQE ويتولى اختيار البذرة نيابةً عنك. راجع المعلمات الفائقة في AQS.
نستخدم ملفات تعريف الارتباط والتخزين الضروريين لتسجيل الدخول وحماية الحساب وحفظ تفضيلات المظهر وهذا الإشعار، ولجمع مقاييس PostHog الداخلية اللازمة لقياس الاستخدام وجودة الجلسات والموثوقية. لا نستخدم ملفات تعريف ارتباط إعلانية.
