DEV Community

Cover image for TradingAgents: إطار عمل تداول مفتوح المصدر يعتمد على نماذج اللغة الكبيرة
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

TradingAgents: إطار عمل تداول مفتوح المصدر يعتمد على نماذج اللغة الكبيرة

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

جرّب Apidog اليوم

في هذه المقالة سنركز على ما يمكنك تنفيذه: كيف يعمل TradingAgents، ما الذي أضافه الإصدار 0.2.4، كيف تشغله، وأين تستخدم Apidog لاختبار طبقات بيانات السوق وواجهات LLM قبل الاعتماد على أي مخرجات. إذا كنت تعمل على توثيق عقود الوكلاء، فراجع أيضًا دليل agents.md لفرق API.

ملخص سريع

  • TradingAgents إطار تداول متعدد الوكلاء مبني على LLM من Tauric Research، مرتبط بـ arXiv 2412.20138، ومتوفر كمصدر مفتوح.
  • يقسم سير عمل التداول إلى وكلاء متخصصين: محلل أساسيات، محلل مشاعر، محلل أخبار، محلل فني، باحث ثيران، باحث دببة، تاجر، ولجنة إدارة مخاطر.
  • الإصدار 0.2.4 أضاف مخرجات منظمة، استئنافًا من نقاط تفتيش LangGraph، سجل قرارات دائم، ودعم مزودين مثل DeepSeek وQwen وGLM وAzure OpenAI.
  • يمكن تشغيله مع أي نقطة نهاية LLM متوافقة مع OpenAI، سواء كانت مستضافة أو محلية أو ذاتية الاستضافة.
  • استخدم Apidog لمحاكاة واجهات بيانات السوق، إعادة تشغيل طلبات LLM، واختبار شكل المخرجات والتكلفة.
  • يمكنك تحميل Apidog لإدخال هذه الاختبارات في CI قبل ربط أي وكيل بأموال حقيقية.

ما هو TradingAgents فعليًا؟

TradingAgents حزمة Python وواجهة CLI تفكك قرار التداول إلى مراحل قابلة للاختبار:

  1. جمع البيانات.
  2. تحليل مستقل بواسطة وكلاء متخصصين.
  3. نقاش بين وجهتي نظر صاعدة وهابطة.
  4. توليد توصية.
  5. مراجعة المخاطر.
  6. تسجيل القرار النهائي.

كل وكيل لديه:

  • وصف دور واضح.
  • أدوات محددة.
  • مدخلات ومخرجات داخل رسم LangGraph.
  • مسؤولية واحدة داخل السلسلة.

المستودع يصف المشروع ككود بحثي، وليس نصيحة استثمارية. لذلك تعامل معه كإطار لدراسة أنماط الوكلاء المتعددين، وليس كبوت تداول جاهز للإنتاج.

النقطة الهندسية المهمة هي فصل المسؤوليات. محلل الأساسيات يقرأ البيانات المالية، محلل المشاعر يركز على إشارات التواصل الاجتماعي، محلل الأخبار يتابع السياق الاقتصادي، والمحلل الفني يحسب مؤشرات مثل MACD وRSI. بعد ذلك يبني باحث الثيران حجة شراء، وباحث الدببة حجة بيع، ثم يجمع التاجر والمديرون هذه المخرجات في قرار.

هذا النمط قابل لإعادة الاستخدام خارج التداول: متخصصون، نقاش، توليف، تحقق، وسجل دائم.

ما الذي أضافه الإصدار 0.2.4؟

الإصدار 0.2.4 مهم إذا كنت تفكر في تشغيلات قابلة للتكرار أو شبه إنتاجية.

1. مخرجات منظمة

أصبح مدير الأبحاث، والتاجر، ومدير المحفظة قادرين على إصدار مخرجات منظمة عبر OpenAI Responses API أو قناة tool use في Anthropic.

بدلًا من تحليل نص حر مثل:

I recommend buying AAPL because...
Enter fullscreen mode Exit fullscreen mode

يمكنك الاعتماد على JSON منظم، مثل:

{
  "ticker": "AAPL",
  "action": "buy",
  "confidence": 0.72,
  "rationale": "Strong fundamentals and positive sentiment",
  "risk_notes": ["valuation risk", "macro uncertainty"]
}
Enter fullscreen mode Exit fullscreen mode

هذا يجعل ربط الإطار بأنظمة لاحقة أسهل: قواعد تحقق، سجلات، لوحات متابعة، أو اختبارات regression.

2. استئناف من نقاط تفتيش LangGraph

