بهینه‌سازی ربات معاملاتی در ترید واقعی

بهینه‌سازی ربات معاملاتی در ترید واقعی

مقدمه

همه فکر می‌کنند اکسپرتی که ورودی‌هایش مطابق با هیستوری تنظیم شده‌اند، در همان بار اول (و ترجیحاً) در مدت زمان کمی، قرار است به ما سود بدهد و سود بدهد… به‌طور غیرمستقیم تاییده‌هایی درباره‌ی این فرضیه، بعد از آنکه رقابت‌های قهرمانی ترید در سال ۲۰۰۶ را تماشا کردم، به گوش من رسیدند. وقتی این رقابت آغاز شد، اکسپرت‌های سوددده بسیاری نسبت به قبل در رقابت حاضر بودند، اما بعداً مشخص شد برخی از آنها اصلاً به درد رقابت نمی‌خورند. فکر می‌کنم دلیلش این باشد که بیشتر آن اکسپرت‌هایی که به خط پایان نرسیدند، فقط مطابق با هیستوری تنظیم شده بودند.

ایده‌ی بررسی این فرضیه در عمل، در انجمن روسی این وب‌سایت، در بخش سیستم‌های ایده‌آل برای ترید خودکار، متولد شد. ایده‌ی اصلی این است که بهینه‌سازی یک اکسپرت را یک بار در روز، انجام دهیم و سپس نتایج بدست‌آمده از بهینه‌سازی را تحلیل کرده و آن‌ها را در متغیرهای اکسپرت ثبت کنیم.

برای اجرای این ایده، تصمیم گرفتیم از اکسپرت آماده، یعنی MACD Sample، در نرم‌افزار متاتریدر ۴ استفاده کنیم و تابع بهینه‌سازی خودکار خودمان را درون آن وارد کنیم. کمی بعد، کد آن بهینه‌سازِ خودکار، آماده بود، و در همان انجمن در بخش بهینه‌ساز خودکار، آپلود شد. بعد از گذشت مدتی، اولین تاییدها درباره‌‌ی این ایده در همان جا ظاهر شدند. سپس، بهینه‌ساز ما به یک کتابخانه‌ی mqh برای به‌کارگیری بهتر، منتقل شد.

نصب بهینه‌ساز خودکار

برای انجام این کار مراحل زیر را طی کنید:

  • MACD Sample_1.mq4 را در پوشه‌ی “expert” نرم‌افزار متاتریدر ۴ کپی کنید. قطعاً نرم‌افزار باید به اینترنت متصل باشد، و
  • این پوشه، همراه با نرم‌افزار متاتریدر ۴ را در یک جای جدید کپی کنید.

برای راحتی کار، از اینجا به بعد، نرم‌افزار اصلی [متاتریدر] را “نرم‌افزار / Terminal” و کپی آن را “Terminal-Tester” می‌نامیم. با همان اکسپرتی که به‌طور پیش‌فرض در خود نرم‌افزار بود، و ما کمی آن را تغییر دادیم، یعنی MACD Sample_1.mq4، در تایم‌فریم H1، روی EURUSD، یک تست می‌گیریم.

نصب بهینه‌ساز خودکار

Terminal-Tester Setup

یادتان نرود حتماً MACD Sample_1.mq4 را در Terminal-Tester کامپایل کنید. ابتدا نرم‌افزار (Client Terminal) را باز کرده و سپس سراغ استراتژی‌تستر بروید. باید مطابق با تصویر زیر آن را تنظیم کنید.

Terminal-Tester Setup

بهینه‌سازی برای سه روز انجام خواهد شد. سه روز برای بررسی بهینه‌ساز خودکار کاملاً خوب و کافی است. تاربخ بهینه‌سازی (“From”) را مطابق با این فرمول انتخاب می‌کنیم: تاریخ کنونی منهایِ سه روز. حین بهینه‌سازی، هیستوری مورد نیاز برای اَرز انتخاب‌شده (در اینجا EURUSD) باید دانلود شود.

کسانی که بهینه‌سازی را برای اولین بار انجام می‌دهند، می‌توانند توضیحات مربوط به روش انجام کار را در منوی Help نرم‌افزار متاتریدر ۴، بیابند: <Help – Help Topics F1 – Auto Trading – Expert Optimization – Setup>. یا اینکه می‌توانند این مقاله را بخوانند: Testing of Expert Advisors in the MetaTrader 4 Client Terminal: An Outward Glance.

همانطور که در تصویر زیر نشان داده شده‌است، متغیرها را برای بهینه‌سازی انتخاب می‌کنیم.

Terminal-Tester Setup

