زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK

Программирование

زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK.
روبات های معامله گر را می توان به یک زبان خاص، مشابه کد برنامه، نوشت. QPILE یکی از آنهاست، این مقاله به بررسی این زبان، مقایسه زبان های QPILE و
LUA و همچنین مثال هایی از روبات ها در این زبان می پردازد.

اطلاعات کلی در مورد QPILE

QPILE مخفف QUIK Programmable Interface and Logic Environment است.

این یک سری دستورات است که توسط ایستگاه کاری QUIK تفسیر می شود. عمدتاً برای محاسبه قیمت پرتفوی اوراق بهادار استفاده می شود. این زبان همچنین برای موارد زیر استفاده می شود:

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

این زبان ساختار جدول را توصیف می کند: تعیین ستون ها و ردیف ها، فرمول ها. در دومی می توان از عملیات ریاضی، متغیرها، داده های سایر جداول برای محاسبه استفاده کرد. کد برنامه بارگیری شده از سرور QUIK یا از دیسک کاربر توسط مترجم زبان پردازش می شود که مقادیر موجود در فرمول ها را محاسبه می کند. جداول یک برنامه دارای یک منبع داده است، اما محاسبات تکراری نیستند و بر کارایی سیستم تأثیر نمی گذارند. هنگام کار با جداول QUIK، جداول در QPILE دارای عملکردهای استاندارد هستند. QUIK در محل کار مجهز به کد دیباگر QPILE است. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm این زبان به شما امکان می دهد جداول جدید را با یک ساختار مشخص توصیف کنید، سلول ها را با مقادیر مشخص برجسته کنید، فیلدها را بر اساس عبارات ریاضی و منطقی محاسبه کنید. کاربر اعلان هایی را به صورت سیگنال صوتی یا پیام متنی دریافت می کند. جداول در QPILE را می توان ویرایش، چاپ، کپی، از طریق سرور ODBC و DDE صادر کرد. داده های اولیه از جداول QUIK هستند:

  • معاملات، از جمله برای اجرا و غیر شخصی؛
  • سفارشات، از جمله دستورهای توقف، برای معاملات خارج از بورس و سفارشات – گزارش برای معاملات در معاملات تسویه حساب؛
  • “پرتفوی مشتری”، “خرید/فروش”
  • داده ها از موقعیت های شرکت کننده بر اساس پول، حساب های تجاری، ابزار.

جداول مبتنی بر QPILE را نمی توان از طریق منوی زمینه در یک فایل متنی کپی کرد و به سیستم های تحلیل تکنیکال صادر کرد و نمودارها را نمی توان بر اساس آنها توسعه داد. جداول مبتنی بر QPILE را نمی توان فیلتر یا مرتب کرد.

کار با میز

برای بارگذاری کد برنامه، باید منوی خدمات و سپس اسکریپت های QPILE را انتخاب کنید. همچنین می توانید از ترکیب Ctrl+F11 استفاده کنید. بعد از اینکه باید روی “افزودن” کلیک کنید و فایل مورد نظر را انتخاب کنید. دارای پسوند qpl. است و نام آن در لیست اسکریپت های موجود ظاهر می شود.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK در صورت وجود خطایی در برنامه، سیستم یک اعلان در “پنجره پیام” ارسال می کند که حاوی نام فایل معیوب و شماره خط با خطا است. اگر هیچ مشکلی در فایل یافت نشد، داده های زیر در فیلدها نشان داده می شود:

  • نام جدول؛
  • تعداد ستون ها و مشتریان؛
  • لیست شناسه ها و مشتریان؛
  • لیست پارامترها و کد منبع فایل.

زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK دکمه “دانلود محلی” به شما امکان می دهد جدول را از یک فایل دریافت کنید و “آپلود به سرور” برنامه را به سرور ارسال می کند تا همه کاربران بتوانند به آن دسترسی داشته باشند. برای ایجاد جدول، روی ایجاد جدول کلیک کنید. در “اسکریپت های موجود” برنامه ای را که باید اجرا کنید انتخاب کنید، تعداد خطوط را از طریق “Client Filter” تنظیم کنید، ستون های مورد نیاز و دنباله آنها را تعریف کنید.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK مکث و از سرگیری محاسبه، شروع مجدد محاسبه و در حالت اشکال زدایی، ذخیره توضیحات در یک فایل، نمایش فرمول و پارامترهای اسکریپت در منوی زمینه موجود است.

ساختارهای QPILE

انواع داده ها

  • رشته – رشته.
  • Double یک عدد ممیز شناور است.
  • مجموعه – مجموعه.
  • نقشه – یک آرایه انجمنی – دنباله ای از جفت ها که به شما امکان می دهد اطلاعات را با کلید بدست آورید.

اصطلاحات

عملیات حسابی جمع، تفریق، ضرب، تقسیم اعمال می شود. عبارات منطقی “و”، “یا”، مساوی، بیشتر، کمتر، نابرابری ها، ساخت شرطی “اگر … سپس …” نیز استفاده می شود.

کارکرد

توابع می توانند در هر نقطه از برنامه قرار داشته باشند و نام های مختلفی داشته باشند. در مجموع، 18 گروه از توابع و توابع ریاضی برای به دست آوردن مقادیر جداول و پارامترها، آرایه های انجمنی، لیستی از جداول و سایر وظایف موجود است. کلاس اول:

  1. توابع ریاضی که به شما امکان می دهد مقدار سینوس، کسینوس، مماس، کتانژانت آرگومان را برگردانید، توان آرگومان را محاسبه کنید، یک عدد تصادفی ایجاد کنید و غیره.
  2. دستورات عمومی : NEW_GLOBAL برای مقداردهی اولیه یک متغیر سراسری و MESSAGE برای باز کردن پیام ها.

توابع برای کار با:

  • مجموعه اشیاء (مجموعه) . آنها به شما امکان می دهند یک مجموعه جدید ایجاد کنید، تعداد مورد نیاز عناصر را برگردانید، مقادیر مورد نظر را جایگزین یا درج کنید.
  • آرایه های انجمنی (MAP) . به ایجاد و مدیریت آرایه کمک کنید.
  • فایل‌ها – کار با فایل‌های متنی، حفظ لاگ برنامه. نام فایل ممکن است حاوی مسیر آن باشد.
  • رشته ها
  • نمودارها _ عملکردهای GET_CANDLE برای دسترسی به داده‌های شمع و GET_CANDLE EX برای برگرداندن یک آرایه انجمنی.
  • برنامه های کاربردی ایجاد سفارش و ارسال آنها به سامانه معاملات.
  • برچسب ها ساخت و نصب آنها بر روی نمودار. افزودن، حذف یک یا همه برچسب ها، گرفتن و تنظیم پارامترها برای یک برچسب خاص.

همچنین توابعی برای:

  1. برای دسترسی به ردیف‌هایی از جداول QUIK دلخواه و فهرست‌های پارامترهای موجود . دسترسی به داده های جدول محل کار اینها شامل GET_ITEM برای برگرداندن MAP و GET_NUMBER_OF برای برگرداندن تعداد ورودی‌ها می‌شود.
  2. برای کار با جدول قابل برنامه ریزی این دستورات در جدول OWN عمل می کنند. با توابع استاندارد پاراگراف قبلی و این توابع قابل خواندن است. این گروه شامل دستوراتی برای افزودن، اصلاح و حذف یک ردیف با شاخص و پاک کردن کامل جدول OWN می باشد.

برای بدست آوردن مقادیر از:

  1. جداول معاملات جاری دریافت پارامترهای اطلاعات تبادل با استفاده از دستورات GET_PARAM (_EX).
  2. نقل قول ویندوز به دست آوردن مقادیر مظنه ابزار.
  3. جداول موقعیت ها بر اساس ابزار و پول . به دست آوردن اطلاعات مربوط به مشتری، شرکت، ابزار، حساب دپو با کد.

