ورود به جهان الگوریتمهای کاوشگر و بررسی Grid Search


در مقاله پیشین از سری مقالات مرتبط با بهینهیابی به شرح و بررسی «تابع هدف، چشم بصیرت طراحی استراتژی در بهینهیابی» پرداختیم در این مقاله به شرح و بررسی «تابع هدف، چشم بصیرت طراحی استراتژی در بهینهیابی» میپردازیم.
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف برای سنجش بازده استراتژیهای معاملاتی میتوانید از سفارش کد پایتون، سفارش کد mql و … برای کد کردن و بهینه یابی استراتژیهای خود استفاده کنید. و در عین حال سوای امکان سفارش اکسپرت میتوانید از سفارش اندیکاتور برای دریافت یک نمایش گرافیکی از محاسبات استراتژی خود بهره ببرید.
– – –
الگوریتمهای کاوشگر
پس از بررسی مباحث اولیه درمورد پروسه بهینهیابی در جایگاهی قرار داریم که میتوانیم پژوهش خود را پیرامون الگوریتمهای کاوشگر آغاز کنیم. همانطور که در گذشته اشاره کردیم فضای بهینهیابی میتواند فضایی چند بعدی و پیچیده باشد پاسخ مطلوب ما به طور قطع در این فضاء مستتر است اما سوال این است که چگونه آن را به دست خواهیم آورد؟ به طور دقیقتر، با چه روشی به دنبال آن خواهیم گشت؟

بر اساس آموزش بهینهیابی و آموزش بکتست میدانیم که پس از انجام بک تستهای متوالی آنچه به دست میآوریم مجموعهای بزرگ از دادهها خواهد بود و برای دستیابی به آنچه نیاز داریم باید الگوریتمهای بهینهای به منظور جستجوی این فضا در اختیار داشته باشیم این الگوریتمهای یا به شکل سادهتر روشهای جستجو را الگوریتمهای کاوشگر مینامیم.
این الگوریتمها در طی زمان با بهره گیری از علوم مختلف به جهان بهینهیابی وارد شده اند و هریک با نقاط قوت و ضعف خود مجموعهای مهم از ابزار متخصص بهینهیابی را تشکیل میدهند. من عقیده دارم فهم هر یک از این الگوریتمها ضروریست چرا که در صورت درک میتوانیم آن ها را در شرایط مناسب و با توجه به منابع مورد استفاده قرار دهیم.
برخی از این الگوریتمهای کاوشگر منابع زمانی را مصرف میکنند برخی دیگر به علت پیچیدگی و نیاز به قدرت محاسباتی بالا منابع مالی را مصرف خواهند کرد و برخی هر دو به طور قطع توان آن ها در یافتن پاسخ مطلوب ما نیز متفاوت خواهد بود. در ادامه این مقاله بررسی خود را پیرامون این الگوریتمهای کاوشگر آغاز خواهیم کرد و به بررسی یک الگوریتم با نام Grid Search خواهیم پرداخت.
پروسهی بهینهیابی توسط گرید سرچ (Grid Search)
بسیاری از پروژهها توابع گرید سرچ (Grid Search) را برای دستیابی به ترکیب بهینهای از پارامترها مورد استفاده قرار میدهند. لازم به ذکر است که زمان مورد نیاز برای تکمیل پروسه بهینهیابی تابعی از تعداد پارامتر های مورد نظر برای بهینهیابی میباشد.
با توجه به ذات بهینهیابی محتمل است که منابع محاسباتی و قدرت پردازش کافی برای بررسی تمامی ترکیبهای ممکن وجود نداشته باشد و این موضوع کاملا طبیعی است پس به منظور دستیابی به مناسبترین نتایج ممکن (نه بهترین آنها) روشهای هوشمندی را برای هدایت جستجو در جهت درست مورد استفاده قرار میدهیم.
پس از تکمیل پروسه بهینهیابی معیار موفقیت ما برآورده کردن معیارهای حداقلی از جمله سود کل (Net Profit) بالاتر از صفر و دوره افول (Drawdown) پایینتر از 20 درصد خواهد بود پر واضح است که چنین معیارهایی بستگی به میزان ریسک پذیری، انتظارات شما و تحقیقات علمی دارند که این موضوع را در بخش مدیریت سرمایه سایت به طور کامل مورد بحث قرار گرفته. در ادامه به شکل خلاصه با یکی از الگوریتمهای بهینهیابی با نام گرید سرچ و خصوصیات آن آشنا خواهیم شد.

