انتقل إلى المحتوى

الوحدة 01 · الدرس 1 من 5 (01.1)

تجهيز بيئة العمل

مبتدئ15 دقيقةمسودة — قيد المراجعة

ثبّت Python، وأنشئ مشروعاً بحزمه الخاصة، واختر بين Jupyter وVS Code، وتأكّد من أن كل شيء يعمل عبر سكربت فحص قصير.

قبل هذا الدرس: طريقة العمل الكمّية: فكرة ← قواعد ← اختبار ← تحقّق ← تشغيل

في هذا الدرس ستتعلّم أن

  • ثبّت إصداراً حديثاً من Python ومدير حزم.
  • أنشئ مجلد مشروع بمجموعة حزم معزولة خاصة به.
  • شغّل شيفرة Python من دفتر ملاحظات (Notebook) ومن ملف سكربت.
  • تأكّد من إعدادك بسكربت يفحص الإصدارات، واقرأ مخرجاته.

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

يتألف الإعداد من ثلاثة أجزاء: Python نفسها، وطريقة لتثبيت الحزم داخل مشروع، ومحرّر تكتب فيه الشيفرة.

لماذا تهمّ بيئة المشروع

تنجز Python وحدها الكثير، لكن الأدوات التي تستخدمها هذه الدورة تأتي في حزم منفصلة: numpy لمصفوفات الأرقام، وpandas لجداول البيانات، وmatplotlib للرسوم البيانية. تُحدَّث الحزم بانتظام، وتغيّر الإصدارات الجديدة سلوكها أحياناً. فقد يطبع الـ Backtest الذي عمل بطريقة ما العام الماضي أرقاماً مختلفة قليلاً بعد التحديث.

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

الخيار أ: uv (موصى به)

uv أداة مجانية تثبّت Python وتنشئ بيئات المشاريع وتدير الحزم. وهي سريعة وتتولى المهام الثلاث بأوامر قليلة. ثبّتها من الطرفية (Terminal على macOS، وPowerShell على Windows):

macOS or LinuxShell
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell)PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

أغلق الطرفية وأعد فتحها لتجد الأمر الجديد، ثم أنشئ مشروع الدورة:

Create the projectShell
uv python install 3.12
mkdir scuta-quant
cd scuta-quant
uv init --python 3.12
uv add numpy pandas matplotlib jupyterlab

سطراً بسطر: ثبّت Python 3.12؛ وأنشئ مجلداً وادخل إليه؛ وحوّل المجلد إلى مشروع يستخدم Python 3.12؛ وأضف الحزم الأربع. ينشئ uv init ملف pyproject.toml يصف المشروع، ويسجّل uv add كل حزمة هناك وفي ملف uv.lock الذي يثبّت الإصدارات بدقة.

لتشغيل Python داخل المشروع، ضع uv run قبل الأمر: uv run python check_setup.py يشغّل سكربتاً، وuv run jupyter lab يفتح دفتر ملاحظات.

الخيار ب: venv وpip

إن كنت تفضّل الأدوات المرفقة مع Python، فثبّت Python 3.12 من python.org، ثم أنشئ بيئة بوحدة venv المدمجة وثبّت الحزم بـpip:

Create the project with venvShell
mkdir scuta-quant
cd scuta-quant
python3 -m venv .venv
source .venv/bin/activate
pip install numpy pandas matplotlib jupyterlab

على Windows، استخدم python بدلاً من python3، وفعّل البيئة بـ.venv\Scripts\activate. تبقى البيئة مفعّلة في نافذة الطرفية تلك فقط؛ وسترى (.venv) في بداية سطر الأوامر. شغّل deactivate للخروج منها، وفعّلها من جديد في كل مرة تفتح فيها طرفية جديدة. في هذا الخيار، يشغّل python check_setup.py سكربتاً ويفتح jupyter lab دفتر ملاحظات، دون uv run قبلهما.

اختيار المحرّر

تحتاج إلى مكان تكتب فيه الشيفرة وتشغّلها. خياران مجانيان جيدان:

JupyterLab يعمل في المتصفح. تعيش الشيفرة في خلايا؛ تشغّل خلية فتظهر مخرجاتها مباشرة تحتها، بما فيها الرسوم البيانية. وهذا مثالي لاستكشاف البيانات خطوة بخطوة. شغّله من مجلد المشروع بالأمر uv run jupyter lab (أو jupyter lab في بيئة venv مفعّلة)، ثم أنشئ دفتر ملاحظات جديداً.

VS Code محرّر شيفرة عام. ثبّت إضافتَي Python وJupyter من لوحة الإضافات، وافتح مجلد المشروع، واختر بيئة المشروع مفسّراً حين يُطلب منك ذلك. بعدها يمكنك تشغيل ملفات السكربت .py وفتح دفاتر الملاحظات في النافذة نفسها.

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