توابع سرویس – برگرداندن تاریخ جلسه معاملاتی جاری، سری انجمنی، تاریخ و زمان جاری، تعیین وضعیت اتصال، قطع حالت محاسبه.

برنامه های اشکال زدایی

کنترل گام به گام بر عملکرد برنامه در پنجره “اشکال زدایی” انجام می شود. از منوی زمینه “شروع محاسبه در حالت اشکال زدایی” باز می شود. همچنین می توان با دستور breakpoint() باز شد و خط برنامه با رنگ قرمز برجسته می شود. پنجره حاوی فیلدهایی با کد برنامه و مقادیر متغیر است. در پایین پنجره دکمه های “مرحله بعدی”، “ادامه اجرا”، “توقف محاسبه” وجود دارد. با فشار دادن F5 اجرای برنامه ادامه می یابد، ترکیب Shift + F5 اشکال زدایی را متوقف می کند، کلید F10 به خط بعدی هدایت می شود.

QPILE یا LUA؟

LUA یک زبان برنامه نویسی جدید برای ایجاد ربات های تجاری است. مانند QPILE در ترمینال QUIK پیاده سازی می شود. https://articles.opexflow.com/programming/lua.htm سایتی که به توسعه ربات های معامله گر اختصاص داده شده است، مزایای زبان LUA را نسبت به QPILE نشان می دهد. بنابراین، می تواند به عنوان یک اسکریپت و بایت کد کامپایل نشده، مجهز به ابزارهای توسعه دهنده و مکانیسم های برنامه نویسی شی گرا عمل کند. اشیاء نوشته شده به زبان های برنامه نویسی دیگر را می توان به برنامه های LUA متصل کرد. LUA 8 نوع داده، از جمله متاتبل ها را فراهم می کند. زبان LUA چند رشته ای، سریع است و تراکنش ها و رویدادهای پایانه ناهمزمان هستند. LUA رایج تر از QPILE است و افزونه های زیادی برای آن نوشته شده است.

زبان QPILE اکنون منسوخ شده است. کارشناسان در انجمن ها استفاده از LUA را توصیه می کنند. اگرچه هنوز از برنامه های مفید و موثر استفاده می شود.

با این حال، زبان QPILE در مقایسه با LUA ساده است، بنابراین اگر تجربه ای در برنامه نویسی ندارید، بهتر است QPILE را انتخاب کنید. در این زبان، اگر نیازی به انجام محاسبات پیچیده ندارید، می توانید یک ربات ساده بنویسید.

چگونه یک ربات معامله گر در QPILE ایجاد کنیم؟

برای ایجاد یک مشاور معاملاتی، به برنامه های زیر نیاز دارید:

  1. ITS Quik.
  2. ویرایشگر کد Notepad++.
  3. راهنمای QPILE.
  4. پلاگین XML برای تشخیص کد در Notepad ++.

