Nobitex-Bitpin Arbitrage Checker

Sasan Salamzadeh e6544faa44 Initial Commit V1.0 1 yıl önce
Arbitrage.py e6544faa44 Initial Commit V1.0 1 yıl önce
README-fa.md e6544faa44 Initial Commit V1.0 1 yıl önce
README.md e6544faa44 Initial Commit V1.0 1 yıl önce

README-fa.md

بررسی آربیتراژ نوبیتکس و بیت‌پین

این پروژه یک اسکریپت پایتون است که فرصت‌های آربیتراژ بین صرافی‌های نوبیتکس (Nobitex) و بیت‌پین (Bitpin) را برای جفت‌ارز USDT/IRR بررسی می‌کند. اسکریپت سفارش‌های فروش (ask) نوبیتکس را با سفارش‌های فروش بیت‌پین و سفارش‌های خرید (bid) نوبیتکس را با سفارش‌های خرید بیت‌پین مقایسه می‌کند تا فرصت‌های سودآور را شناسایی کند. در صورت یافتن فرصت آربیتراژ با تفاوت قیمت بیش از ۵۰۰۰ ریال، اعلان از طریق تلگرام ارسال می‌شود.

ویژگی‌ها

  • دریافت داده‌های بلادرنگ: داده‌های دفتر سفارش (orderbook) از API نوبیتکس و معاملات اخیر از API بیت‌پین.
  • مقایسه دقیق: مقایسه سفارش‌های فروش نوبیتکس با فروش بیت‌پین (برای خرید در نوبیتکس و فروش در بیت‌پین) و سفارش‌های خرید نوبیتکس با خرید بیت‌پین (برای فروش در بیت‌پین و خرید در نوبیتکس).
  • تجمیع سفارش‌ها: تجمیع سفارش‌های نوبیتکس برای رسیدن به حداقل حجم ۵۰۰ USDT و تطبیق حجم‌های بیت‌پین در صورت تفاوت بیش از ۵٪.
  • ارسال اعلان تلگرام: ارسال یک پیام تلگرامی برای بهترین فرصت آربیتراژ در هر چرخه (تفاوت قیمت > ۵۰۰۰ ریال).
  • مدیریت خطا: مدیریت خطاهای شبکه، داده‌های نامعتبر و مشکلات API با ادامه اجرای اسکریپت.
  • لاگ‌گیری جامع: چاپ لاگ‌های دیباگ برای جزئیات تجمیع سفارش‌ها و مقایسه‌ها.

پیش‌نیازها

  • Python 3.9 یا بالاتر
  • محیط مجازی (اختیاری اما توصیه‌شده)
  • دسترسی به اینترنت برای APIهای نوبیتکس و بیت‌پین
  • حساب تلگرام و ربات تلگرام برای ارسال اعلان‌ها

نصب

  1. مخزن را کلون کنید:

    git clone https://github.com/salamzadeh/BitEx.git
    cd BitEx
    
  2. محیط مجازی ایجاد کنید (اختیاری):

    python -m venv venv
    source venv/bin/activate  # در لینوکس/مک
    venv\Scripts\activate     # در ویندوز
    
  3. وابستگی‌ها را نصب کنید:

    pip install python-telegram-bot==20.7 requests
    
  4. ربات تلگرام را تنظیم کنید:

    • یک ربات تلگرام از طریق BotFather ایجاد کنید و توکن ربات را دریافت کنید.
    • شناسه چت (Chat ID) گروه یا کاربر تلگرام را پیدا کنید (می‌توانید از ربات‌هایی مانند @GetIDsBot استفاده کنید).
  5. پیکربندی اسکریپت:

    • فایل Arbitrage.py را باز کنید و مقادیر زیر را به‌روزرسانی کنید:

      TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN_HERE"  # توکن ربات تلگرام
      TELEGRAM_CHAT_ID = "YOUR_CHAT_ID_HERE"     # شناسه چت تلگرام
      

استفاده

  1. اجرای اسکریپت:

    python Arbitrage.py
    
  2. خروجی مورد انتظار:

    • لاگ‌های کنسول:
      • موفقیت یا خطای API: مثلاً Nobitex API read successfully at ...
      • جزئیات تجمیع: مثلاً Debug: Aggregated 2 orders: [(873000.0, 127.87), ...], Total Volume: 500.00, Avg Price: 873081.9
      • خطاها: مثلاً Error at 2025-07-16 14:02:23: Error fetching Nobitex data: ...
      • حداکثر تفاوت قیمت: مثلاً Max Nobitex Ask - Bitpin Sell Difference: 5218.1 IRR
    • اعلان تلگرام: در صورت یافتن فرصت آربیتراژ با تفاوت قیمت > ۵۰۰۰ ریال:

      ✅ موقعیت آربیتراژ یافت شد 📈
      💸 خرید از نوبیتکس: 873000 ریال با حجم نوبیتکس: 127.87 دلار
      💰 فروش در بیت پین: 879000 ریال با حجم: 100.00 دلار
      📊 قیمت میانگین خرید: 873081 ریال
      📊 قیمت میانگین فروش: 878566 ریال
      📏 حجم قیمت میانگین: 500.00 دلار
      📈 تفاوت قیمت: 5485 ریال
      
  3. توقف اسکریپت:

    • برای توقف، از Ctrl+C در ترمینال استفاده کنید.

پیکربندی پیشرفته

  • تغییر حداقل حجم: متغیر MIN_SELL_VOLUME (پیش‌فرض: ۵۰۰ USDT) را در اسکریپت تغییر دهید.
  • تغییر آستانه تفاوت قیمت: مقدار ۵۰۰۰ در شرط best_ask_sell_diff > 5000 را در تابع check_arbitrage تنظیم کنید.
  • تغییر فرکانس بررسی: متغیر FPS (پیش‌فرض: هر ۶۰ ثانیه) را در تابع main تغییر دهید.

دیباگ و عیب‌یابی

  • لاگ‌های کنسول را بررسی کنید تا جزئیات تجمیع سفارش‌ها و خطاها را ببینید.
  • در صورت بروز خطا (مثلاً مشکلات شبکه یا داده‌های نامعتبر)، اسکریپت خطا را لاگ می‌کند و ادامه می‌دهد.
  • برای پشتیبانی، لاگ‌های کنسول و پیام‌های تلگرام را به همراه نسخه‌های کتابخانه‌ها (pip show python-telegram-bot requests) به اشتراک بگذارید.

محدودیت‌ها

  • وابستگی به APIهای نوبیتکس و بیت‌پین (در صورت قطعی API، اسکریپت خطا را لاگ کرده و ادامه می‌دهد).
  • نیاز به اتصال اینترنت پایدار.
  • نسخه‌های قدیمی‌تر python-telegram-bot (<20.0) ممکن است نیاز به تغییر from telegram import Bot به from telegram.bot import Bot داشته باشند.

مشارکت

  • برای گزارش باگ یا پیشنهاد ویژگی، یک Issue در مخزن GitHub ایجاد کنید.
  • Pull Requestها برای بهبود کد یا افزودن ویژگی‌های جدید استقبال می‌شوند.

لایسنس

این پروژه تحت لایسنس MIT منتشر شده است.

تماس

برای سؤالات یا پشتیبانی، از طریق [ایمیل یا GitHub Issues] تماس بگیرید.