التشغيلات الطويلة قد تفشل بسبب:

  • حد معدل من مزود بيانات السوق.
  • استجابة 429 من مزود LLM.
  • انقطاع شبكة.
  • توقف عملية محلية.

مع checkpointing في LangGraph، يمكن للتشغيل أن يستأنف من نقطة محفوظة بدل البدء من الصفر.

3. سجل قرارات دائم

يسجل TradingAgents القرارات في SQLite مع:

  • المدخلات.
  • التفكير أو التبرير.
  • الطوابع الزمنية.
  • القرار النهائي.

هذا السجل مهم عند مقارنة المزودين أو إعادة تقييم قرارات سابقة.

4. دعم مزودين متعددين

أضاف الإصدار دعمًا لمزودين مثل DeepSeek وQwen وGLM وAzure OpenAI إلى جانب OpenAI وAnthropic وGemini وGrok.

إذا أردت اختبار التكلفة، يمكنك استخدام DeepSeek V4 عبر نقطة نهاية متوافقة مع OpenAI. وإذا احتجت سياقًا أطول أو قدرات رؤية، يمكنك التبديل إلى Gemini حسب احتياجك.

5. Docker وإصلاحات Windows UTF-8

الإطار يتضمن Dockerfile، كما أزال مشكلة ترميز مسارات Windows التي ظهرت في الإصدار 0.2.3. هذه تفاصيل صغيرة لكنها مهمة عند تشغيل المشروع داخل CI أو بيئات متعددة المطورين.

هندسة الوكلاء خطوة بخطوة

تشغيل TradingAgents الكامل يمر عادة بهذا التسلسل:

  1. تمرر CLI رمز السهم والتاريخ أو النطاق الزمني.
  2. ينطلق فريق المحللين:
    • محلل الأساسيات.
    • محلل المشاعر.
    • محلل الأخبار.
    • المحلل الفني.
  3. يكتب كل محلل تقريرًا مستقلًا.
  4. يستلم باحث الثيران وباحث الدببة التقارير.
  5. يبني كل طرف أطروحته.
  6. يحدث نقاش بين الطرفين.
  7. يلخص مدير الأبحاث النقاش في توصية.
  8. يقرأ التاجر التوصية وسجل القرارات.
  9. ينتج التاجر خطة تداول.
  10. تراجع لجنة المخاطر الخطة من زوايا مختلفة: عدوانية، محافظة، ومحايدة.
  11. يوافق مدير المحفظة أو يعيد الخطة للمراجعة.
  12. يسجل القرار النهائي في SQLite.

أغلب تكلفة LLM تظهر في مرحلتي النقاش والمخاطر، لأن أكثر من وكيل يقرأ ويجادل ويعيد الصياغة. لذلك لا تختبر النموذج فقط على استدعاء واحد. اختبره على تشغيل كامل يحتوي على جولتين نقاش على الأقل.

لماذا تحتاج إلى اختبار طبقة LLM وبيانات السوق؟

عند تشغيل TradingAgents ستواجه طبقتين قابلتين للكسر:

  1. واجهات بيانات السوق مثل Yahoo Finance وFinnHub وPolygon وOpenBB.
  2. واجهات مزودي LLM مثل OpenAI وAnthropic وDeepSeek.

مشاكل بيانات السوق تشمل:

  • حدود معدل غير متسقة.
  • حقول تظهر وتختفي.
  • اختلاف أسماء الحقول بين المزودين.
  • اختلاف تعريف يوم التداول.
  • استجابات ناقصة في عطلات أو بعد الإغلاق.

مثال شائع: حقل مثل regularMarketTime قد يتغير إلى regular_market_time، فيتعطل محلل يعتمد على الاسم القديم.

مشاكل LLM مختلفة:

  • وضع التفكير قد يضاعف التكلفة.
  • بعض المزودين يعيدون tool calls بشكل مختلف.
  • JSON المنظم قد ينكسر عند تغيير النموذج.
  • نفس prompt قد يعطي سلوكًا مختلفًا بين مزودين.

الحل العملي: خزّن طلبات نموذجية، أعد تشغيلها، وأضف assertions على الشكل والتكلفة. هذا ما يمكن تنفيذه باستخدام Apidog. لنفس نمط الاختبار على مستوى البروتوكول، راجع دليل اختبار خوادم MCP.

محاكاة واجهات بيانات السوق في Apidog

استخدم هذا المسار لجعل اختبارات TradingAgents حتمية بدل الاعتماد على مزودين حيين.

الخطوة 1: عرّف نقاط النهاية