گرید سرچ (Grid Search)
بر طبق آموزش بهینهیابی یکی از پایهایترین متدهای بهینهیابی گرید سرچ نام دارد.
این متد از خانواده Brute Force Method ها محسوب میشود. یعنی از خانواده روشهایی که بدون هوشمندی خاصی برای افزایش کارآیی، از قدرت محاسباتی محض برای رسیدن به جواب بهره میبرند. در روش گرید سرچ تمامی بکتستها اجرا شده و سپس رتبهبندی میشوند.
در ادامه به بررسی مثال یک بکتست با دورههای زمانی متغیر برای سیگنال ورود میپردازیم. بازه های زمانی 15 دقیقهای برای یک دوره 90 دقیقه با مبدا گشایش بازار . اولین ورود ساعت 9:30 ، 9:45 ، 10:00 و به همین صورت الی آخر تا به 90 دقیقه (15*6) برای متغیر دوم یعنی سیگنال خروج نیز با همین الگو از ساعت 11 تا ساعت 12:30 پس از ظهر پیش میرویم.
بدین صورت برای هریک از متغیر های سیگنال ورود و سیگنال خروج 7 مقدار خواهیم داشت که به صورت کلی 49 ترکیب (2^7) برای ما ایجاد خواهند کرد هر یک از مقادیر ما برای سیگنال ورود با اولین مقدار سیگنال خروج سنجیده شده و این چرخه تا زمان تکمیل هر 49 حالت ادامه پیدا خواهد کرد.
تکرار اول

تکرار دوم

پس از تکمیل تمام 49 حالت ممکن پروسه ما به اتمام میرسد این متد را تحت عنوان Grid Search میشناسیم. در کادر پایین یک نمونهی گرید سرچ که با استفاده از زبان برنامهنویسی پایتون اجرایی شده را مشاهده میکنید :

بر طبق آموزش بهینهیابی به منظور اجرای پروسه بهینهیابی میتوانید طی یک تحلیل تصادفی (randomized) تنها زیر نمونهای از دادهها را جستجو و بررسی کرده و یا با استفاده از گرید سرچ تمامی ترکیبهای ممکن پارامتر ها را بررسی کنید. کاربرد یک منبع معتبر آموزش بهینهیابی میتواند بسیار به پروسه بهینهیابی در پروژه کمک کند.
بدون شک مزیت واضح این روش نسبت به روشهای دیگر آن است که تمامی ترکیب های ممکن مورد بررسی قرار میگیرند به همین دلیل در موارد خاص به قدرت محاسباتی و پردازش بالایی نیاز خواهید داشت. نقطه ضعف بزرگ این روش سرعت آن است. به دلیل سرعت رشد بالای زمان سرچ نسبت به تعداد پارامترها استفاده از این روش در دادههای عظیم عملا غیر ممکن یا بسیار پرهزینه است. تصور کنید که به جای دو متغیر با چهار متغیر در بازههای زیر مواجه هستیم :

برای به دست آوردن تعداد تمام ترکیبهای ممکن باید تعداد گام هارا در یکدیگر ضرب کنیم (24300= 30*9*9*10) پس ما 24300 حالت برای تست خواهیم داشت با فرض آن که هر یک تست تنها 1 ثانیه وقت ببرد تمام پروسه بهینهیابی تقریبا 7 ساعت به طول خواهد انجامید. توجه داشته باشید که ما در این مثال از گامهای بزرگ (تعداد حالات کمتر) استفاده کردهایم در صورتی که تست را بر روی تعداد گامهای کوچکتر (تعداد حالات بیشتر) اجرا کنیم.
زمان مورد نیاز برای تکمیل پروسه بهینهیابی به شکل قابل توجهی افزایش خواهد یافت. و باید بدانید هنگامی که فضای بهینهیابی از دو بعد فراتر میرود تحلیل نتایج تقریبا غیرممکن خواهد شد . برای تستهایی که بر روی فضاهایی با ابعاد بیشتر صورت میپذیرند باید از الگوریتمهای بهینهیابی پیچیدهتری بهره ببریم که در مقالات بعدی به آنها خواهیم پرداخت.
– – –
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف، سوای این بحث که میتوان استراتژیهای معاملاتی خود را به وسیلهی سفارش کد پایتون یا سفارش کد mql و سفارش اکسپرت کد کرد و در پروسهی بک تست اعتبار سنجی نمود. همچنین میتوان از طریق سفارش اندیکاتور به آنها یک جنبهی نمایشی نمایانتری برای تسهیل تحلیل در سابقهی نماد داد.
– – –
در مقالهی بعدی به بررسی «الگوریتم Hill Climbing در روند بهینه یابی» میپردازیم.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.