بهینه‌سازی خودکار محدود به ۴ متغیر است، اما به‌منظور از دست ندادن زمان، داشتن فقط سه متغیر هم کار ما را راه می‌اندازد و کافیست. بعد از اینکه متغیرها انتخاب شدند، بیایید تنظیمات بهینه‌سازی را در فایل تنظیمات به‌نام MACD Sample_1.set، ذخیره کنیم. این فایل باید در پوشه‌ای از Terminal-Tester ذخیره شود که نام آن پوشه “tester” است. سپس پیش-بهینه‌سازی (pre-optimization) را اجرا کرده و زمان شروع را نیز به‌یاد داشته باشید. این کار برای محاسبه‌ی دوره‌ی زمانیِ مورد نیاز برای بهینه‌سازی خودکار با پارامترهای از پیش تعیین‌شده، لازم است. بعد از اینکه بهینه‌سازی تمام شد، زمان انتظار لازم را محاسبه خواهیم کرد. سپس باید این نرم‌افزار را ببندیم، چراکه، درغیر‌این‌‌صورت، قادر نخواهیم بود آن را برنامه‌ریزی‌شده اجرا کنیم.

تنظیمات اکسپرتی که در نرم‌افزار قرار دارد

برای انجام این کار، بیایید اکسپرت آزمایشی MACD Sample_1.mq4 را در متااِدیتور باز کرده و کارهای زیر را انجام دهیم:

– زمان شروع بهینه‌سازی خودکار را تعیین کنید، برای مثال، هر روز ساعت ۰۰:۰۱:

– تعداد روزها برای بهینه‌سازی را تعیین کنید (تعداد روزها باید برابر با تعداد روزهای تعیین‌شده برای         پیش-بهینه‌سازی باشد):

– زمان بهینه‌سازی و زمان انتظار، که قبلاً محاسبه کرده‌ایم، را در واحد دقیقه تعیین کنید. برای مثال، ۴ دقیقه:

– نام اکسپرت را وارد کنید:

– نام فایل تنظیمات، همراه با تنظیمات را وارد کنید:

– مسیر پوشه‌ای که Terminal-Tester نصب‌شده درون آن است را وارد کنید، برای مثال:

– اولویت فیلترینگ را مشخص کنید:

– نام متغیرها را جهت بهینه‌سازی بنویسید:

– فایل پیوست‌شده‌ی auto_optimization.mqh را در پوشه‌ی “include” کپی کنید؛

– فایل کتابخانه (library file) را در اکسپرت وارد کنید:

– فقط این باقی می‌ماند که کد زیر را در ابتدای تابع start() اکسپرت خودتان کپی کنید.   MACD Sample_1.mq4 این بخش را در خود دارد (نیازی به این کار نیست).

کار همین بود. بعد از اینکه بهینه‌ساز خودکار، مجدد کامپایل شد، می‌توانید آن را اجرا کنید. اما شاید فقط بتوانید آن را برای همان اَرز و تایم‌فریمی استفاده کنید که پیش-‌بهینه‌سازی برای آن‌ها انجام شده‌است. در اینجا می‌شود: EURUSD در تایم‌فریم H1. برای بررسی بهینه‌ساز خودکار، می‌توانید کدی که در پایین آورده شده‌است را در تابع int init() وارد کرده، آنگاه بهینه‌ساز خودکار هنگام شروع به‌ کار اکسپرت، [با آن] اجرا خواهد شد.

بهینه‌ساز خودکار چگونه کار می‌کند؟

بهینه‌ساز خودکار برمبنای استفاده از Terminal-Tester جهت بهینه‌سازی پارامترهای اکسپرتی که روی نمودار Terminal اجرا شده‌است، کار می‌کند. برای انجام این کار، برنامه، فایلی را به Terminal-Tester می‌فرستد که شامل پارامترهای بهینه‌سازی می‌شود (optimise.ini) و Terminal-Tester را در حالت بهینه اجرا می‌کند. سپس، نتایج بدست‌آمده از “FileReport……..htm” را در Terminal کپی می‌کند و بهترین مقادیر نتایج بدست‌آمده را فیلتر می‌کند.

بهینه‌ساز خودکار چگونه کار می‌کند

جزئیات بیشتر درباره‌ی چگونگی عملکرد بهینه‌ساز خودکار

در زمان از پیش تعیین‌شده، برای مثال، ۰۰:۰۱، بهینه‌ساز خودکار باید اجرا شود. متغیرها نیز باید با مقادیر پُر شوند.

آنگاه پارامترهای فایل ini در آرایه رشته‌ای نوشته می‌شوند:

پارامترهای بهینه‌سازی از آرایه (array) درون فایل ini ثبت می‌شوند. می‌توانید در بخش Help نرم‌افزار متاتریدر ۴، درباره‌ی اینکه چگونه فایل‌های ini ایجاد می‌شوند، مطالعه داشته باشید. <Help – Help Topics F1 – Tools – Configuration at Startup>.

