إعداد بيئة البحث: بايثون والبيئات الافتراضية وJupyter وVS Code
ثبّت بايثون، وأنشئ بيئة مشروع معزولة، وأضف pandas وnumpy وmatplotlib، ونفّذ أول عملية حسابية لك في دفتر Jupyter.
ما الذي ستتعلمه
- أي إصدار من بايثون تثبّت في عام 2026، ولماذا يكون اختيار «إصدار واحد قبل الأحدث» عادةً الخيار الأكثر أمانًا.
- كيف تنشئ بيئة افتراضية بحيث يكون لكل مشروع تداول مجموعته الخاصة من الحزم القابلة لإعادة الإنتاج.
- كيف تثبّت pandas وnumpy وmatplotlib وJupyter، وكيف تثبّت الإصدارات في ملف
requirements.txt. - كيف تنظّم مجلد البحث بحيث لا تختلط البيانات والدفاتر والكود القابل لإعادة الاستخدام.
الشرح
بايثون لغة برمجة متعددة الأغراض أصبحت الأداة المعيارية للبحث الكمّي في المجال المالي بفضل مكتباتها الخاصة بالبيانات. اختبرت دورة «التداول المنهجي والاختبار الرجعي» قاعدةً في جدول بيانات؛ أما هذه الدورة فتنقل الأفكار نفسها إلى الكود.
أي إصدار؟ حتى أواخر عام 2026 تُعدّ سلسلة 3.15 أحدث سلاسل بايثون، ويتطلب pandas 3.0 (الصادر في يناير 2026) بايثون 3.11 أو أحدث. قاعدة عملية: ثبّت أحدث إصدار مضى على صدوره بضعة أشهر على الأقل، لأن الإصدارات الجديدة كليًا تفتقر أحيانًا إلى حزم مُعدّة مسبقًا («wheels») للمكتبات العلمية. راجع دائمًا صفحة التنزيل الحالية، وعلى نظام Windows فعّل خيار "Add python to PATH" أثناء التثبيت. تحقّق من ذلك بتنفيذ python --version في الطرفية (قد تحتاج على macOS وLinux إلى python3).
البيئات الافتراضية. البيئة الافتراضية (venv) مجلد خاص يحتفظ بنسخته الخاصة من حزم بايثون لمشروع واحد. ومن دونها، قد تؤدي ترقية pandas للمشروع A إلى تعطيل المشروع B بصمت. تنشئ الوحدة المدمجة بيئةً كهذه:
python -m venv .venv
فعّلها باستخدام .venv\Scripts\activate (Windows) أو source .venv/bin/activate (macOS/Linux). يظهر عندئذ (.venv) في سطر الأوامر، ومن الآن فصاعدًا لا يثبّت pip الحزم إلا في هذا المجلد. أداة pip هي مثبّت الحزم في بايثون؛ وPyPI (فهرس حزم بايثون) هو المستودع العام الذي تنزّل منه.
المكتبات الأساسية. توفّر numpy مصفوفات رقمية سريعة؛ وتبني pandas جداول ذات تسميات (DataFrames) فوق numpy، وهي الأداة الرئيسية في هذه الدورة؛ وترسم matplotlib الرسوم البيانية؛ ويمنحك Jupyter الدفاتر، وهي مستندات تمزج الكود والمخرجات والملاحظات. ثبّتها في سطر واحد:
pip install pandas numpy matplotlib jupyterlab pyarrow
حزمة pyarrow اختيارية، لكن فريق pandas يوصي بها لأن pandas 3.0 يستخدمها لنوع النصوص الافتراضي الجديد ولقراءة الملفات بسرعة أكبر.
قابلية إعادة الإنتاج. بعد التثبيت، نفّذ pip freeze > requirements.txt. يسرد الملف الإصدارات الدقيقة، مثل pandas==3.0.1. ولاحقًا يعيد pip install -r requirements.txt إنشاء البيئة نفسها تمامًا، فيُنتج اختبار رجعي أجريته اليوم الأرقام نفسها؛ فالنتيجة التي لا يمكنك إعادة إنتاجها ليست نتيجة.
دفتر أم سكربت؟ دفاتر Jupyter (التي تُشغَّل بالأمر jupyter lab) مثالية للاستكشاف لأن كل خلية تعمل منفصلةً وتعرض مخرجاتها. أما VS Code (Visual Studio Code، وهو محرّر مجاني) فيفتح دفاتر .ipynb نفسها وسكربتات .py العادية، ويوفّر مصحّح أخطاء ويعرض الأخطاء أثناء الكتابة. اختر المفسّر الموجود داخل .venv في VS Code، وإلا فستفشل عمليات الاستيراد برسالة "No module named pandas" رغم أنك ثبّتها.
بنية مجلدات قابلة للتوسّع:
data/raw/للملفات المنزّلة التي لا تعدّلها يدويًا أبدًا، وdata/processed/للنسخ المنظّفة.notebooks/للاستكشاف، مع ترقيم الملفات (01_load.ipynb،02_returns.ipynb).src/للدوال القابلة لإعادة الاستخدام (المؤشرات، المقاييس)، وtests/لاختبارات الوحدة التي ستكتبها في الدرس 9.requirements.txtوملف.gitignoreيستبعد.venv/وملفات البيانات الكبيرة وأي ملف يحتوي على مفاتيح API.
مثال محلول
مثال افتراضي: خلية أولى في دفتر تحلّ محل حساب حجم المركز الذي ربما أجريته يدويًا في دورة «إدارة المخاطر والصفقات». الافتراضات: حساب بقيمة €10,000، ومخاطرة 1% لكل صفقة، وسعر الدخول €50.00، والوقف عند €47.00. تُهمَل الرسوم والفارق السعري والانزلاق السعري.
account = 10_000
risk_pct = 0.01
entry, stop = 50.0, 47.0
risk_eur = account * risk_pct
per_share = entry - stop
shares = int(risk_eur // per_share)
print(shares, shares * entry, shares * per_share)
خطوة بخطوة: المخاطرة باليورو = 10,000 × 0.01 = €100. المخاطرة لكل سهم = 50 − 47 = €3. عدد الأسهم = 100 ÷ 3 = 33.3، ويقرّب عامل القسمة الصحيحة // النتيجة إلى الأسفل لتصبح 33 (التقريب إلى الأعلى سيتجاوز ميزانية المخاطرة). قيمة المركز = 33 × €50 = €1,650. المخاطرة المخطّطة الفعلية = 33 × €3 = €99. المخرجات هي 33 1650.0 99.0.
الشرطة السفلية في 10_000 مجرد وسيلة لتسهيل القراءة. والمخاطرة المخطّطة ليست الحد الأقصى للخسارة: فالفجوة السعرية التي تتخطى الوقف قد تسبّب خسارة تزيد على €99.
خطأ شائع
pip install دون بيئة مفعّلة، وأحيانًا بصلاحيات المسؤول. وبعد أشهر يحتاج مشروعان إلى إصدارين مختلفين من pandas، وتعطّل ترقيةٌ ما الدفاتر القديمة، ولا يعرف أحد أي الإصدارات أنتجت الاختبار الرجعي للعام الماضي. أنشئ .venv واحدة لكل مشروع، واحفظ requirements.txt في نظام إدارة الإصدارات، ولا تثبّت أبدًا في بايثون النظام.نشاط تطبيقي
اكتب على الورق التسلسل الدقيق لأوامر الطرفية من أجل: إنشاء مجلد مشروع باسم momentum_research، وإنشاء بيئة افتراضية داخله وتفعيلها، وتثبيت pandas وnumpy وmatplotlib وJupyterLab، وحفظ الإصدارات، وتشغيل JupyterLab. ثم اذكر ما الذي ينبغي أن يطبعه الأمر python -c "import pandas; print(pandas.__version__)" إذا نجح التثبيت.
عرض الحل
mkdir momentum_researchثمcd momentum_researchpython -m venv .venvsource .venv/bin/activate(macOS/Linux) أو.venv\Scripts\activate(Windows)pip install pandas numpy matplotlib jupyterlabpip freeze > requirements.txtjupyter lab
يطبع أمر التحقق سلسلة إصدار مثل 3.0.1 (يعتمد رقمك الدقيق على الإصدار المتاح وقت التثبيت).
القيود: تقيّد أجهزة الشركات وبعض توزيعات Linux مسارات التثبيت؛ وإذا لم يُعثر على python فاستخدم python3 أو المسار الكامل الذي يعرضه برنامج التثبيت.
أهم النقاط
- استخدم إصدارًا حديثًا من بايثون 3 ولكن ليس جديدًا كليًا؛ يحتاج pandas 3.0 إلى بايثون 3.11 أو أحدث.
- بيئة افتراضية واحدة لكل مشروع مع ملف
requirements.txtمثبّت الإصدارات تجعل كل اختبار رجعي قابلًا لإعادة الإنتاج. - pandas وnumpy وmatplotlib وJupyter هي الأدوات الأربع التي تعتمد عليها هذه الدورة؛ ويربط VS Code الدفاتر والسكربتات معًا.
- افصل البيانات الخام والبيانات المعالجة والدفاتر والكود القابل لإعادة الاستخدام منذ اليوم الأول.
الخطوة التالية
يتناول الدرس 2 القدر اليسير من أساسيات بايثون الذي تحتاجه قبل العمل مع pandas: أنواع البيانات والقوائم والقواميس والحلقات والدوال وكيفية قراءة رسالة الخطأ.
تقييم ذاتي
أجب عن الأسئلة، ثم تحقّق من إجاباتك. يمكنك إعادة المحاولة بقدر ما تشاء.
تقييم ذاتي تلقائي لمراجعتك الشخصية. تُفحَص إجاباتك في متصفحك ولا نطّلع عليها ولا نقيّمها. هذا ليس امتحانًا ولا مؤهّلًا.
تقدّمك
«مكتمل» يعني فقط أنك علّمت الدرس كمنتهٍ. وهو ليس اختبارًا لفهمك. يُحفظ التقدّم والملاحظات فقط في هذا المتصفح على هذا الجهاز — وليس في حساب.