برنامجك الأول

أنشئ في مجلد المشروع ملفاً باسم first.py بهذه الأسطر، ثم شغّله:

first.pyPython
account = 25_000
risk_per_trade = 0.01
print("Risk per trade in dollars:", account * risk_per_trade)
Output
Risk per trade in dollars: 250.0

حدثت ثلاثة أشياء. خزّن السطر الأول الرقم 25,000 تحت الاسم account؛ وتتيح لك Python كتابة شرطات سفلية في الأرقام الطويلة لتسهيل قراءتها. وخزّن الثاني 1% بصورة العدد العشري 0.01. وضرب الثالث القيمتين وطبع الناتج. ويشرح الدرس التالي كلاً من هذه الأفكار شرحاً وافياً.

تحقّق من إعدادك

يستورد هذا السكربت كل حزمة ويطبع إصدارها. احفظه باسم check_setup.py وشغّله.

check_setup.pyPython
import sys
 
import matplotlib
import numpy as np
import pandas as pd
 
print(f"Python     {sys.version.split()[0]}")
print(f"numpy      {np.__version__}")
print(f"pandas     {pd.__version__}")
print(f"matplotlib {matplotlib.__version__}")
Output
Python     3.12.15
numpy      2.5.3
pandas     3.0.6
matplotlib 3.11.2

يحمّل import حزمة لتستخدمها شيفرتك. ويحمّل import numpy as np حزمة numpy تحت الاسم الأقصر np، وهو عُرف يتبعه تقريباً كل مستخدمي Python؛ وكذلك pd لحزمة pandas. أما الحرف f قبل كل نص فيجعله f-string، تستبدل أي شيء داخل الأقواس المعقوفة بقيمته.

هذه هي الإصدارات المستخدمة لإنتاج كل مخرجات هذه الوحدة. يُفترض أن تعمل الإصدارات الأحدث، وإن كانت الأرقام المطبوعة قد تختلف أحياناً في آخر خانة عشرية. وإذا فشل أي استيراد، فالبيئة تفتقد تلك الحزمة؛ أضفها بـuv add أو pip install وشغّل السكربت مرة أخرى.

كيف تستخدم الشيفرة في هذه الدورة

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

جميع البيانات في الدورة اصطناعية، مولَّدة بالشيفرة ببذرة عشوائية ثابتة. لا شيء يتطلب اتصالاً بالإنترنت بعد التثبيت، ولا حساباً لدى أي مزوّد بيانات، ولا مالاً حقيقياً.

أهم الخلاصات

  • ينبغي أن يكون لكل مشروع بيئته الخاصة، حتى تُسجَّل إصدارات الحزم ويمكن إعادة إنتاج النتائج.
  • uv طريقة سريعة لتثبيت Python وإدارة الحزم؛ وتعمل أيضاً أداتا venv وpip المدمجتان.
  • دفاتر الملاحظات مناسبة للاستكشاف؛ وملفات السكربت مناسبة لكل ما تريد إعادة تشغيله بالضبط.
  • كل مثال شيفرة في هذه الدورة برنامج كامل يمكنك لصقه في ملف أو في خلية دفتر ملاحظات وتشغيله.

تمرين الـ Lab

ابنِ مشروع الدورة وتحقّق منه

أنشئ مجلداً باسم scuta-quant له بيئته الخاصة وتضم numpy وpandas وmatplotlib وJupyterLab. شغّل check_setup.py من هذا الدرس بوصفه سكربتاً، ثم شغّل الشيفرة نفسها في خلية دفتر ملاحظات. احفظ الإصدارات المطبوعة في ملف نصي داخل المشروع، لتقارن بها لاحقاً إن تغيّرت نتيجة ما.

اختبار ذاتي

أجب بكلماتك أولاً، ثم اكشف الإجابة.

  1. 01لماذا نعطي كل مشروع بيئته الخاصة بدلاً من تثبيت الحزم مرة واحدة للحاسوب كله؟

    اعرض الإجابة

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

  2. 02متى تختار ملف سكربت بدلاً من دفتر ملاحظات؟

    اعرض الإجابة

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

  3. 03ماذا يفعل الأمر uv add pandas داخل مشروع؟

    اعرض الإجابة

    يثبّت pandas في البيئة الخاصة بالمشروع ويسجّله، مع إصداره، في ملفَّي pyproject.toml وuv.lock الخاصين بالمشروع، بحيث يمكن إعادة بناء الإعداد نفسه لاحقاً.

هل أنهيت الدرس وتمرين الـ Lab والاختبار الذاتي؟

مصطلحات المسرد في هذا الدرس

مقالات ذات صلة من الأكاديمية

مادة تعليمية فقط. تستخدم الأمثلة بيانات اصطناعية، وليست نصيحة استثمارية ولا توقّعاً للنتائج.