تخطَّ إلى المحتوى

دورة حياة الإشارة التداولية

يتتبع AQE الإشارات التداولية عبر آلة حالات تتضمن:

  • New
  • Executed
  • Filled
  • Closed
  • Cancelled
  • Rejected

تبدو المسارات المعتادة كما يلي:

  • New -> Executed -> Filled -> Closed
  • New -> Rejected
  • Executed -> Cancelled
  • Filled -> 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، على الترتيب. ولا يُسجَّل السعر الجديد إلا بعد تأكيد التعديل. إذا نُفّذ أمر الدخول، ولو جزئيًا، أو أصبح غير نشط، تُبقي الدالة سعر الدخول دون تغيير وتسجّل رسالة في سجل الحالة. وإذا كان الأمر المعلّق نشطًا وكان الوسيط لا يدعم تعديل أوامر الدخول، فإنه يعيد خطأً.

راجع الوسطاء ومصادر البيانات للاطلاع على العملية المقابلة في مهايئ الوسيط.

يدعم AQE ضابطين مهمين لدورة الحياة:

  • يُطبَّق period_unfilled ما دامت الإشارة التداولية في حالة New أو Executed. تُرفض الإشارات التداولية المنتهية الصلاحية أو يُطلب إلغاؤها، بحسب الحالة.
  • يُطبَّق period_till_tp بعد تنفيذ أمر الإشارة التداولية وانتقالها إلى حالة Filled. وقد يؤدي انتهاء الصلاحية إلى إرسال طلب إغلاق.

تفرض بيئة التشغيل هذه الفحوص، لا واجهة المستخدم.

يمكن تسجيل كل تغيير مهم في 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".

تتضمن لقطات الإشارات التداولية حقول التنفيذ مثل filled_price وclose_price وbroker_realized_pnl وcommission وswap. تزامن عمليات التشغيل المباشر هذه اللقطات مع AQS Cloud، وتحفظها الاختبارات التاريخية في قاعدة بيانات النتائج المحلية.