طراحی، ساخت و استقرار یک سیستم معاملاتی الگوریتمی کاملاً خودکار

  • 2021-12-26

به‌روزرسانی در 10 نوامبر 2020: اگر از محتوا لذت می‌برید، می‌توانید از مقالات قبلی بخش 2 و 3 من دیدن کنید، جایی که در مورد نحوه طراحی، ساخت و به کارگیری الگوریتم کاملاً خودکار خود برای استراتژی‌های گزینه‌ها و پوشش فارکس بحث می‌کنم. من همچنین مقاله‌هایی درباره ویژگی‌های نظارت سیستماتیک عملکرد نوشته‌ام که در آن درباره نحوه ثبت منحنی ارزش، بازده وزنی زمان، لغزش‌ها، اثرات نرخ ارز، نوسانات و کاهش‌ها بحث کرده‌ام. قسمت 1 و 2 و 3 را ببینید

همانطور که چندین الگوریتم تجارت بین روزی/مدیریت پورتفولیو را توسعه دادم، به موازات آن سفری را آغاز کردم تا یک چارچوب اجرایی کاملاً خودکار ایجاد کنم که بتواند نیازهای من را برآورده کند.

* قبلاً سفارشات پس از تولید خودکار سیگنال ها به صورت دستی انجام می شد.

الزامات

- یک سیستم معاملاتی نسبتاً کندی که توسط یک زمانبندی کار ساعتی در ساعات معاملاتی راه اندازی می شود. من از کرون جابز لینوکس برای این کار استفاده می کنم.

- یک چارچوب غیر رویداد محور. من برای الگوریتم های خود که در کارگزاران تعاملی اجرا می شوند، به چارچوب ib_sync تکیه می کنم. گزینه جایگزین یک چارچوب رویداد محور است (به عنوان مثال چارچوب رسمی IB مبتنی بر asyncio) بر اساس تجربه من اشکال زدایی آن سخت است و برای سیستم مدیریت پورتفولیو/ تجارت با فرکانس پایین تا متوسط من بسیار زیاد است.

- اجرای خودکار معاملات و تعدیل سبد در رابطه با ریسک ها، سیگنال ها و سقف اهرمی.

- دریافت داده از منابع داده / APIهای متعدد برای پردازش سیگنال، اجرای تجارت و گزارش‌ها.

- گنجاندن پادمان ها و قطع کننده های مدار قبل از شروع هرگونه معامله.

- اطلاع رسانی از طریق ایمیل برای خطاها و به روز رسانی روزانه @ شروع، وسط و پایان روز معامله.

-قابلیت ادغام مراحل بالا از طریق پایتون.

اقدامات انجام شده

بدون فرو رفتن در جزئیات کد، جریان کلی چارچوب من در اینجا است. برنامه های اصلی و فلوچارت های اجرا در انتهای مقاله ضمیمه شده اند.

  1. به عنوان یک جلسه جدید به حساب کارگزاری من متصل شوید.
  2. هر سفارش باز را لغو کنید. من این گزینه را به جای "اصلاح سفارشات" اتخاذ می کنم زیرا این کار بسیار ساده تر است. اگر بخواهم سفارشات را اصلاح کنم ، باید تعداد سفارشات پر شده و سفارشات پر نشده را پیگیری کنم. از آنجا که الگوریتم من ساعتی آغاز می شود ، هرگونه سفارش پر نشده در آن شکاف ساعتی به نظر می رسد که از قیمت فعلی به طور قابل توجهی منحرف می شود و احتمال اجرای آن با قیمت محدود بسیار پایین است. گفته می شود ، در تکرار بعدی من ، من ترجیح می دهم به جای یک "سفارشات لغو" ، زمان را برای نوشتن کد برای "تغییر سفارشات" سرمایه گذاری کنم.
  3. پیش بینی کنید یعنی اهرم و وزن مورد نیاز از تیک های مختلف. من در حال حاضر آنها را به عنوان پرونده های محلی می نویسم به جای اینکه آنها را به یک بانک اطلاعاتی متعهد کنم یا آنها را به عنوان متغیرها ذخیره کنم زیرا در طول تجارت زنده قوی تر هستند. لازم نیست نگران مشکلات همزمانی باشم (در غیر این صورت کدهای باید MUTEX و قفل ها را در نظر بگیرند) ، خرابی پایگاه داده.
  4. ارزش انحلال خالص حساب را بدست آورید.
  5. در وزنه های تیک و اهرم از پرونده نوشته شده در مرحله 3 بخوانید.
  6. برای تیکت های مختلف از جمله اقداماتی مانند "خرید" ، "فروش" یا "هیچ کاری انجام ندهید" ، کمیت و قیمت محدود کنید. در حال حاضر ، من از سفارشات تطبیقی از کارگزاران تعاملی استفاده می کنم - که بر اساس درک من یک دستور اختیاری با قیمت محدود به عنوان یک حد بالایی است. در حال حاضر ، من حاضر نیستم زمان بیشتری را برای این کار سرمایه گذاری کنم تا هرگونه اعدام بیشتر آلفا را بدست آورم ، زیرا این می تواند یک کار غیر مهم برای حفر کتاب های سفارش پیشنهادی باشد.
  7. بررسی کنید که آیا از مرحله 1 تا 4 از طریق پرچم خطا خطایی وجود دارد یا خیر. در صورت بروز هرگونه خطایی ، سفارشات ارسال نمی شوند. اگر همه چیز پاک شود ، برنامه سفارشات را به مبادله ارسال می کند.
  8. معاملات ، در صورت وجود در پرونده CSV.
  9. عکس فوری فعلی را ذخیره کنید که شامل موقعیت ها ، معاملات ، ارزش انحلال خالص و اهرم مورد استفاده و حاشیه است.
  10. در صورت بروز خطاها ، هشدار به Gmail من ارسال می شود.
  11. به روزرسانی های روزانه/ عکس های فوری در آغاز ، میانه و پایان جلسه به Gmail من ارسال می شود.
  12. اگر این برنامه در ساعت 5 صبح Sgt (بعد از ساعت معاملاتی ایالات متحده) آغاز شود ، عکس های فوری و معاملات به پایگاه داده من متعهد می شوند.
  13. از جلسه فعلی جدا شوید.

پشته فناوری

اگر مشتاق هستید که پشته فناوری من را بدانید ، من در حال حاضر از موارد زیر استفاده می کنم ،

  • نعناع لینوکس
  • جعبه نعنا ، رم 8 گیگابایتی (اما هر لپ تاپ یا سرور خصوصی مجازی کافی است)
  • حساب کارگزاری کارگزاران تعاملی (اما این چارچوب می تواند با هر کارگزاری با API سازگار باشد)
  • دروازه کارگزاران تعاملی (ایستگاه کارگر تجارت IB یک جایگزین است اما من برای هدف خود نیازی به رابط کاربری گرافیکی ندارم)
  • چارچوب IB_INSYNC

کلام احتیاط

  • این چارچوب برای تیک تیک یا حتی نوار توسط نوار (ثانیه یا دقیقه) الگوریتم معاملاتی ایده آل نیست زیرا با سرعت پیش بینی نمی شود. در صورت نیاز به سرعت ، یک چارچوب رویداد محور جایگزین بهتری خواهد بود.
  • من برای پیگیری موقعیت ها ، حاشیه ها ، اهرم ها و سفارشات فعلی به سمت سرور کارگزاری تکیه می کنم. در مرحله بعدی توسعه فراتر از این محصول حداقل قابل دوام ، من مشتاق توسعه سیستم حسابداری خودم هستم.

اگر از محتوا لذت می برید ، ممکن است از دنباله اینجا بازدید کنید که در مورد چگونگی قرار دادن گزینه هایی از طریق کارگزاران تعاملی API و نحوه اجرای ویژگی Hedging Forex در اینجا بحث می کنم.

من همچنین مقالاتی را در مورد ویژگی های نظارت بر عملکرد سیستماتیک نوشتم که در مورد چگونگی ضبط منحنی عدالت ، بازده وزنی زمان ، لغزش ، اثرات نرخ ارز ، نوسانات نورد و پیش بینی ها بحث کردم. به قسمت 1 ، part2 و part3 مراجعه کنید

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.