كل المشاريع/STOCK INSIGHTS APP

نظرة عامة

يضع التطبيق قائمة متابعة ثابتة من ثلاثين رمزًا خلف تسجيل دخول، ويمنح كلّ رمز المعاملة نفسها: اختر رمزًا ونطاقًا زمنيًّا، ويمكن عندئذٍ فتح حتى سبع لوحات تحليل عند الطلب على سنة البيانات اليومية نفسها.

ثلاث من تلك اللوحات فنّية — نطاقات بولينجر، وMACD، ومؤشّر القوّة النسبية — والحسابات خلفها من عمل المشروع نفسه، محسوبةً على نوافذ pandas المتدحرجة والأُسّية الترجيح لا مسحوبةً من مكتبة مؤشّرات. أمّا البقيّة فتغطّي حجم التداول، وجدول أساسيّات من سبعة صفوف، وتقييمات المحلّلين، وتاريخ الأسعار الخام.

وحول التحليل يقوم سطح حسابات صغير: خمسة نماذج تغطّي تسجيل الدخول والتسجيل وإعادة تعيين كلمة المرور واستعادة معرّف المستخدم، إضافةً إلى تبويب منفصل للمشرف إجراؤه الوحيد مراجعة الحسابات المسجّلة. دوران ووجهتان مختلفتان — فالمشرف يُوجَّه إلى شاشة أخرى لا إلى نسخة مميّزة من الشاشة نفسها.

التحدي

متابعة حفنة من الأسهم تعني أنّ الأرقام المهمّة مبعثرة. تاريخ الأسعار في مكان، والمؤشّرات الفنّية في آخر، والأساسيّات في صفحة ثالثة، ورأي المحلّلين في مكان رابع، ولا تتّفق أيٌّ منها على تخطيط. وكان المطلوب جمعها في شاشة واحدة لقائمة متابعة ثابتة، ووضع تسجيل دخول أمامها حتى لا تكون الأداة مفتوحةً للإنترنت ببساطة، وإبقاؤها خفيفةً بما يكفي ليُشغّلها شخصٌ واحد بلا بنية تحتية خلفها.

أمّا القيد اللافت فكان إطار العمل نفسه. يُعيد Streamlit تنفيذ السكربت كاملًا من أعلاه عند كلّ تفاعل — كلّ زرّ، وكلّ قائمة منسدلة، وكلّ تغيير تاريخ. فلا وجود لـ«اترك ذلك الرسم على الشاشة»: إن لم يتذكّر التطبيق عمدًا أنّ لوحةً طُلِبت، محتها النقرة التالية. وأيّ واجهة فيها أكثر من عرضٍ اختياري واحد عليها أن تحلّ ذلك قبل أن تحلّ أيّ شيء آخر.

تصميم النظام

كيف يعمل

01/03
01

فتح لوحة، ولماذا تبقى مفتوحة

الآليّة الوحيدة التي تقوم عليها الواجهة كلّها — يُعيد Streamlit تنفيذ السكربت كاملًا عند كلّ تفاعل، فما يبقى على الشاشة هو ما تتذكّره الجلسة.

  1. 1يختار الزائر رمزًا من قائمة المتابعة ونطاقًا زمنيًّا في الشريط الجانبي
  2. 2كلّ تفاعل يُعيد تنفيذ السكربت من أعلاه؛ وتُقرأ رايات الجلسة قبل رسم أيّ شيء
  3. 3تُسحَب سنةٌ من البيانات اليومية مرّةً واحدة للرمز والنطاق الحاليَّين، وتتشاركها كلّ لوحة مفتوحة
  4. 4الضغط على زرّ لوحة لا يرسم الرسم — بل يرفع راية تلك اللوحة ويترك السكربت يُعاد تنفيذه
  5. 5في المرور التالي تكون الراية مرفوعة، فيُحسَب المؤشّر على البيانات المسحوبة سلفًا ويُعرَض الشكل
  6. 6ولأنّ الراية تبقى، تظلّ اللوحة موجودة بعد النقرة التالية، وفتح لوحة ثانية لا يُغلق الأولى أبدًا
02

من الرمز إلى المؤشّر

ما يجري بين اختيار رمزٍ ورؤية خطّ — والحسابات من عمل المشروع نفسه لا استدعاءً لمكتبة.

  1. 1يُحلّ الرمز المختار وتُسحَب سنةٌ من الصفوف اليومية من مصدر بيانات السوق
  2. 2تأخذ نطاقات بولينجر متوسّطًا متدحرجًا وانحرافًا معياريًّا على 20 فترة، وتضع نطاقين على بُعد انحرافين من كلّ جانب
  3. 3يطرح MACD متوسّطًا أُسّي الترجيح على 26 فترة من آخر على 12 فترة، ثم يأخذ خطّ إشارة على 9 فترات والمدرّج بينهما
  4. 4يفصل مؤشّر القوّة النسبية المكاسب عن الخسائر على 14 فترة ويحوّل نسبتهما إلى مؤشّر من 0 إلى 100، مع رسم خطّي 70 و30
  5. 5تبني كلّ لوحة شكلها من تلك السلاسل، فتبقى الرسوم مستقلّةً ويمكن فتحها بأيّ ترتيب
  6. 6ويُجمَّع جدول الأساسيّات على حدة من ملفّ الشركة، حقلًا حقلًا، مع بديل حيثما لا يملك المصدر شيئًا