بعد از اینکه پارامترها در فایل ini ذخیره شدند، shell32.dll موجود در standard Windows delivery، متصل شده و تابع ShellExecuteA اجرا می‌شود.

فایلی که حاوی پارامترها است، به پوشه‌ی Terminal Tester فرستاده خواهد شد.

آنگاه تستر اجرا شده و شروع به بهینه‌سازی متغیرهای از پیش تعریف‌شده، می‌کند. اکسپرت حین بهینه‌سازی، در وضعیت ساکن (توقف) قرار دارد.

بعد از اینکه بهینه‌سازی کامل شد، تستر به‌طور خودکار نتایج را در فایل گزارش ثبت می‌کند. این فایل به پوشه‌ای کپی می‌شود که نرم‌افزار درون آن است.

آنگاه داده‌های فایل گزارش، در آرایه رشته‌ای جهت پردازش‌های بیشتر، جای می‌گیرند.

آنگاه مقادیر مورد نیاز در آرایه، انتخاب می‌شوند:

بعد از آن، نتایح بدست‌آمده، قبل از اینکه به‌شکل عددی در بیایند، فیلتر می‌شوند، و حداقل و حداکثر مقدار معاملات مشخص می‌شوند. صفر در مقدار Profit_Factor، جای خودش را به‌خاطر مرتب‌سازی صحیح و پس از آن غربالگری، به ۱۰۰۰ می‌دهد.

 

سپس مقادیر بررسی می‌شوند تا تکراری در میان آن‌ها نباشد و آنگاه فیلتر می‌شوند.

بعد از آن، مقادیری که برای مرتب‌سازی آماده شده‌اند، در آرایه نوشته می‌شوند.

آنگاه داد‌ه‌ها را به ترتیب اولویتی که از پیش تعیین شده‌است، آنالیز می‌کنند. آنالیز به این شکل انجام می‌شود:

  • حلقه اجرا می‌شود، و در گام اول (first pass)، مقادیر بر اساس اولین پارامتر مرتب می‌شوند، برای مثال، بر اساس حداکثر سود؛ چند تا از بهترین مقادیر انتخاب شده‌اند (۱۲، به‌طور پیش‌فرض)، و بقیه حذف می‌شوند؛
  • در گام دوم، مقادیر بر اساس پارامتر دوم، مرتب می‌شوند، برای مثال، بر اساس Profit Factor؛ برخی از بهترین مقادیر انتخاب می‌شوند، نیمی از آنها بعد از اولین مرتب‌سازی، و بقیه حذف می‌شوند.
  • و در گام سوم، مرتب‌سازی آخر بر اساس پارامتر سوم انجام می‌شود، برای مثال، بر اساس بازپرداخت مورد انتظار؛ نیمی از مقادیر بعد از مرتب‌سازی دوم اخذ می‌شوند و بقیه حذف می‌گردند.

مقادیری که به این سبک فیلتر شده‌اند، در متغیرهای جهانی نوشته می‌شوند. مقادیر متغیرهای جهانی در اکسپرت ما جایگزین می‌گردند.

نتایج عملکرد بهینه‌ساز خودکار

نتایج عملکرد بهینه‌ساز خودکار را می‌توانید با استفاده از پیام‌هایی که در گوشه‌ی سمت چپ، بالای نمودار، ظاهر می‌شوند، مشاهده کنید. تصویر زیر مثالی از این موضوع است:

نتایج عملکرد بهینه‌ساز خودکار

زمان مرجع تکمیل بهینه‌سازی[۱].

نتایج عملکرد بهینه‌ساز خودکار

تحلیل مقادیر بدست‌آمده بعد از بهینه‌سازی.

تحلیل مقادیر بدست‌آمده بعد از بهینه‌سازی.

مقادیر نتیجه‌یِ متغیرها[۲].

اگر نتایج بهینه‌سازی در پیام ظاهر شد، بدان معناست که بهینه‌سازی تمام شده‌است و داده‌ها دریافت شده‌اند.

برای اینکه بتوانیم به‌صورت جداگانه، کار بهینه‌ساز خودکار را ارزیابی کنیم، ممکن است بگویید تمام فایل‌هایی را که حاوی داده‌های متوسط هستند و حین فرآیند کاری ذخیره‌ شده‌اند را، باید بررسی کنیم. تستر، داده‌ها را در فایلی با نام “FileReport_EURUSD_2007.03. 12.htm” ذخیره می‌کند، که در آن نماد (symbol) و داده‌ها در نام فایل، مطابق با نماد انتخاب‌شده و تاریخ کنونی بهینه‌سازی، جایگزین می‌شوند. این فایل را می‌توانید در پوشه‌ی Terminal-Tester پیدا کنید. این فایل‌ها همراه با گزارش‌ها به‌طور خودکار پاک نمی‌شوند، بنابراین فرد می‌تواند از آن‌ها برای بررسی تغییرات پارامترها استفاده کند.