این برنامه ها را دانلود و نصب کنید. سینتکس زبان را با قرار دادن userDefineLang.xml در مسیر C:\Users\User\ AppData\Roaming\Notepad++\ فعال کنید.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK ابتدا، بیایید استراتژی معاملاتی زیر را ایجاد کنیم. اسکریپت باید سلام و پایین را برای چند شمع آخر هر دقیقه محاسبه کند، قیمت فعلی ساز را بررسی کند. اگر قیمت ابزار به حداکثر یا حداقل مقدار برای دوره برسد، یک موقعیت در جهت مورد نیاز باز می شود. هنگامی که یک سیگنال کوتاه دریافت می شود، موقعیت طولانی به طور خودکار بسته می شود. این ربات از ابزار GAZP استفاده می کند، بازه زمانی 1 دقیقه تنظیم شده است. عمق اندازه گیری hi-low روی 5 شمع تنظیم شده است. برای وارد کردن Long، یک قانون تنظیم می شود و تقاطع قیمت فعلی حداکثر مقدار برای دوره است. اگر قیمت فعلی از حداقل مقدار این 5 شمع عبور کند، ربات وارد Short می شود. یک بلوک کد در Notepad++ با تنظیمات اولیه و تاریخ و زمان سرور بنویسید. این کد در تصویر زیر نشان داده شده است.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK 4 خط اول کد هدر برنامه را تشکیل می دهد. بین خطوط 6 و 44 بدنه برنامه قرار دارد که حاوی محتویات ربات است. خطوط 7 – 12 شامل تنظیمات کاربر است که شامل کدهای ابزار، گروه و مشتری، شماره حساب در MICEX می باشد. این مقادیر در طول اجرای برنامه تغییر نمی کنند. خطوط 13 – 16 مقادیر اولیه متغیرها هستند. آنها در هر بار تکرار به صفر بازنشانی خواهند شد. خطوط 17 – 21 حاوی نشانه ای برای استفاده از تاریخ و زمان سرور است. این داده ها به تابع DATETIME منتقل می شوند و به فرمت متن تبدیل می شوند. خطوط 22 – 29 داده های دریافتی را به جدول ارسال می کند. کد باید ذخیره شود و پسوند qpl باید مشخص شود.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK با فشردن کلیدهای Ctrl+F10 و انتخاب فایل qpl تولید شده، برنامه را به صورت QUIK باز کنید. از ترکیب Ctrl+F11 برای باز کردن پنجره “Work with Portfolios” استفاده کنید و دوره محاسبه نمونه کارها را روی 5 دقیقه تنظیم کنید. Ctrl+F12 را فشار دهید تا ستون ها در جدول نمایش داده شوند. تصویر نتیجه کار ربات را نشان می دهد.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK بیایید چند تابع و شرایط دیگر را به برنامه خود اضافه کنیم.
بلوک “تنظیمات کاربر” با متغیرهای NUMBER و INTERVAL تکمیل می شود که در عملکرد به دست آوردن آخرین N نوار استفاده می شود. تابع DATETIME تاریخ و زمان سرور را تنظیم می کند و توابع تاریخ و زمان فعلی CURDATE و CURTIME از آن فراخوانی می شوند. زمان فعلی در خط 24 به عدد تبدیل می شود. خط 26 زمان اجرای الگوریتم را از 10:00:01 تا 18:40:00 UTC تنظیم می کند.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK اغلب، نشانگرها، نوسانگرها، محاسبات آماری توسط آخرین N شمع نمودار محاسبه می شود. QPILE تابعی برای جمع آوری تعداد شمع های N دوره قبل ندارد، اما یک تابع GET_CANDLE وجود دارد که به شمع های نمودار بر اساس تاریخ و زمان در قالب متن دسترسی پیدا می کند. کد ما حاوی تابعی برای دریافت آخرین N میله OHLC() است. مجموعه ای با پارامترهای آخرین شمع های تو در تو در لیست COLLECTION ایجاد می کند. برنامه مقدار INTERVAL را بررسی می کند و اگر در محدوده 0…60 قرار نگیرد، پیامی نشان می دهد که مقدار با محدوده مجاز مطابقت ندارد. یک مجموعه MAP با شمع در خط 88 ایجاد می شود. یک حلقه FOR که نمودار را به عمق مورد نیاز با گام INTERVAL از شمع جدید به قدیمی بررسی می کند. در خط 90، پس از اعلام چرخه، ربات یک بازه به عقب برمی‌گردد. وقتی با GET_CANDLE یک شمع دریافت می کنید، با استفاده از تابع INSERT_COLLECTION_TEAM آن را در مجموعه BARLIST قرار دهید. در نتیجه عملکرد دستور OHLC() BARLIST با آخرین شمع ها از نمودار ابزار به مقدار NUMBER پر می شود. تعداد عناصر مجموعه توسط دستور GET_COLLECTION_COUNT() درخواست شده و توسط متغیر BARCOUNT گزارش می شود. تاریخ، زمان سرور، مقادیر متغیرهای INSTRUMENT و BARCOUNT توسط تابع SET_VALUE() در OUTPUT گزارش می شود. این آرایه توسط دستور CREATE_MAP() ایجاد می شود. داده ها در جدول سفارشی قرار می گیرند که در عکس زیر قابل مشاهده است. مقادیر متغیرهای INSTRUMENT و BARCOUNT توسط تابع SET_VALUE() در OUTPUT گزارش می شود. این آرایه توسط دستور CREATE_MAP() ایجاد می شود. داده ها در جدول سفارشی قرار می گیرند که در عکس زیر قابل مشاهده است. مقادیر متغیرهای INSTRUMENT و BARCOUNT توسط تابع SET_VALUE() در OUTPUT گزارش می شود. این آرایه توسط دستور CREATE_MAP() ایجاد می شود. داده ها در جدول سفارشی قرار می گیرند که در عکس زیر قابل مشاهده است.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK

