رفتن به محتوای اصلی

پایپ‌لاین سبک داده برای معاملات زنده و یادگیری ماشین/عمیق

پایپ‌لاین سبک داده برای معاملات زنده و یادگیری ماشین مالی
#

(پایتون 3.12.7)

دانلود از گیت‌هاب
#

معرفی کلی
#

این مخزن شامل یک پایپ‌لاین دادهٔ سبک و ماژولار برای مالی کمی، معاملات الگوریتمی و یادگیری ماشین مالی است.

این پایپ‌لاین داده‌های بازار را مستقیماً از متاتریدر ۵ دریافت می‌کند، ویژگی‌های مفید می‌سازد، یک تقویم معاملاتی منسجم بازسازی می‌کند، نقاط داده گم‌شده را با روشی کاملاً رو‌به‌گذشته (backward-only) پر می‌کند، و در نهایت یک دیتاست تمیز برای هم پژوهش تاریخی و هم معاملات زنده تولید می‌کند.

برخلاف بسیاری از پایپ‌لاین‌های پیش‌پردازش با محوریت پژوهش، هدف اصلی طراحی این ابزار قابلیت اجرا در بازار زنده است. هر مرحله به‌گونه‌ای طراحی شده که از سوگیری نگاه‌به‌آینده (look-ahead bias) جلوگیری کند و در عین حال به‌اندازه‌ای سبک بماند که روی سرورهای معاملاتی با منابع محدود قابل اجرای پیوسته باشد.


ویژگی‌های اصلی
#

  • دریافت مستقیم داده بازار از متاتریدر ۵
  • پشتیبانی از بازهٔ تاریخی ثابت و دانلود پنجرهٔ غلتان (Len)
  • ساخت دیتاست چندنمادی
  • بازسازی خودکار تقویم
  • پرکردن شکاف فقط رو‌به‌گذشته (بدون نشت اطلاعات آینده)
  • ساخت اندیکاتور تکنیکال قابل‌تنظیم
  • امکان ساخت دیتاست فقط بر اساس Close
  • پیشوندگذاری خودکار ستون‌ها برای دیتاست‌های چند دارایی
  • طراحی سبک برای استفادهٔ زنده
  • معماری ماژولار برای توسعهٔ آسان

ساختار پایپ‌لاین
#

پایپ‌لاین از پنج ماژول اصلی تشکیل شده است.

۱. fast_download_data()
#

دادهٔ OHLC، اسپرد و حجم تیک را از متاتریدر ۵ دانلود می‌کند.

پشتیبانی از:

  • بازهٔ تاریخی ثابت
  • آخرین N کندل (پنجرهٔ غلتان)

۲. add_indict()
#

اندیکاتورهای تکنیکال را بر اساس تنظیمات config.py می‌سازد.

نسخهٔ فعلی شامل:

  • ATR
  • SMA
  • انحراف معیار غلتان
  • میانگین متحرک روند
  • پیوت و فاصله تا پیوت
  • RSI
  • تقاطع میانگین متحرک
  • ویژگی پرایس اکشن

ردیف‌هایی با مقادیر اندیکاتور ناقص حذف می‌شوند تا اثر warm-up از بین برود.


۳. build_calendar()
#

یک تقویم معاملاتی کامل بر اساس تایم‌فریم انتخابی می‌سازد.

پشتیبانی از:

  • M1
  • M5
  • M15
  • H1
  • H4
  • D1

آخر هفته‌ها بسته به دارایی می‌توانند حذف شوند.


۴. gap_fill()
#

نقاط گم‌شده را پس از ادغام نمادها پر می‌کند.

قوانین:

  • OHLC ← آخرین Close
  • اسپرد ← forward fill
  • حجم تیک ← صفر
  • اندیکاتورها ← آخرین مقدار موجود

هیچ دادهٔ آینده‌ای در این فرآیند استفاده نمی‌شود.


۵. download_data()
#

تابع اصلی ارکستراسیون.

مراحل زیر را به‌ترتیب اجرا می‌کند:

۱. دانلود داده ۲. ساخت اندیکاتورها ۳. ادغام نمادها ۴. ساخت تقویم ۵. پرکردن شکاف‌ها ۶. ذخیرهٔ دیتاست نهایی


پیکربندی
#

تمام رفتار پایپ‌لاین از طریق config.py کنترل می‌شود.

گزینه‌های اصلی شامل:

  • نمادها
  • تایم‌فریم
  • حالت دانلود
  • تاریخ‌های تاریخی
  • طول پنجرهٔ غلتان
  • انتخاب اندیکاتور
  • تنظیمات اندیکاتور
  • حالت تقویم
  • فرمت خروجی
  • گزینه‌های ذخیره‌سازی

برای استفادهٔ معمول نیازی به تغییر DataPipeline.py نیست.


حالت‌های دانلود
#

حالت تاریخی
#

تمام کندل‌های موجود بین تاریخ شروع و پایان تعیین‌شده را دانلود می‌کند.

مناسب برای:

  • ساخت دیتاست
  • پژوهش
  • بک‌تست

حالت پنجرهٔ غلتان (Len)
#

آخرین N کندل هر نماد را دانلود می‌کند.

تقویم بر اساس بازهٔ زمانی مشترک بین همهٔ نمادها ساخته می‌شود، که از ردیف‌های forward-fill اضافی ناشی از تفاوت زمان‌بندی بازارها جلوگیری می‌کند.

مناسب برای:

  • معاملات زنده
  • پیپر تریدینگ
  • استفادهٔ مداوم مدل

اصول طراحی
#

طراحی از چند اصل روش‌شناختی پیروی می‌کند.

  • بدون سوگیری نگاه‌به‌آینده
  • سازگار با بازار زنده
  • سبک از نظر محاسباتی
  • معماری ماژولار
  • استفاده از داده بومی بروکر
  • مهندسی ویژگی قابل‌تنظیم
  • خروجی‌های قابل بازتولید

پیش‌نیازها
#

پایتون 3.12.7

کتابخانه‌های اصلی

  • pandas 2.2.2
  • MetaTrader5 5.0.5200
  • ta 0.11.0

نیاز به یک ترمینال متاتریدر ۵ فعال با دسترسی به نمادهای موردنیاز است.


مثال
#

from DataPipeline import download_data

df = download_data()

print(df.head())

کاربردهای رایج
#

  • معاملات الگوریتمی
  • یادگیری ماشین مالی
  • پیش‌بینی سری زمانی
  • مدل‌سازی میان‌دارایی
  • مهندسی ویژگی
  • بک‌تست
  • سیستم‌های معاملات زنده
  • هوش مصنوعی قابل‌تفسیر برای مالی

محدودیت‌ها
#

  • داده‌های بازار تیک‌به‌تیک پشتیبانی نمی‌شوند.
  • پایپ‌لاین به متاتریدر ۵ به‌عنوان منبع داده وابسته است.
  • کارمزد، لغزش قیمت (slippage) و سواپ در آن مدل‌سازی نشده‌اند.
  • دارایی‌هایی با تقویم معاملاتی بسیار متفاوت نباید در یک اجرا با هم پردازش شوند.

ارجاع
#

اگر از این مخزن در کار خود استفاده می‌کنید، لطفاً نسخهٔ آرشیوشده را ارجاع دهید:

Masoumian, Mohammad Mahdi. (2026).
Design and Implementation of a Low-Resource, Bias-Aware Data Pipeline for Live Trading, Rule-Based Systems, and Financial Machine Learning.
Zenodo. https://doi.org/10.5281/zenodo.21695559


مجوز
#

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