التحكيم في التشفير باستخدام NetworkX و Python PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

التحكيم في التشفير باستخدام NetworkX و Python

تحليل بيانات التشفير من واجهة برمجة تطبيقات Coingecko لإنشاء ماسح ضوئي لتراجيح العملات المشفرة في لغة بايثون

مكلاين مارشال

شارك في التأليف مع إسحاق ريا

تصوير ألينا جروبنياك on Unsplash

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

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

معهد تمويل الشركات

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

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

لإنشاء رسم بياني للعملات المشفرة، سنستفيد من حزمة NetworkX. هذه أداة قوية تجعل من السهل تحليل العملات التي نهتم بها وإيجاد فرص التداول. أولاً، سوف نحصل على أسعار صرف العملات المشفرة من واجهة برمجة تطبيقات CoinGecko. بعد ذلك، سنقوم بتهيئة الرسم البياني وتحديد العلاقات (أسعار الصرف) بين كل عملة من العملات التي نهتم بها. وأخيرًا، سنقوم بتكرار جميع المسارات من عملة إلى أخرى والعودة لتحديد فرص المراجحة.

إذا كانت لديك خبرة في استخدام واجهات برمجة تطبيقات JSON، فإن CoinGecko واجهة برمجة التطبيقات (API) سهلة الاستخدام نسبيًا. باستخدام مقتطف التعليمات البرمجية هذا، قمت بسحب أسعار الصرف الحالية لخمس عملات مختلفة (بيتكوين، وبيتكوين كاش، وإيثريوم، ولايتكوين، وإيوس).

سيبدو عنوان URL لاستدعاء واجهة برمجة التطبيقات (API) على النحو التالي، اعتمادًا على العملات المعدنية التي ترغب في سحب البيانات الخاصة بها:

https://api.coingecko.com/api/v3/simple/price?ids=bitcoin-cash,ethereum,bitcoin,litecoin,eos&vs_currencies=bch,eth,btc,ltc,eos

باستخدام حزمتي Request وJSON لـ Python، يمكننا تحميل هذه البيانات كقاموس يحتوي على مفاتيح لكل عملة مشفرة قمنا بإدراجها في قائمتنا. القيمة المرتبطة بكل مفتاح من هذه المفاتيح هي قاموس آخر يحتوي على إدخالات لأسعار الصرف لزوج العملات هذا. على سبيل المثال، بالنسبة للبيتكوين كاش نحصل على النتيجة التالية:

يوضح هذا أنه يمكن شراء 0.25 إيثريوم أو 0.16 بيتكوين باستخدام 1 بيتكوين كاش. مع هذه النتائج لكل من العملات المشفرة، نحن مستعدون لتحديد الرسم البياني.

تمثل كل عملة "قمة" في الرسم البياني وسعر الصرف بين عملتين يمثل "حافة". بعد تهيئة كائن رسم بياني فارغ، نحدد قائمة من الصفوف لكل زوج من العملات المعدنية وسعر صرفها في كلا الاتجاهين.

ستبدو قائمة الحواف كما يلي:

مع إضافة الحواف إلى الرسم البياني، نحن على استعداد للبحث عن فرص المراجحة. باستخدام وظيفة المجموعات من حزمة itertools، نحدد جميع أزواج العملات المحتملة. بعد ذلك، نستخدم وظيفة all_simple_paths من NetworkX لتحديد كافة المسارات المحتملة من العملة الأولى إلى الثانية.

على سبيل المثال، إذا كنا ننظر إلى Litecoin وBitcoin Cash، فهناك العديد من المسارات المحتملة بالنظر إلى العملات التي نفكر فيها. يمكننا ببساطة شراء Bitcoin Cash باستخدام Litecoin أو يمكننا شراء Bitcoin باستخدام Litecoin ثم استخدام Bitcoin لشراء Bitcoin Cash.

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

على سبيل المثال، إذا بدأنا ببيتكوين كاش واحد يمكننا شراء 0.24 إيثريوم، لذلك نضرب 1 × 0.24197529 = 0.24197529. سعر الصرف من الإيثريوم إلى البيتكوين هو 0.06 لذا نضرب 0.24197529 × 0.06484324 = 0.0156904618035396. هذه القيمة قريبة جدًا من سعر الصرف بين Bitcoin Cash و Bitcoin ولكنها ليست متماثلة تمامًا.

في هذه المرحلة، نتحقق من عكس المسار، أي من Bitcoin إلى Ethereum إلى Bitcoin Cash عن طريق ضرب 1 × 15.414849 × 4.132739 = 63.705547641411. نقوم بضرب هاتين النتيجتين معًا لتقييمنا النهائي للمسار (0.0156904618035396 × 63.705547641411 = 0.9995694619411315). على حد علمي، لا يوجد مصطلح محدد لهذه القيمة. يمكننا أن نسميه عامل التحكيم.

إذا كانت أسعار الصرف متزامنة، لكان عامل المراجحة واحدًا بالضبط. تشير القيمة الأقل من واحد إلى أننا مررنا بسلسلة التبادلات وانتهينا بأقل مما بدأنا به. لذلك، نحن نبحث عن أن تكون هذه القيمة أكبر من واحد لأن إجراء التبادلات سيؤدي إلى الربح. إذا وجدنا أن عامل المراجحة هو 1.005 في مثالنا السابق، فإن هذا قد يشير إلى أنه باتباع مسار التبادلات من عملة مشفرة إلى أخرى والعودة، كان من الممكن أن نحصل على 0.005 بيتكوين كاش (بقيمة حوالي 3 دولارات).

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

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

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

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

المزيد من المحتوى في عادي

المصدر: https://python.plainenglish.io/crypto-arbitrage-with-networkx-and-python-638166e5a947?source=rss——-8—————–cryptocurrency

الطابع الزمني:

اكثر من متوسط

البداية

عقدة المصدر: 1081983
الطابع الزمني: سبتمبر 19، 2021