هذه الموجة من السوق ليلة البارحة كانت في الوقت المناسب، لم يكن هناك اتجاه سلس كهذا منذ فترة طويلة.

سأتحدث هذه المرة عن كيفية استخدام سجلات التداول التاريخية الفردية من Binance.

لقد شاركت Binance الرسمية العديد من بيانات التداول. هناك صفحة على GitHub يمكنك من خلالها الاطلاع بالتفصيل على أنواع البيانات المتاحة وكيفية تنزيلها. سأقوم هنا بتقديم معلومات حول تنزيل وتنظيم واستخدام سجلات التداول المجمع (aggTrades).

aggTrades هي سجلات التداول الفردية المجمعة، حيث تجمع Binance عدة تداولات تمت في نفس الوقت، بنفس الاتجاه، وبنفس السعر في سجل واحد، مشابه لخط k، لكن بسعر واحد فقط، دون الأسعار العليا والدنيا وما إلى ذلك. على سبيل المثال، إذا كان هناك أمر كبير معلق في السوق، والعديد من الطلبات الصغيرة تأخذه، فإن هذه الطلبات التي تصل في وقت قصير جداً (بدقة مللي ثانية) ستُجمع معًا. أو ربما تكون هي الطلبات التي يمكن لمحرك المطابقة التعامل معها مرة واحدة.

فائدة بيانات aggTrades هي أنه يمكن الحصول على سجلات تداول بدقة مللي ثانية، ولكنها ليست بحجم بيانات التداولات الفردية النقية (وهي البيانات الأصلية، التي لا تُجمع على نفس السعر) وهي حل وسط جيد للبيانات عالية التردد.

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

يمكن استخدام بيانات aggTrades لتكوين أي مستوى من k-lines القصيرة، مثل 5، 10، 15 ثانية، مثل هذه k-lines يمكن أن تُستخدم في بعض استراتيجيات التداول داخل اليوم.

على سبيل المثال، أدناه هو k-line بمستوى 1 ثانية الذي تم لصقه سابقاً.

图片

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

يمكن أيضاً استخدام هذه البيانات الفردية لتكوين خطوط k بديلة، مثل bar متساوي الكمية وما إلى ذلك، استخدام aggTrades لتكوينها يكون أكثر دقة بكثير مقارنة بخطوط k بالدقائق، وقد تكون الاستراتيجيات الناتجة عن ذلك مكملة لاستراتيجيات خطوط k العادية. قد أكتب في المقالات القادمة كيف يتم تكوين هذا النوع من bars.

إليك مقدمة الكود (معظم الكود موجود في المرفق، لأنه طويل جداً، لذا لن أقوم بلصقه في النص). كود التنزيل هو مثال من Binance، ولكن مع بعض التعديلات، بالإضافة إلى كود المعالجة والتنظيم الخاص بي.

هنا مثال على البيانات الشهرية (تقدم Binance أيضاً بيانات يومية). الكود يعمل في خيط واحد، ويُنفذ بشكل متزامن، دون استخدام أسلوب غير متزامن أو متعدد الخيوط. لأن هذا النوع من التنزيل يتم مرة واحدة في الشهر أو كل n يوم، يمكنك الانتظار قليلاً، فلا داعي لجعله معقداً.

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

ومع ذلك، لدي أيضاً كود لتنزيل البيانات الفورية، وهو تنزيل بيانات aggTrades لليوم الحالي، للتحقق الفوري من الأسواق التي فاتتك. بيانات Binance اليومية تكون متأخرة لبضعة أيام.

أولاً، تنزيل

الجزء الأول من الكود هو agg.py و utility.py ملفين، ثم استخدام

python3 agg.py -y 2022 -m 6 -t um -folder /مسارك المحدد

هنا مثال على أمر لتنزيل جميع بيانات aggTrades لعقود perpetual لشهر يونيو 2022. عادة، يمكن أن يتم التحميل في حوالي عشر دقائق.

ثانياً، فك الضغط

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

بعد فك ضغط ملف zip، يصبح لديك ملف csv. المشكلة مع ملفات csv هي أنها تشغل مساحة على القرص الصلب، وأيضاً سرعة التحميل تكون بطيئة نسبياً. لذلك، الخطوة التالية هي تحويل ملف csv إلى ملف pickle. يمكنك الضغط أو عدم الضغط حسب ظروفك. إذا كان لديك قرص صلب كبير، يُفضل عدم الضغط، لأن البيانات الدائمة عادة ما تكون حوالي 50 جيجابايت في الشهر، لذا يجب عليك النظر في ظروفك. عادةً ما يمكنك شراء قرص SSD خارجي أسرع، الآن 1TB يكلف بضع مئات فقط، وهو سعر زهيد جداً، والتحميل أثناء الاختبار يكون سريعاً.

ثالثاً، الضغط إلى pickle

الكود الخاص بالتحويل موجود في csv_to_pkl.py. كما ذكر أعلاه، من الأسهل حفظ واستخدام البيانات بعد التحويل.

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

لا تشغل ملفات csv مساحة فقط، بل تحميلها أيضاً بطيء. يُفضل استخدام تنسيق pickle. بشكل عام، أداؤه جيد، والمفتاح هو التوافق الجيد. إذا كنت ستستخدم خادم سحابي، أو العديد من الحزم مفتوحة المصدر الأخرى، فهو أكثر توافقاً من feather وما إلى ذلك.

حسناً، في هذه المرحلة، تكون البيانات جاهزة، ويمكنك البدء في دراسة الاستراتيجيات.

رابعاً، تنزيل البيانات الفورية

كما ذكرت سابقاً، فإن بيانات Binance على خادم البيانات متأخرة بيوم أو يومين. إذا كنت بحاجة إلى التحقق من كيف ستؤدي استراتيجيتك في السوق الحالية، ولكنك لم تتداول في أحد العملات في الوقت المناسب، يمكنك استخدام الكود أدناه لتنزيل بيانات aggTrades من تاريخ محدد. عادةً ما أستخدمه لتنزيل بيانات الـ 12 ساعة الحالية، لرؤية كيف يمكن أن يكون أداء الاستراتيجية.

إذا كنت ستستخدم الكود أدناه، يجب عليك تعديله ليتناسب مع أحدث وقت بدء.

图片

البيانات التي تم تنزيلها تبدو هكذا. يمكنك مقارنة ذلك مع وثائق Binance، للتحقق من المعاملات الحديثة (التجميع) ومعرفة معانيها المحددة.

图片

مع هذه البيانات الأصلية، يمكنك استخدام df.resample(bar_size).agg() لتجميعها إلى أي مستوى تحتاجه من خطوط k، كما تشاء.

أخيراً

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

إذا كنت بحاجة إلى الكود أعلاه، يمكنك التواصل للحصول عليه.