Skip to content
→ المدونة

دمج بيانات Kalshi وPolymarket في تدفّق عمل واحد عبر REST وMCP

dino.markets

أي تطبيق يتعامل مع Kalshi وPolymarket معًا سرعان ما يواجه معرّفات مختلفة لكل منصة، وتمثيلات مختلفة للنتائج، وشروط تسوية منفصلة يجب التحقق منها كل مرة. يوفّر dino.markets بيانات الأسواق المتطابقة عبر REST API وMCP معًا. يأخذك هذا الدليل من جلب لقطة عبر REST إلى استكشاف السطح نفسه من البيانات عبر عميل MCP.

هذا مقال تقني أُعدّ بتكليف من Nusantara Ventures LLC، الجهة المشغّلة لـ dino.markets. عامِل الأسعار والفوارق بوصفها بيانات رصدية، وتحقق بنفسك من رسوم كل منصة وشروط التسوية والتوفر قبل اتخاذ أي قرار تداول.

تحتاج إلى مفتاح API من dino.markets، وأداة curl، وبيئة تطوير تدعم MCP اختياريًا. أنشئ مفتاح API أولاً، ثم راجع خطوات المصادقة في الوثائق.

ابدأ بلقطة سوق عبر REST API

يجلب المثال التالي فرص المراجحة (Opportunity) المؤكَّدة في MLB. عودة نتيجة فارغة أمر طبيعي؛ فالاستجابة لا تضم إلا الفرص التي اجتازت في تلك اللحظة شرطي التنفيذ والتسوية معًا.

export DINO_API_KEY="sk_live_..."

curl -sS "https://api.dino.markets/v2/arbitrage?sport=baseball" \
  -H "Authorization: Bearer ${DINO_API_KEY}" | jq '{
    count,
    as_of,
    opportunities: [
      .opportunities[] | {
        id,
        market_id,
        title,
        category,
        market_type,
        sport,
        competition,
        tags,
        edge_pct,
        roi_pct,
        fees_included,
        fee_model,
        max_wager_usd,
        legs
      }
    ]
  }'

حقل id في الاستجابة هو معرّف الفرصة، ويُستخدم market_id للاطلاع على تفاصيل السوق. القيمتان edge_pct وroi_pct نموذج محافظ يتضمن رسوم المنصتين. يحسب fee_model: "conservative_per_contract" رسوم عقد واحد لكل رِجل (leg) ثم يوسّعها نسبيًا حتى الحجم القابل للتنفيذ، لذا قد يختلف عن التقريب الذي تطبّقه كل منصة على مستوى الكمية. أما max_wager_usd فهو تقدير رأس المال المطلوب لذلك، وتتضمن الاستجابة نفسها legs المختارة بدقة. الأسعار وعمق الدفتر وقواعد المنصات كلها قابلة للتغير، لذا لا تعامل اللقطة على أنها ضمان تنفيذ.

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

من كود التطبيق، الاستدعاء يذهب إلى نقطة النهاية نفسها.

const response = await fetch(
  "https://api.dino.markets/v2/arbitrage?sport=baseball",
  { headers: { Authorization: `Bearer ${process.env.DINO_API_KEY}` } },
);

if (!response.ok) throw new Error(`HTTP ${response.status}`);

const { count, as_of, opportunities } = await response.json();
console.log({ count, as_of, opportunities });

قبل التعامل مع سوق منفرد، استدعِ GET /v2/pairs/{market_id} باستخدام market_id الخاص بالفرصة، وتحقق من النتائج ومن settlement.risks. أما إذا كنت تبحث عن فارق السعر وحده فاستخدم GET /v2/spreads.

استخدم سطح البيانات نفسه عبر MCP

يتيح لك MCP استكشاف الأسواق والتحقق من تفاصيلها مباشرة من داخل محادثة عميل أو وكيل يدعمه. عنوان اتصال Streamable HTTP هو https://api.dino.markets/v2/mcp/، بما في ذلك الشرطة المائلة الأخيرة.

في العملاء التي تستدعي mcp-remote، أضِف ما يلي إلى الإعداد.

{
  "mcpServers": {
    "dino-markets": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://api.dino.markets/v2/mcp/",
        "--header",
        "Authorization:Bearer ${DINO_API_KEY}"
      ],
      "env": { "DINO_API_KEY": "sk_live_..." }
    }
  }
}

بعد حفظ الإعداد وإعادة تشغيل عميل MCP، يمكنك أولاً طلب مهمة تحقق من البيانات على هذا النحو.

ابحث عن MLB باستخدام find_markets، ثم استدعِ get_market بواسطة المعرّف الذي تجده. لخِّص نتائج كل سوق وحقل settlement.risks، ولا تفسّر السعر باعتباره قرار تداول.

يضم MCP العام ثماني أدوات: find_markets وfind_arbitrage وlist_markets وlist_categories وget_market وget_spreads وreport_bad_arb وwatch_markets. وهي متاحة في كل خطة نشطة. يختلف نطاق اشتراك WebSocket حسب الخطة: تحصل Free على قناتَي sample وstatus، بينما تحصل الخطط المدفوعة على markets:*.

حدود يجدر الاحتفاظ بها عند التطبيق

غرض المطابقة هو تمكينك من التحقق من الأسواق المرتبطة عبر تدفّق بيانات واحد. أما قواعد التسوية النهائية لكل سوق فتحدّدها المنصة نفسها. لا تكتفِ في تطبيقك بتخزين ما تُعيده الواجهة البرمجية؛ اعرض تفاصيل كل id، ووقت الجلب، ومخاطر التسوية معًا، فذلك يسهّل المراجعة لاحقًا.

يوثّق dino.markets الأسواق المرتبطة في الرياضة والطقس والعملات الرقمية والاقتصاد. اقتصر هذا المثال على مرشّح sport=baseball في الواجهة البرمجية العامة، ليكون مدخلاً سهل إعادة الإنتاج.

تجد نقاط النهاية والمصادقة ومرشّحات REST في الوثائق. لطرق الاتصال الخاصة بكل عميل MCP راجع وثائق MCP. المستودع العام لخادم MCP هو dino-markets-mcp.

المزيد من المدونة