في مشروع Apidog، أضف نقاط النهاية التي يستخدمها TradingAgents، مثل:

  • Yahoo Finance quote endpoint.
  • FinnHub company profile.
  • Polygon aggregates.
  • OpenBB endpoints.

احفظ لكل نقطة نهاية:

  • المسار.
  • query params.
  • headers المطلوبة.
  • مثال response حقيقي.
  • حالات خطأ مثل 429 أو 500 أو response ناقص.

مثال response مختصر:

{
  "symbol": "AAPL",
  "regularMarketPrice": 189.98,
  "regularMarketTime": 1777564800,
  "currency": "USD"
}
Enter fullscreen mode Exit fullscreen mode

الخطوة 2: شغّل Mock Server

بعد حفظ الأمثلة، شغّل mock server في Apidog ووجّه إعدادات TradingAgents إلى عنوانه بدل عنوان المزود الحقيقي.

الفكرة:

export MARKET_DATA_BASE_URL="https://mock.example.apidog.io"
Enter fullscreen mode Exit fullscreen mode

بهذا يصبح محلل الأساسيات أو الفني يعمل على بيانات ثابتة، ولن تفشل الاختبارات بسبب حد معدل Yahoo أو تغيّر مؤقت في مزود خارجي.

الخطوة 3: اختبر انحراف شكل البيانات

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

مثال assertion مهم:

$.regularMarketTime exists
$.regularMarketPrice is number
$.currency == "USD"
Enter fullscreen mode Exit fullscreen mode

هذا هو نفس نمط تطوير API المبني على العقد أولًا: اكتب العقد، اختبره، ثم اسمح للكود بالاعتماد عليه.

اختبار طبقة مزود LLM

قبل تشغيل TradingAgents على عشرات الرموز، اختبر ثلاثة أشياء.

1. التكلفة لكل دور

شغّل سهمًا واحدًا واحفظ عدد الرموز لكل وكيل في سجل طلبات Apidog.

راقب خصوصًا:

  • محلل الأخبار.
  • نقاش الثيران/الدببة.
  • لجنة المخاطر.
  • مدير المحفظة.

إذا كان نقاش الثيران/الدببة أرخص بكثير من المتوقع، فقد يكون النموذج يختصر التفكير أو يتجاهل التعليمات.

2. شكل المخرجات المنظمة

أضف assertions على JSON للوكلاء الذين يعيدون مخرجات منظمة.

مثال:

{
  "action": "buy",
  "confidence": 0.76,
  "risk_level": "medium",
  "summary": "..."
}
Enter fullscreen mode Exit fullscreen mode

Assertions مقترحة:

$.action in ["buy", "sell", "hold"]
$.confidence is number
$.confidence >= 0
$.confidence <= 1
$.risk_level exists
$.summary is string
Enter fullscreen mode Exit fullscreen mode

أي كسر هنا قد لا يظهر فورًا، لكنه سيعطل الكود اللاحق أو يلوث سجل القرارات.

3. تكافؤ المزودين

عند الانتقال من OpenAI إلى DeepSeek V4 مثلًا، لا تتوقع تطابقًا حرفيًا في القرارات. المطلوب هو تقارب السلوك على مجموعة تشغيلات.

خطة اختبار بسيطة:

  1. اختر 50 رمزًا.
  2. شغّلها على OpenAI.
  3. شغّلها على DeepSeek V4.
  4. قارن سجل القرارات.
  5. احسب:
    • نسبة اتفاق buy/sell/hold.
    • متوسط الثقة.
    • عدد الحالات التي تغير فيها القرار جذريًا.
    • تكلفة كل مزود.

راجع دليل DeepSeek V4 API لشكل الطلب، ودليل GPT-5.5 API لجانب OpenAI.

تشغيل TradingAgents محليًا

مثال تشغيل أولي:

git clone https://github.com/TauricResearch/TradingAgents
cd TradingAgents
pip install -r requirements.txt

export OPENAI_API_KEY="sk-..."
export FINNHUB_API_KEY="..."

python -m tradingagents.cli \
  --ticker AAPL \
  --date 2026-04-30 \
  --models gpt-5.5 \
  --rounds 2
Enter fullscreen mode Exit fullscreen mode

جولتان من النقاش عادة أقل تشغيل مفيد لفهم سلوك النظام. المخرجات تظهر في:

tradingagents/results/
Enter fullscreen mode Exit fullscreen mode

وتتضمن عادة JSON وملخص قرار بصيغة Markdown.

التبديل إلى DeepSeek أو مزود آخر

إذا أردت اختبار DeepSeek V4 Pro للأدوار التي تحتاج استدلالًا أقوى:

export DEEPSEEK_API_KEY="sk-..."

python -m tradingagents.cli \
  --ticker AAPL \
  --date 2026-04-30 \
  --models deepseek-v4-pro \
  --provider deepseek \
  --rounds 2
Enter fullscreen mode Exit fullscreen mode

ينطبق نفس النمط على Qwen وGLM أو النماذج المحلية المقدمة عبر Ollama أو vLLM إذا كانت توفر نقطة نهاية متوافقة مع OpenAI.

للاختيار بين النماذج المحلية، راجع مقالة أفضل نماذج LLM المحلية لعام 2026.

تشغيله داخل Docker

إذا أردت عزل البيئة:

docker build -t tradingagents .
docker run --rm \
  -e OPENAI_API_KEY="$OPENAI_API_KEY" \
  -e FINNHUB_API_KEY="$FINNHUB_API_KEY" \
  tradingagents \
  python -m tradingagents.cli \
    --ticker AAPL \
    --date 2026-04-30 \
    --models gpt-5.5 \
    --rounds 2
Enter fullscreen mode Exit fullscreen mode

هذا مفيد عند تشغيله داخل CI أو عند مقارنة نتائج بين أكثر من مطور.

قائمة تحقق قبل أي تشغيل واسع

قبل تشغيل 50 أو 100 رمز، تحقق من التالي:

  • [ ] هل بيانات السوق تمر عبر mock server في الاختبارات؟
  • [ ] هل لديك fixtures محفوظة لكل endpoint؟
  • [ ] هل سجلت عدد الرموز والتكلفة لكل وكيل؟
  • [ ] هل مخرجات JSON عليها assertions؟
  • [ ] هل checkpointing مفعل للتشغيلات الطويلة؟
  • [ ] هل سجل SQLite محفوظ ومؤرشف؟
  • [ ] هل قارنت مزودين على عينة صغيرة أولًا؟
  • [ ] هل لديك حد أقصى للتكلفة لكل تشغيل؟

المزالق الشائعة

استخدام نموذج صغير جدًا

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

تخطي التخزين المؤقت لبيانات السوق

كل محلل قد يستدعي طبقة البيانات بشكل منفصل. بدون caching، ستستهلك حدود المعدل بسرعة. فعّل التخزين المؤقت، خصوصًا في التشغيلات المتكررة.

التعامل معه كبوت تداول جاهز

TradingAgents كود بحثي. نتائج الاختبار الخلفي قد تتغير حسب:

  • النموذج.
  • prompt seed.
  • عدد جولات النقاش.
  • جودة البيانات.
  • تاريخ التشغيل.

تعامل مع القرار كفرضية قابلة للفحص، لا كإشارة تداول مباشرة.

عدم تسجيل تكلفة الرموز

تشغيل واحد قد يكلف قليلًا أو كثيرًا حسب النموذج والجولات. سجل التكلفة في Apidog أو في نظام مراقبة داخلي. حلقة نقاش غير مضبوطة قد تستهلك ميزانية بسرعة.

تثبيت مزود واحد في الكود

بما أن TradingAgents يدعم مزودين متعددين، لا تربط المنطق بمزود واحد. اجعل المزود قابلًا للتبديل عبر config، ثم قارن النتائج قبل النقل إلى بيئة أكثر جدية.

أين يدخل Apidog في دورة التطوير؟

هناك ثلاثة استخدامات عملية لـ Apidog مع TradingAgents.

1. تصميم عقود بيانات السوق

قبل ربط الإطار بمزود حي، عرّف كل endpoint في Apidog. هذا يجبرك على معرفة الحقول المطلوبة فعليًا.

قد تكتشف أنك تدفع لخطة بيانات لا تستخدم منها إلا endpoint واحدًا أو حقلين.

2. اختبارات محلية وCI

استبدل مزودي السوق بـ mock server أثناء اختبارات الوحدة. النتيجة:

  • اختبارات أسرع.
  • لا اعتماد على ساعات السوق.
  • لا فشل بسبب rate limit.
  • بيانات حتمية قابلة للتكرار.

نفس النمط مشروح في اختبار API بدون Postman.

3. مقارنة التراجعات

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

لماذا يهم هذا خارج التداول؟

TradingAgents مثال واضح على تفكيك سير عمل معقد إلى وكلاء متخصصين. يمكنك نقل النمط إلى:

  • دعم العملاء: وكلاء حسب نوع التذكرة، ثم نقاش، ثم قرار.
  • مراجعة الكود: أمان، أداء، أسلوب، ثم ملخص موحد.
  • الامتثال: محللو بيانات، مراجعة مخاطر، لجنة قرار.
  • تلخيص الأبحاث: قراء متخصصون، نقاش، ثم توليف.
  • فرز الحوادث: وكيل logs، وكيل metrics، وكيل traces، ثم توصية.

