NumPy (Python Library)
```wiki
NumPy (مكتبة بايثون)
NumPy (اختصار لـ Numerical Python) هي مكتبة أساسية للغة البرمجة بايثون، تستخدم على نطاق واسع في مجالات مثل علم البيانات، التعلم الآلي، التحليل العددي، والتمويل الكمي. توفر NumPy دعمًا قويًا للمصفوفات متعددة الأبعاد، إلى جانب مجموعة كبيرة من الدوال الرياضية للعمل على هذه المصفوفات بكفاءة عالية. هذا المقال موجه للمبتدئين ويهدف إلى تقديم شرح شامل لـ NumPy، مع التركيز على المفاهيم الأساسية وكيفية استخدامها في تطبيقات عملية، مع إبراز أهميتها في سياق الخيارات الثنائية و التداول.
لماذا NumPy؟
قبل NumPy، كان التعامل مع البيانات الرقمية في بايثون يتم باستخدام القوائم (Lists). القوائم مرنة، لكنها غير فعالة عند التعامل مع عمليات رياضية معقدة على كميات كبيرة من البيانات. NumPy تحل هذه المشكلة من خلال تقديم:
- كفاءة الأداء: تستخدم NumPy مصفوفات مُخزَّنة بشكل متجاور في الذاكرة، مما يسمح بإجراء عمليات رياضية أسرع بكثير مقارنة بالقوائم.
- الوظائف الرياضية: توفر NumPy مجموعة واسعة من الدوال الرياضية المضمنة، مثل الدوال المثلثية، الدوال اللوغاريتمية، الجذور التربيعية، وغيرها، والتي تعمل بكفاءة على المصفوفات.
- البث (Broadcasting): تسمح NumPy بإجراء عمليات على مصفوفات ذات أبعاد مختلفة، مما يبسط التعليمات البرمجية ويقلل من الحاجة إلى حلقات التكرار (Loops).
- التكامل مع المكتبات الأخرى: تتكامل NumPy بشكل ممتاز مع مكتبات بايثون الأخرى مثل SciPy، Pandas، وMatplotlib، مما يجعلها حجر الزاوية في العديد من مشاريع علم البيانات.
تثبيت NumPy
لتثبيت NumPy، يمكنك استخدام مدير الحزم pip، وهو أداة تأتي مع توزيعات بايثون الحديثة. افتح سطر الأوامر أو الطرفية (Terminal) وقم بتشغيل الأمر التالي:
``` pip install numpy ```
استيراد NumPy
بعد التثبيت، يمكنك استيراد NumPy في برنامج بايثون الخاص بك باستخدام الأمر التالي:
```python import numpy as np ```
عادةً ما يتم استيراد NumPy بالاسم المستعار `np` لتسهيل الرجوع إليها.
المصفوفات (Arrays)
المصفوفة هي البنية الأساسية للبيانات في NumPy. يمكن إنشاء مصفوفة من قائمة، أو من خلال تحديد شكلها وحجمها.
- إنشاء مصفوفة من قائمة:
```python import numpy as np
my_list = [1, 2, 3, 4, 5] my_array = np.array(my_list) print(my_array) # Output: [1 2 3 4 5] ```
- إنشاء مصفوفة ذات شكل معين:
```python import numpy as np
- إنشاء مصفوفة من الأصفار بحجم 3x4
zeros_array = np.zeros((3, 4)) print(zeros_array)
- إنشاء مصفوفة من الواحدات بحجم 2x2
ones_array = np.ones((2, 2)) print(ones_array)
- إنشاء مصفوفة فارغة بحجم 2x3
empty_array = np.empty((2, 3)) print(empty_array)
- إنشاء مصفوفة متسلسلة من الأرقام
range_array = np.arange(10) # من 0 إلى 9 print(range_array)
- إنشاء مصفوفة متسلسلة من الأرقام بفارق معين
linspace_array = np.linspace(0, 1, 5) # 5 أرقام موزعة بالتساوي بين 0 و 1 print(linspace_array) ```
- خصائص المصفوفة:
| الخاصية | الوصف | |---|---| | `shape` | إرجاع شكل المصفوفة (عدد الصفوف والأعمدة). | | `ndim` | إرجاع عدد الأبعاد. | | `dtype` | إرجاع نوع البيانات المخزنة في المصفوفة. | | `size` | إرجاع العدد الإجمالي للعناصر في المصفوفة. |
مثال:
```python import numpy as np
my_array = np.array([[1, 2, 3], [4, 5, 6]]) print(my_array.shape) # Output: (2, 3) print(my_array.ndim) # Output: 2 print(my_array.dtype) # Output: int64 (أو نوع بيانات آخر حسب النظام) print(my_array.size) # Output: 6 ```
فهرسة وتقطيع المصفوفات
يمكن الوصول إلى عناصر المصفوفة باستخدام الفهرسة والتقطيع.
- الفهرسة:
```python import numpy as np
my_array = np.array([10, 20, 30, 40, 50]) print(my_array[0]) # Output: 10 (العنصر الأول) print(my_array[-1]) # Output: 50 (العنصر الأخير)
- في المصفوفات متعددة الأبعاد:
my_array_2d = np.array([[1, 2, 3], [4, 5, 6]]) print(my_array_2d[0, 1]) # Output: 2 (العنصر في الصف الأول والعمود الثاني) ```
- التقطيع:
```python import numpy as np
my_array = np.array([10, 20, 30, 40, 50]) print(my_array[1:4]) # Output: [20 30 40] (العناصر من الفهرس 1 إلى 3) print(my_array[:3]) # Output: [10 20 30] (العناصر من البداية إلى الفهرس 2) print(my_array[2:]) # Output: [30 40 50] (العناصر من الفهرس 2 إلى النهاية) print(my_array[::2]) # Output: [10 30 50] (كل عنصرين)
- في المصفوفات متعددة الأبعاد:
my_array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(my_array_2d[:2, 1:]) # Output: [[2 3] [5 6]] (الصفين الأول والثاني والعمودين الثاني والثالث) ```
العمليات الرياضية على المصفوفات
NumPy توفر مجموعة واسعة من العمليات الرياضية التي يمكن إجراؤها على المصفوفات.
- العمليات الحسابية الأساسية:
```python import numpy as np
a = np.array([1, 2, 3]) b = np.array([4, 5, 6])
print(a + b) # Output: [5 7 9] (الجمع) print(a - b) # Output: [-3 -3 -3] (الطرح) print(a * b) # Output: [ 4 10 18] (الضرب) print(a / b) # Output: [0.25 0.4 0.5 ] (القسمة) print(a ** 2) # Output: [1 4 9] (الأس) ```
- الدوال الرياضية:
```python import numpy as np
my_array = np.array([1, 4, 9, 16]) print(np.sqrt(my_array)) # Output: [1. 2. 3. 4.] (الجذر التربيعي) print(np.sin(my_array)) # Output: [ 0.84147098 -0.7568025 0.41078129 -0.28790332] (الجيب) print(np.exp(my_array)) # Output: [ 2.71828183 54.59815003 8103.08392758 8886110.52050787] (الأس الطبيعي) ```
- البث (Broadcasting):
```python import numpy as np
a = np.array([1, 2, 3]) b = 2
print(a + b) # Output: [3 4 5] (بث العدد 2 إلى مصفوفة [2, 2, 2] ثم الجمع) ```
إعادة تشكيل المصفوفات
يمكن تغيير شكل المصفوفة باستخدام الدالة `reshape()`.
```python import numpy as np
my_array = np.arange(12) print(my_array) # Output: [ 0 1 2 3 4 5 6 7 8 9 10 11]
reshaped_array = my_array.reshape(3, 4) # إعادة تشكيل إلى مصفوفة 3x4 print(reshaped_array)
- Output:
- [[ 0 1 2 3]
- [ 4 5 6 7]
- [ 8 9 10 11]]
```
NumPy والخيارات الثنائية والتداول
NumPy تلعب دورًا هامًا في تطوير استراتيجيات التداول في الخيارات الثنائية والأسواق المالية بشكل عام. بعض التطبيقات تشمل:
- تحليل البيانات التاريخية: يمكن استخدام NumPy لتحميل ومعالجة البيانات التاريخية للأسعار، وحساب المؤشرات الفنية مثل المتوسط المتحرك، مؤشر القوة النسبية (RSI)، والماكد (MACD).
- نمذجة المخاطر: يمكن استخدام NumPy لنمذجة المخاطر المرتبطة بالتداول، مثل حساب الانحراف المعياري، القيمة المعرضة للخطر (VaR)، واختبار مونت كارلو.
- تطوير استراتيجيات التداول الخوارزمية: يمكن استخدام NumPy لتطوير استراتيجيات تداول خوارزمية آلية، حيث يتم اتخاذ قرارات التداول بناءً على قواعد محددة مسبقًا. على سبيل المثال، استراتيجية كسر النطاق أو استراتيجية متابعة الاتجاه.
- تحليل حجم التداول: يمكن استخدام NumPy لتحليل حجم التداول وتحديد الأنماط التي قد تشير إلى فرص تداول.
- Backtesting: يمكن استخدام NumPy لاختبار أداء استراتيجيات التداول على البيانات التاريخية (Backtesting) لتقييم ربحيتها ومخاطرها. هذا يتضمن حساب نسبة شارب والحد الأقصى للتراجع.
- تحسين المحفظة: يمكن استخدام NumPy في عمليات تحسين المحفظة لتحديد التخصيص الأمثل للأصول بناءً على المخاطر والعائد المتوقع. يمكن أيضاً استخدام تقنيات مثل نظرية المحفظة الحديثة (MPT).
- استراتيجيات التداول القائمة على التعلم الآلي: NumPy هي أساس العديد من خوارزميات التعلم الآلي المستخدمة في التداول، مثل الشبكات العصبية وآلات متجه الدعم (SVM).
أمثلة عملية
- حساب المتوسط المتحرك البسيط (SMA):
```python import numpy as np
prices = np.array([10, 12, 15, 14, 16, 18, 20]) window_size = 3
- استخدام دالة convolution لحساب المتوسط المتحرك
sma = np.convolve(prices, np.ones(window_size), 'valid') / window_size print(sma) # Output: [12.33333333 13.66666667 15. 16. 18. ] ```
- حساب مؤشر القوة النسبية (RSI): (مثال مبسط)
```python import numpy as np
prices = np.array([10, 12, 15, 14, 16, 18, 20]) period = 14
- (هذا مثال مبسط، يتطلب حساب المكاسب والخسائر بشكل صحيح)
- في الواقع، تحتاج إلى حساب التغيرات في الأسعار ثم حساب متوسط المكاسب والخسائر
- ثم تطبيق الصيغة الكاملة لـ RSI.
rsi = 50 # قيمة افتراضية print(rsi) ```
موارد إضافية
- الموقع الرسمي لـ NumPy: [1](https://www.numpy.org/)
- وثائق NumPy: [2](https://numpy.org/doc/stable/)
- دروس NumPy: [3](https://numpy.org/learn/)
- استراتيجية مارتينجال في الخيارات الثنائية: استراتيجية مارتينجال
- استراتيجية فيبوناتشي في الخيارات الثنائية: استراتيجية فيبوناتشي
- تحليل الشموع اليابانية في الخيارات الثنائية: تحليل الشموع اليابانية
- استراتيجيات الخيارات الثنائية قصيرة الأجل: استراتيجيات الخيارات الثنائية قصيرة الأجل
- إدارة المخاطر في الخيارات الثنائية: إدارة المخاطر
- تحليل حجم التداول في الخيارات الثنائية: تحليل حجم التداول
- مؤشر بولينجر باندز في الخيارات الثنائية: مؤشر بولينجر باندز
- مؤشر ستوكاستيك في الخيارات الثنائية: مؤشر ستوكاستيك
- استراتيجية كسر الدعم والمقاومة: كسر الدعم والمقاومة
- استراتيجية التداول المتأرجح: التداول المتأرجح
- استراتيجية التداول اليومي: التداول اليومي
- استراتيجية سكالبينج: سكالبينج
- استراتيجية المتوسطات المتحركة المتقاطعة: المتوسطات المتحركة المتقاطعة
- استراتيجية القمة والقاع: القمة والقاع
- استراتيجية الاختراق: الاختراق
- استراتيجية الاتجاه: استراتيجية الاتجاه
- استراتيجية التصحيح: استراتيجية التصحيح
- استراتيجية التراجع: استراتيجية التراجع
- استراتيجية التجميع: استراتيجية التجميع
- استراتيجية التوزيع: استراتيجية التوزيع
- استراتيجية التحوط: استراتيجية التحوط
- استراتيجية المضاربة: استراتيجية المضاربة
- استراتيجية التداول العكسي: استراتيجية التداول العكسي
```
ابدأ التداول الآن
سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين