پس از توسعه آسان روبات های تجاری برای Metatrader 4 ، ممکن است شما از چالش هایی که با توسعه ربات های بازار سهام در روسیه با آن روبرو خواهید شد ، بسیار ناخوشایند باشید. Quik یکی از محبوب ترین برنامه ها در بین کارگزاران روسی است. این برنامه دارای یک زبان برنامه نویسی داخلی QPile است که امکان ساخت اسکریپت های ساده را فراهم می کند ، اما ظرفیت کافی برای توسعه روبات های تجاری تمام عیار ندارد ، چه رسد به ارائه امکانات آزمایش. بنابراین ، ما باید یک روش جایگزین پیدا کنیم.
ویژگی های Quik
برای تبادل اطلاعات بین Quik و یک برنامه خارجی ، از پرونده های متنی ساختار ثابت استفاده می شود:
- * . tri - پرونده با پارامترهای معامله
- * . tro - پرونده با نتایج معاملات ارسال شده به سیستم معاملاتی
- * . Trr - پرونده حاوی یک گزارش معامله
طرح تعامل بین برنامه ها به شرح زیر است:
- یک برنامه خارجی معامله ای با پارامترهای مشخص ایجاد می کند و آن را به عنوان یک خط جدید در یک پرونده . tri می نویسد. معاملات توسط یک پارامتر عدد صحیح اضافی trans_id مشخص می شود که حاوی یک عدد منحصر به فرد است.
- Quik System پرونده . tri را با پارامترهای معامله اسکن می کند و معاملات قبلاً پردازش نشده را به سیستم معاملاتی منتقل می کند. اگر توضیحات معامله با فرمت مورد نیاز مطابقت نداشته باشد ، رد می شود.
- نتیجه عملیات در پرونده . tro با فرمت مناسب برای خواندن یک برنامه خارجی ثبت می شود. هر خط از پرونده حاوی اطلاعاتی در مورد پردازش معاملات فردی است که با پارامتر trans_id متفاوت است.
توجه: قبل از اولین خواندن پرونده . tri ، Quik به پرونده . tro اشاره دارد و سفارشات پردازش شده را می خواند. سفارشات موجود در پرونده . tro به صورت پردازش در نظر گرفته می شوند و خطوط موجود در پرونده . tri با همان پارامتر trans_id نادیده گرفته می شوند. اگر در هر راه اندازی ، برنامه خارجی شروع به تنظیم مجدد سفارشات کند ، قبل از شروع آن باید پرونده . tro را از فهرست کار حذف کنید.
به این ترتیب ، اگر خطی را مطابق با فرمت Quik در پرونده معامله بنویسیم ، عملیات معاملاتی اجرا می شود. می توانید از هر برنامه خارجی یک خط سفارش بنویسید. مهمترین زمینه های موجود در خط سفارش در جدول 1 ذکر شده است.
ارزش | شرح |
---|---|
کد | کد یک کلاس برای اجرای معامله ، به عنوان مثال ، EQBR. پارامتر مورد نیاز |
ضایع | کد ابزاری برای اجرای معامله ، به عنوان مثالEESR |
عمل | نوع معامله ای که یکی از مقادیر زیر را دارد: • «New_order» - برای سفارش جدید ، • «new_stop_order» - برای یک سفارش جدید متوقف ، • «Kill_order» - برای حذف یک سفارش ، • «Kill_Stop_order» - برای حذف یکمتوقف کردن سفارش ، • «kill_all_orders» - برای حذف همه سفارشات از یک سیستم تجارت ، • «Kill_all_stop_orders» - برای حذف همه سفارشات توقف |
حساب | شماره حساب معامله گر ، پارامتر مورد نیاز |
مشتری_ | میدان کامپوزیت 20-نمادین ، ممکن است حاوی یک کد مشتری و یک اظهار نظر متن با همان جداکننده باشد که هنگام ورود سفارشات به صورت دستی وارد می شود. |
نوع | نوع سفارش ، پارامتر اختیاری. مقادیر: «l» - محدود ، «m» - بازار. |
عمل | جهت یک سفارش ، پارامتر مورد نیاز. مقادیر: «s» - فروش ، «b» - خرید. |
تعداد | تعداد تعداد زیادی به ترتیب ، پارامتر مورد نیاز |
قیمت | قیمت سفارش ، برای هر واحد یک ابزار ، پارامتر مورد نیاز. |
توقف | قیمت توقف ، در هر واحد یک ابزار. فقط در هنگام «عمل» = «new_stop_order» استفاده می شود |
stop_order_kind | نوع توقف سفارش.• «Simple_Stop_order» - توقف محدود ، • «with_linked_limit_order» - با یک ترتیب مرتبط ، • و غیره. |
تاریخ انقضا | اعتبار سفارش توقف. مقادیر ممکن: • «GTC» - تا زمان لغو.• تاریخ در قالب "yyyymmdd" ، جایی که "yyyy" - سال ، "mm" - ماه ، "dd" - تاریخ. |
trans_id | شماره شناسایی منحصر به فرد سفارش |
برای اطلاعات بیشتر در مورد قالب های سفارش در برنامه Quik ، لطفاً پرونده پیوست شده را بارگیری کنید. راه حل های زیادی برای توسعه "مغز" ربات در دسترس است. اکنون به بعضی از آنها نگاه خواهیم کرد.
برنامه هایی برای تجارت توسعه ربات
تصور کنید که به شما وظیفه داده شده است که یک ربات بازرگانی مرتبط با Quik را تهیه کنید. بیایید به محبوب ترین برنامه ها برای توسعه سیستم های معاملاتی که در حال حاضر موجود است ، نگاهی بیندازیم.
برنامه Metastock قدیمی ترین برنامه مورد استفاده برای تجزیه و تحلیل فنی است ، اولین نسخه آن در سال 1986 ظاهر شد. ابزارهای داخلی برای ایجاد روبات های تجاری به دلیل ضعف زبان برنامه نویسی ناقص هستند. این آزمایشات ممکن است به دلیل وجود چندین حفره برای "نگاه کردن" به آینده به طور قابل توجهی با موارد واقعی متفاوت باشد. علاوه بر آن ، Metastock می تواند بسیار مبهم باشد ، زیرا در هر رایانه عملکردی پایدار نخواهد داشت. معمول است که این برنامه 1-2 بار در روز خراب شود. نقطه ضعف دیگر هزینه بالایی برای برنامه دارای مجوز است.
Tresestation Research Omega 2000i یک بستر تحقیقاتی کامل است که طیف گسترده ای از امکانات را ارائه می دهد. این برنامه بر اساس سه مؤلفه اساسی است:
- الف) Globalserver Research Omega ؛
- ب) دسک تاپ Prosuite ؛
- ج) نیروگاه Easylanguage.
زبان برای توسعه تراکم از نظر بصری شبیه به Visual Basic است ، با این حال ، قابلیت های آن به طور قابل توجهی پایین تر است. با این وجود ، در امگا می توانید از نظر پیچیدگی ، روبات های تجاری بسیار مناسب و معقول ایجاد کنید و داده های آزمایش بسیار واقع بینانه است. در میان معایب - دست و پامی بودن این سکو ، نصب پیچیده ، عملکرد ضعیف زبان و هزینه های بالای آن درگیر است.
توسعه دهنده Wealth-Lab برنامه ای است که محیط کاملی را برای ایجاد و آزمایش سیستم های معاملاتی برای کلیه بازارهای مالی فراهم می کند.
این برنامه قبلاً سیستم های معاملاتی را به طور پیش فرض نصب کرده است. آنها در نمودارها شرح داده شده است. ChartScript ممکن است حاوی قوانین و استراتژی های معاملاتی (مقررات تجاری) و دستورالعمل هایی برای نمایش شاخص ها و اشیاء گرافیکی در نمودار باشد. زبان برنامه نویسی بسیار شبیه به پاسکال است ، جایی که دانش آموزان با برنامه نویسی آشنا می شوند.
ضعف این برنامه عملکرد آنلاین ناپایدار آن است که منجر به خطرات فنی بالای عملکرد ربات می شود و همچنین به هزینه کمک می کند.
اکنون به Metatrader خواهیم پرداخت. زبان آن اولین چیزی است که چشم شما را به خود جلب می کند. C- محور MQL4 سر و شانه های بالاتر از زبانهای برنامه نویسی است که در سیستم عامل های دیگر استفاده می شود. این برنامه رایگان است ، و اگر برای مشتری فردی ممکن است بیشتر یک سؤال فلسفی باشد ، پس برای اشخاص حقوقی این یک عامل مهم است که هنگام انتخاب یک برنامه در نظر گرفته می شود. علاوه بر آن ، نصب این برنامه آسان تر است ، وزن کمتری دارد و در هر دستگاهی هموار کار می کند.
فقط یک نقطه ضعف وجود دارد - خود داده ها. در Metastock ، داده های امگا و Wealt h-Lab مستقیماً از Quik به صورت آنلاین صادر می شوند ، در حالی که در Metatrader - از منبع داده خود شما. اختلاف قیمت بین داده های واقعی و داده های متاترادر ناچیز است ، بنابراین ، استراتژی های غیر PIP معمولی نیز به خوبی در مورد داده های متاترادر اعمال می شود.
شرایط Leapfrog ممکن است در طول تعطیلات رخ دهد ، هنگامی که داده ها به Metatrader نمی رسند ، وقتی واقعاً معاملات اتفاق می افتد. برای پرداختن به این کاستی ، انتخاب ارائه دهنده داده های مناسب ، که می تواند هر DC ارائه دهنده تجارت CFD در سهام روسیه باشد ، کافی است.
گزینه هایی برای نوشتن سفارشات در پرونده
تجزیه و تحلیل میدانی برای یک خط سفارش نشان می دهد که برخی از آنها برای هر معامله تکرار می شوند - آنها به متغیرهای جهانی مراجعه می شوند. لطفاً در نظر داشته باشید که این اهرم فقط در هنگام خرید فراهم می شود ، نه هنگام فروش. بنابراین ، حداکثر تعداد خرید و فروش سهام متفاوت خواهد بود. نویسنده یک ربات برای یک شرکت کارگزاری ایجاد کرده است ، بنابراین فرصتی برای کار با چندین حساب مشتری فراهم شده است. توابع اساسی - معامله ، توقف محدود و قاتل ، به روش زیر استفاده می شود:
trans_id به عنوان یک متغیر جهانی جداگانه مشخص می شود ، زیرا وقتی ترمینال خاموش می شود ، باید متغیر حفظ شود ، در غیر این صورت مقدار پیشخوان معامله تنظیم مجدد می شود و سفارشات جدید اجرا نمی شود ، زیرا trans_id آنها با موارد قبلاً اجرا شده مطابقت دارد، در پرونده trans. tro ذخیره شده است.
متغیر filerequests نام پرونده را در اختیار دارد ، جایی که سفارشات خط نوشته شده است.
نتیجه تکمیل هر عملکرد ، ایجاد خطوط در پرونده trans. tri است که سپس توسط Quik پردازش می شوند و به معاملات واقعی تبدیل می شوند.
ربات تجارت ساده
پس از نوشتن توابعی که با پرونده معامله در تعامل هستند ، می توانیم با تهیه یک ربات بازرگانی اقدام کنیم.
به عنوان مثال ، به عنوان یک ژنراتور سیگنال ورودی ، از قیمت های صاف استفاده می کنیم - میانگین های متحرک نمایی (EMA) با دوره های طولانی (طولانی) و کوتاه (کوتاه EMA). قوانینی برای بهره برداری از ربات بازرگانی موارد زیر است:
- a) entry on a long position (asset purchase) is performed when EMA Short >ema طولانی ؛
- ب) ورود به موقعیت کوتاه (فروش دارایی) ، هنگامی که EMA کوتاه انجام می شود< EMA Long;
- ج) اگر موقعیت باز وجود داشته باشد ، تمام سیگنال ها نادیده گرفته می شوند.
- د) پس از باز کردن موقعیت ، یک دستور محافظ (متوقف کردن) تنظیم می شود.
- ه) اگر یک روند به سمت یک موقعیت باز تبدیل شود ، یک دستور محافظ از قیمت (توقف دنباله) پیروی می کند.
- ج) سیگنال ها در ابتدا و پایان جلسه نادیده گرفته می شوند.
انتقال الگوریتمی مرتبه توقف دو قسمتی. اول ، سفارشات قبلی حذف می شوند و به دنبال آن سفارشات جدید قرار می گیرند. در نتیجه ، عملکرد پیگیری موارد زیر خواهد بود:
تجربه عملکرد واقعی
مدل ربات حاصل در شکل 1 نشان داده شده است.
بیایید مزایا و مضرات این مدل را تجزیه و تحلیل کنیم:
- به لطف امکانات MQL4 می توانید هر سیستم معاملاتی را پیاده سازی کنید
- بدون درخشش عمل می کند
- داده های Metatrader می تواند کمی با داده های واقعی متفاوت باشد
- داده های Metatrader به دلیل مشکلات فنی با سرورها ممکن است منتقل نشود
- کنترل هماهنگ سازی بین معاملات متاترادر و معاملات واقعی لازم است
- نتیجه