الأنماط القابلة لإعادة الاستخدام هي:

  • أدوار صغيرة وواضحة.
  • أدوات محددة لكل دور.
  • مرحلة نقاش أو مراجعة.
  • مخرجات منظمة.
  • سجل قرارات دائم.
  • اختبارات API حول كل طبقة خارجية.

حالات استخدام واقعية

  • طالب أبحاث كمية يشغل TradingAgents لمقارنة DeepSeek V4 وGPT-5.5 وClaude 4.5 على سلة من 30 رمزًا، ويسجل الطلبات والاستجابات في Apidog لجعل التجربة قابلة للتكرار.
  • مهندس Fintech يستخدم النمط متعدد الوكلاء لمراجعة كود داخلي: وكيل أمان، وكيل أداء، وكيل تسمية، ثم وكيل يكتب تعليق Pull Request.
  • مطور فردي يشغل TradingAgents ليلًا على قائمة مراقبة من 10 رموز، ويحفظ القرارات في Postgres، بينما يستخدم mock server من Apidog لاختبارات نهاية الأسبوع.

الخاتمة

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

لكن القيمة الحقيقية تظهر فقط إذا اختبرت الطبقات الخارجية: بيانات السوق وواجهات LLM. هنا يفيد ربطه بـ Apidog: محاكاة، إعادة تشغيل، assertions، ومقارنة تراجعات.

خمس نقاط عملية:

  • افصل الأدوار بوضوح كما يفعل TradingAgents.
  • لا تشغّل نقاشًا متعدد الوكلاء بدون تسجيل التكلفة.
  • حاكي بيانات السوق قبل إدخال مزودين حيين في الاختبارات.
  • اختبر JSON المنظم بـ assertions.
  • قارن المزودين على عينة قبل تبديلهم في تشغيلات واسعة.

الخطوة التالية: استنسخ المستودع، شغّل سهمًا واحدًا، ثم وجّه استدعاءات بيانات السوق عبر mock server في Apidog. خلال ساعة ستعرف إن كان النمط مناسبًا لسير عملك.

الأسئلة الشائعة

هل TradingAgents آمن للاستخدام بأموال حقيقية؟

المستودع يوضح أنه كود بحثي وليس نصيحة مالية. تعامل مع المخرجات كفرضيات تحتاج تحققًا، وليس كأوامر تداول مباشرة.

أي مزود LLM يقدم أفضل توازن بين التكلفة والجودة؟

يعتمد ذلك على عبء العمل وعدد الجولات وجودة الاستدلال المطلوبة. اختبر OpenAI وDeepSeek وAnthropic على نفس الرموز، ثم قارن التكلفة والقرارات. راجع دليل DeepSeek V4 API لشكل الطلب.

هل يمكن تشغيل TradingAgents على نماذج محلية؟

نعم، إذا كان النموذج مقدمًا عبر نقطة نهاية متوافقة مع OpenAI مثل Ollama أو vLLM أو LM Studio. راجع أفضل نماذج LLM المحلية لعام 2026 لاختيار نموذج مناسب.

كيف أحاكي واجهات بيانات السوق؟

عرّف كل endpoint في Apidog، احفظ أمثلة response، شغّل mock server، ثم وجّه TradingAgents إلى عنوان المحاكاة. نمط مشابه موثق في أدوات اختبار API لمهندسي ضمان الجودة.

ما الحد الأدنى للأجهزة؟

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

هل يدعم التشغيل بعد ساعات السوق أو في عطلات نهاية الأسبوع؟

يمكن تشغيل الإطار على بيانات تاريخية لأي تاريخ تختاره إذا وفر مزود البيانات تلك البيانات. التداول الحي بعد ساعات السوق موضوع مختلف ولا يحله الإطار مباشرة.

كيف يقارن مع CrewAI أو AutoGen أو LangGraph؟

TradingAgents مخصص لمجال التداول ويستخدم نمطًا واضحًا للأدوار والنقاش واتخاذ القرار. CrewAI وAutoGen وLangGraph أطر عامة. إذا أردت دراسة تطبيق عملي متعدد الوكلاء، اقرأ TradingAgents. إذا أردت بناء نظام عام من الصفر، ابدأ بطبقة LangGraph أو إطار عام مشابه.

Top comments (0)