ربات های تجاری در QPILE – راه حل های آماده

ربات متوسط ​​متحرک

ربات نمایشی برای تجارت واقعی مناسب نیست.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK این ربات شامل 5 پارامتر است. مقادیر شناسه DATE، TIME، PRICE روی سطح 30 تنظیم شده اند. شناسه های MOVING و TP روی دقت صفر تنظیم شده اند. کد ربات روی میانگین متحرک نوشته شده در زیر QPILE:

ماشین حساب موقعیت N. Moroshkin

برنامه ای برای محاسبه سطوح حداکثر برداشت مجاز و هدف برای موقعیت های خرید و فروش در قیمت های درخواستی و پیشنهادی فعلی. سطوح برای 2 مقدار از حجم ورودی موقعیت محاسبه می شود. ربات حجم موقعیت مجاز را هنگام تخصیص دستور توقف در یک مرحله از قیمت افتتاحیه با محاسبه باز کردن موقعیت در جهت رو به بالا میله پیدا می کند. سطوح یافت شده در پنجره ترمینال وارد می شوند که متعاقباً در نمودار قیمت منعکس می شوند. معاملات برای یک ابزار معین ثابت هستند. اگر یک موقعیت باز شود، ربات شروع به محاسبه پارامترهای آن می کند. بسته به تغییر موقعیت، سفارشات تعیین شده تنظیم می شوند.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK

فیلتر حجم

یک ربات نمونه کار برای محاسبه میانگین حسابی حجم شمع ها و مقایسه آن با محصول متوسط ​​با ضریب X. با نمودارهای رسم شده در یک بازه زمانی انتخاب شده به درستی کار می کند.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK

گزینه ها یونانی ها

نمونه کارها برای محاسبه و نمایش “یونانی” گزینه ها. با روش Black-Showers متفاوت است.
زبان الگوریتمی QPILE برای برنامه نویسی ربات های تجاری برای QUIK

ربات معامله گر TRIX برای QUIK

این برنامه بر اساس شاخص TRIX است. هنگامی که نشانگر بالای خط صفر، سطح مشخص شده بسته می شود، ربات موقعیت Long را می گیرد. موقعیت با برداشت سود، توقف ضرر یا توقف پایانی بسته می شود.

پیش پردازنده M4

برنامه کار با QPILE و Lua. شامل آرشیوهایی با فایل های اجرایی، اسناد و فایل های DLL با تجزیه عبارات منظم. برای استفاده از برنامه باید فایل های اجرایی را باز کرده و regexp2 را در مسیر C:\Windows قرار دهید. آموزش های مربوط به QPILE برای QUIK: https://youtu.be/vMTXwDUujpI نصب یک اسکریپت در QPILE در ترمینال Quik: https://youtu.be/0B7qL8Svh7I بخشی در github که استفاده از زبان الگوریتمی QPILE را توصیف می کند. ایستگاه کاری سیستم QUIK واقع در پیوند – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE یک زبان قدیمی است، اما کاملاً ساده و حتی برای معامله گران تازه کار نیز قابل دسترسی است. ربات‌های تجاری و برنامه‌هایی که خود را برای مدت طولانی ثابت کرده‌اند همچنان روی آن کار می‌کنند. با این حال، برای کارهای پیچیده تر، بهتر است از LUA استفاده کنید.

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    Reply