مقادیر نتیجه‌یِ متغیرها

فایل بعدی، FileTest1.csv، بعد از اینکه مقادیر فیلتر شدند و مقدار معاملات مشخص شد، و کپی‌ها حذف شدند، ذخیره می‌شود. مسیر ذخیره‌ی این فایل: D:\Program Files\terminal_folder_name\experts\files

مقادیر نتیجه‌یِ متغیرها

سپس مقادیری که پس از هر مرحله غربالگری بدست می‌آید، درون FileTest2.csv ذخیره می‌شوند. این فایل هم در همان پوشه‌ی قبلی ذخیره می‌شود.

مقادیر نتیجه‌یِ متغیرها

جدول بالا نشان می‌دهد که چگونه مقادیر بدست‌آمده فیلتر شده‌اند. ترتیب فیلترینگ به‌طور پیش‌فرض اینگونه تعیین شده‌است: ۱- Gross_Profit، ۲- Profit_Factor، ۳- Expected_Payoff.

کد بهینه‌ساز خودکار حاوی کامنت‌هایی با جزئیات است، و در صورت نیاز می‌توانید بهترین پارامترهای متغیر را انتخاب کنید. برای مثال، قصد دارید اکسپرت خود را برای یک بازه‌ی زمانی غیر از روز‌های اخیر بهینه‌سازی کنید، یا می‌خواهید مقدار معاملات را در دوره‌ی بهینه‌سازی، کاهش/افزایش دهید. برای انجام این کار می‌بایستی مستقیماً متغیرهای مربوطه را در auto_optimization.mqh تغییر دهید.

نتیجه‌گیری

این مقاله قصد نداشت به تازه‌کارها اِلمان‌های بهینه‌سازی را آموزش دهد. بنابراین، پیشنهاد می‌شود قبل از اینکه سراغ بهینه‌سازی خودکار بروید، حتماً بهینه‌سازی معمولی را یاد بگیرید. بهتر این است، از بهینه‌ساز خودکار زمانی استفاده کنید که، متغیرهای پایه، که روی اکسپرت شما در زمان‌های مختلف، تاثیرات مختلفی می‌گذارند را، انتخاب کرده باشید. به‌عبارت دیگر، بهتر است از این بهینه‌ساز خودکار برای مطابقت دادن پارامترهای متغیرها، با تغییراتی که روی عملکرد اکسپرت شما، بسته به نوسانات بازار، بیش از دیگر پارامترها در متغیرهای دیگر، تاثیر می‌گذارند، استفاده کنید.

علاوه بر این‌ها، بهتر این است که دوره‌ی بهینه‌سازی را خیلی طولانی درنظر نگیرید. فرض کنید اکسپرت، ۶ الی ۱۲ ساعت هر روز، بهینه‌سازی شود، آنگاه این سوال پیش می‌آید: پس کی ترید کنیم؟ به‌عبارت دیگر، بهینه‌سازی به خودی خود، نیاز نیست. پیشنهاد می‌شود تناوب بهینه‌‌سازی (منظور، تناوب اجرای بهینه‌ساز است) را با درنظر گرفتن تایم‌فریمی که روی آن اکسپرت قرار است ترید کند، تعیین کنید. این یعنی اینکه ضروری است درنظر داشته باشیم که داده‌های هیستوری هنگامیکه Tester-Terminal شروع به کار می‌کند، به‌نوعی پمپاژ می‌شوند و ممکن است بروکر داده‌های هیستوری مورد نیاز برای یک بازه‌ی زمانی خاص را در اختیار نداشته باشد. برای تایید فرضیه‌ای که در ابتدای این مقاله به آن اشاره شد، نیاز دارید ۲۴ ساعت اتصال اینترنت قوی، پایدار و بدون قطعی داشته باشید.

برنامه‌های بهینه‌سازی خودکاری که توسعه‌ داده شدند، در فایل‌های پیوست‌شده موجود هستتند: auto_optimization.mqh – خود کتابخانه، MACD Sample_1.mq4 – که نسخه‌ی کمی تغییرداده‌شده‌ی اکسپرتی است که در نرم‌افزار متاتریدر ۴ موجود است.

این مقاله دارای فایل پیوست است.

[۱]) Optimization Completeness Reference Time

[۲]) Resulting Values of Variables


مقالات پیشنهادی :

امینی

→ خواندن مطلب قبلی

یک‌بار دیگر زیگزاگ‌ها

خواندن مطلب بعدی ←

تبدیل کد اندیکاتور به کد اکسپرت. طرح‌های کلی ساختاری یک اکسپرت و توابع اندیکاتور

نوشتن نظر شما

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *