دورة حياة الإشارة التداولية
يتتبع AQE الإشارات التداولية عبر آلة حالات تتضمن:
NewExecutedFilledClosedCancelledRejected
تبدو المسارات المعتادة كما يلي:
New -> Executed -> Filled -> ClosedNew -> RejectedExecuted -> CancelledFilled -> Closed
تؤثر في هذه الانتقالات عوامل تشمل انتهاء الصلاحية وفشل مراحل المعالجة ورفض الوسيط وتحديثات التداول.
تعديل أمر دخول لم يُنفَّذ بعد
Section titled “تعديل أمر دخول لم يُنفَّذ بعد”تعني حالة Executed أن الإشارة التداولية أُرسلت إلى الوسيط، لا أن أمر الدخول نُفّذ؛ فقد يظل بانتظار التنفيذ. ما دام الأمر لم يُنفَّذ، يمكن لمرحلة معالجة أو مسار تشغيل آخر لديه مرجع &mut Insight تعديل سعر الدخول:
| الدالة | ما تغيّره | نوع الأمر المعلّق المناسب |
|---|---|---|
insight.update_limit(ctx, price) | السعر المحدد لأمر الدخول | Limit أو StopLimit |
insight.update_stop_limit(ctx, price) | سعر تفعيل أمر الدخول | Stop أو StopLimit |
في أمر دخول من نوع StopLimit، يُضبط هذان السعران كلٌّ على حدة. لا تغيّر update_stop_limit أمر وقف الخسارة الوقائي؛ استخدم update_stop_loss لذلك. وبالمثل، لا تغيّر update_limit مستوى جني الأرباح.
InsightPipeResult::from_mutation(insight.update_limit(ctx, 101.0), self.name())هذا تعبير إرجاع داخل دالة InsightPipe::run تستهدف InsightState::Executed. استبدل update_limit بـupdate_stop_limit عند تعديل سعر تفعيل أمر الدخول. استخدم from_mutation حتى تنتظر مرحلة المعالجة تأكيد معالجة طلب التعديل لدى الوسيط، ولا تعتبر التعديل مكتملًا لمجرد إضافته إلى قائمة الانتظار.
قبل الإرسال، تضبط كلٌّ من الدالتين السعر المقابل محليًا في إشارة تداولية بحالة New. أما إذا كان أمر الدخول قد أُرسل، فيجب أن يكون السعر عددًا منتهيًا وموجبًا، وأن يكون نوع الأمر متوافقًا مع الدالة، وأن يكون معرّف أمر الوسيط معروفًا، وأن يعلن الوسيط دعمه لـAmendLimitPrice أو AmendStopPrice، على الترتيب. ولا يُسجَّل السعر الجديد إلا بعد تأكيد التعديل. إذا نُفّذ أمر الدخول، ولو جزئيًا، أو أصبح غير نشط، تُبقي الدالة سعر الدخول دون تغيير وتسجّل رسالة في سجل الحالة. وإذا كان الأمر المعلّق نشطًا وكان الوسيط لا يدعم تعديل أوامر الدخول، فإنه يعيد خطأً.
راجع الوسطاء ومصادر البيانات للاطلاع على العملية المقابلة في مهايئ الوسيط.
حقول مدة الصلاحية
Section titled “حقول مدة الصلاحية”يدعم AQE ضابطين مهمين لدورة الحياة:
- يُطبَّق
period_unfilledما دامت الإشارة التداولية في حالةNewأوExecuted. تُرفض الإشارات التداولية المنتهية الصلاحية أو يُطلب إلغاؤها، بحسب الحالة. - يُطبَّق
period_till_tpبعد تنفيذ أمر الإشارة التداولية وانتقالها إلى حالةFilled. وقد يؤدي انتهاء الصلاحية إلى إرسال طلب إغلاق.
تفرض بيئة التشغيل هذه الفحوص، لا واجهة المستخدم.
سجل الحالة
Section titled “سجل الحالة”يمكن تسجيل كل تغيير مهم في state_history، بما في ذلك:
- انتقالات الحالة
- الإرسال
- قبول الوسيط
- عمليات تنفيذ الأوامر
- عمليات الإغلاق الجزئي
- طلبات الإلغاء
- حالات الرفض
- معالجة انتهاء الصلاحية
هذا السجل هو ما يجعل أداة الفحص المشتركة في AQS وBacktest Results مفيدة للمراجعة.
إضافة رسالة مخصصة إلى السجل
Section titled “إضافة رسالة مخصصة إلى السجل”استخدم state_log(...) لإرفاق ملاحظة للمراجعة بإشارة تداولية دون تغيير حالتها في دورة الحياة. تتلقى نقطة استدعاء الاستراتيجية الإشارات التداولية عبر مرجع مشترك، لذلك أضف هذه الرسائل من مرحلة معالجة أو مسار تشغيل آخر لديه مرجع &mut Insight.
use aq_engine::core::insight::{types::InsightState, Insight};use aq_engine::core::pipeline::{InsightPipe, InsightPipeBuilder, InsightPipeResult};use aq_engine::core::strategy::StrategyContext;
pub struct ReviewNotePipe;
impl InsightPipe for ReviewNotePipe { fn version(&self) -> &str { "1.0" }
fn run(&mut self, _ctx: &mut dyn StrategyContext, insight: &mut Insight) -> InsightPipeResult { insight.state_log(Some("Risk check passed".to_string()));
InsightPipeResult::new( true, true, Some("Review note added to insight history".to_string()), self.name().to_string(), ) }}سجّل مرحلة المعالجة للحالة التي تريد إضافة الملاحظة فيها:
ctx.add_pipe( InsightPipeBuilder::new(Box::new(ReviewNotePipe)) .target_state(InsightState::Filled) .build(),);تحافظ state_log(...) على الحالة الحالية، وتحدّث updated_at، وتضيف الرسالة المقدَّمة إلى state_history. إذا مرّرت None، يسجّل AQE العبارة "State log entry".
الحفظ الدائم
Section titled “الحفظ الدائم”تتضمن لقطات الإشارات التداولية حقول التنفيذ مثل filled_price وclose_price وbroker_realized_pnl وcommission وswap. تزامن عمليات التشغيل المباشر هذه اللقطات مع AQS Cloud، وتحفظها الاختبارات التاريخية في قاعدة بيانات النتائج المحلية.
نستخدم ملفات تعريف الارتباط والتخزين الضروريين لتسجيل الدخول وحماية الحساب وحفظ تفضيلات المظهر وهذا الإشعار، ولجمع مقاييس PostHog الداخلية اللازمة لقياس الاستخدام وجودة الجلسات والموثوقية. لا نستخدم ملفات تعريف ارتباط إعلانية.