03

الحصول على حساب، والعودة إليه

خمسة نماذج ودوران، مع إبقاء مخزن الحسابات خارج مسار التحليل عمدًا.

  1. 1يسجّل الزائر الجديد ببريد وتاريخ ميلاد ومعرّف مستخدم يختاره وكلمة مرور تُدخَل مرّتين، ويجب أن تتطابق الإدخالتان قبل كتابة أيّ شيء
  2. 2يُثبَّت صفّ الحساب أولًا، وعندئذٍ فقط تُحاوَل رسالة التأكيد، فيُكلّف خلل البريد التأكيد لا التسجيل
  3. 3يسجّل الزائر العائد دخوله وتسجّل الجلسة الدور الممنوح له
  4. 4من فقد كلمة مروره يُعيد تعيينها ببيانات سبق أن قدّمها عند التسجيل؛ ومن فقد معرّفه يستعيده بالطريقة نفسها
  5. 5يسجّل المشرف دخوله عبر تبويب منفصل ويُوجَّه إلى سطح مختلف كليًّا لا إلى نسخة مميّزة من السطح نفسه
  6. 6ولذلك السطح إجراء واحد بالضبط — سرد الحسابات المسجّلة — لأنّه حُدِّد للمراجعة لا للإدارة

أبرز الميزات

  • سبع لوحات تحليل تُفتَح عند الطلب — نطاقات بولينجر، وMACD، ومؤشّر القوّة النسبية، وحجم التداول، وجدول أساسيّات، وتقييمات المحلّلين، وتاريخ الأسعار الخام، لكلٍّ زرّه ورايته المحفوظة
  • ثلاثة مؤشّرات كلاسيكية مُنفَّذة من الصفر على نوافذ pandas المتدحرجة والأُسّية الترجيح، ومعاملاتها ظاهرة كقيم افتراضية للدوالّ لا مدفونةً في شيفرة الرسم
  • جدول أساسيّات من سبعة صفوف — الإغلاق السابق، وأعلى وأدنى 52 أسبوعًا، ومكرّر الربحية، وبيتا، وPEG، ومكرّر الربحية الآجل — يطلب كلّ حقل ببديل، فيعرض الرمز شحيح البيانات جدولًا جزئيًّا بدل أن يفشل
  • قائمة متابعة من ثلاثين رمزًا تُحمَّل من ملفّ نصّي عادي إلى المُنتقي، فيصير نطاق التداول تهيئةً لا شيفرة
  • نطاق زمني يتحكّم به الزائر، افتراضه السنة الأخيرة، ويُطبَّق على كلّ اللوحات دفعةً واحدة
  • خمسة نماذج حسابات تغطّي الدورة كاملة — تسجيل الدخول، والتسجيل، وإعادة تعيين كلمة المرور، واستعادة معرّف المستخدم، وتسجيل دخول منفصل للمشرف
  • دوران بسطحين مختلفين: المستخدم العادي يصل إلى شاشة التحليل، والمشرف يصل إلى شاشة مراجعة الحسابات بدلًا منها
  • ترتيب التسجيل بحيث يُثبَّت صفّ الحساب قبل محاولة رسالة التأكيد، فيُبلَّغ عن فشل البريد دون التراجع عن التسجيل
  • رسوم تفاعلية في كلّ مكان — التحويم والتكبير وتبديل وسيلة الإيضاح متاحة في كلّ لوحة بدل صور ثابتة

Outcomes

  • شاشة واحدة حلّت محلّ التنقّل بين التبويبات: تاريخ الأسعار وثلاثة مؤشّرات فنّية وحجم التداول والأساسيّات وتقييمات المحلّلين لأيٍّ من ثلاثين رمزًا، كلّها من اختيار واحد
  • سبع رايات محفوظة تجعل الواجهة تبدو ذات حالة على إطار عمل يُعيد تنفيذ كلّ شيء عند كلّ نقرة — وفتح لوحة ثانية لا يُغلق الأولى
  • كون حسابات المؤشّرات من عمل المشروع نفسه هو ما أبقى معاملاتها قابلةً للضبط بدل أن تثبّتها قيم مكتبة افتراضية
  • خرجت التهيئة من قاعدة الشيفرة كليًّا: قائمة المتابعة ملفّ نصّي، وكلّ بيانات الاعتماد من مخزن أسرار بيئة التشغيل
  • سُلِّم مستودعًا يعمل بأمرٍ واحد، مع حاوية تطوير مثبّتة على Python 3.11 تُثبّت الاعتماديات وتُشغّل التطبيق لمن يلتقطه من جديد

أعمال أخرى

DataInsight Dashboard preview
لوحة استكشاف بيانات

DataInsight Dashboard

أيُّ جدول بياناتٍ يدخل، فيخرج شكلُه — والمخطّطات تختارها البيانات نفسها

عرض المشروع