أي اختبار تاريخي أو مؤشّر أو نموذج يحتاج تاريخاً. للسوق السعودي بضع طرق حقيقية للحصول عليه، والاختيار الأنسب يعتمد على ما تفعله. هذه النسخة الصادقة — لا مصدر واحد يفوز في كل مهمة.
خياراتك
| المصدر | الأفضل لـ | انتبه إلى |
|---|---|---|
| واجهة بيانات مرخَّصة (مثل سهمك) | تطبيقات إنتاجية تحتاج بيانات تاسي خاماً قابلة لإعادة النشر + قوائم مالية | باقات مدفوعة؛ تبني طبقة التخزين/الاختبار بنفسك |
| yfinance | استكشاف سريع مجاني في دفتر (2222.SR) | مؤخَّرة، وثغرات تغطية/جودة على بعض أسهم تاسي، وغير رسمية |
| مجموعات Kaggle | دراسة لمرة واحدة على نافذة ثابتة | لقطات ثابتة تتقادم؛ بلا تحديث لحظي |
حزمة tasi لـ R | مستخدمو R الراغبون بالأسعار + القوائم المالية | بيئة R، ليست بايثون |
| تاسي لاب | الاختبار التاريخي والتداول الورقي في بيئة واحدة — بيانات وأوامر وتجارب معاً | مؤخَّرة 15 دقيقة مجاناً؛ بيئة اختبار لا مزوّد بيانات خام |
إن احتجت بيانات خاماً لإعادة نشرها داخل منتجك، فمزوّد مرخَّص هو الأداة الصحيحة. وإن أردت اختبار الاستراتيجيات على هذا السوق — بيانات وأوامر محاكاة ونتائج مُسجّلة في مكان واحد — فهذا ما وُجدت له تاسي لاب.
البيانات التاريخية عبر تاسي لاب
احصل على مفتاح مجاني، ثم اجلب نطاقاً زمنياً وأدخِله مباشرة إلى pandas:
import os
import pandas as pd
from tasilab import Tasilab
tasi = Tasilab(api_key=os.environ["TASILAB_API_KEY"])
data = tasi.get_historical("2222", "2024-01-01", "2025-12-31") # Saudi Aramco
df = pd.DataFrame(data["bars"])
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date")
print(df[["open", "high", "low", "close", "volume"]].tail())
كل شمعة تحمل symbol وdate وopen وhigh وlow وclose وadj_close وvolume — بيانات OHLCV قياسية، جاهزة للمؤشرات أو إعادة التجميع أو الرسم. البيانات نفسها على بُعد GET واحد عبر HTTP:
curl "https://api.tasilab.com/v1/historical/2222?start=2024-01-01&end=2025-12-31" \
-H "X-API-Key: $TASILAB_API_KEY"
adj_close حين تحتاج عوائد تراعي التجزئة والتوزيعات؛ واستخدم close للسعر المتداول الخام. الخلط بينهما سبب كلاسيكي لأرقام اختبار خاطئة.