آموزش Walk Forward Optimization در متاتریدر ۵؛ از مفهوم تا اجرای عملی

فرض کن یک اکسپرت معاملاتی در متاتریدر ۵ با زبان MQL5 ساخته‌ای. چندین ترکیب از پارامترهای آن را روی داده‌های تاریخی امتحان می‌کنی و در نهایت به تنظیماتی می‌رسی که سود بالایی دارند و نمودار موجودی حساب را به شکل جذابی افزایش می‌دهند. آیا می‌توانی با خیال راحت همین اکسپرت را وارد حساب واقعی کنی؟

نه لزوماً!

ممکن است اکسپرت تو واقعاً یک مزیت معاملاتی داشته باشد؛ اما این احتمال هم وجود دارد که تنظیمات آن بیش از حد با گذشته هماهنگ شده باشند. در این حالت، ربات به‌جای شناسایی الگوهای قابل‌استفاده در بازار، به جزئیات تصادفی داده‌های تاریخی واکنش نشان می‌دهد. نتیجه می‌تواند یک بک‌تست عالی و عملکردی ضعیف در معاملات واقعی باشد.

اینجاست که Walk Forward Optimization در متاتریدر ۵ اهمیت پیدا می‌کند. این روش کمک می‌کند بررسی کنی که آیا پارامترهای بهینه‌شده اکسپرت در دوره‌های زمانی مختلف و روی داده‌هایی که هنگام بهینه‌سازی ندیده است نیز عملکرد قابل‌قبولی دارند یا نه.

در این راهنما یاد می‌گیری Walk Forward Optimization چیست، چه تفاوتی با بک‌تست و Forward Testing معمولی دارد، چگونه آن را در MT5 اجرا کنی و هنگام بررسی نتایج به چه نکاتی توجه داشته باشی.

Walk Forward Optimization چیست؟

Walk Forward Optimization که معمولاً با نام اختصاری WFO شناخته می‌شود، روشی برای ارزیابی پایداری استراتژی‌های معاملاتی است. در این روش، ابتدا پارامترهای استراتژی را با استفاده از داده‌های یک دوره تاریخی بهینه می‌کنیم؛ سپس تنظیمات انتخاب‌شده را روی یک دوره زمانی بعدی که در بهینه‌سازی استفاده نشده است، آزمایش می‌کنیم.

نمودار شماتیک برای بهینه سازی Walk forward

بعد این فرایند را چندین بار تکرار می‌کنیم و هر بار بازه‌های زمانی را به جلو می‌بریم.

برای مثال، فرض کن اکسپرت تو از دو میانگین متحرک، حد ضرر و حد سود استفاده می‌کند. پارامترهای قابل‌تنظیم آن ممکن است شامل این موارد باشند:

  • دوره میانگین متحرک سریع؛
  • دوره میانگین متحرک کند؛
  • ضریب حد ضرر؛
  • ضریب حد سود.

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

اما در Walk Forward Optimization، ابتدا پارامترها را روی بخشی از این پنج سال بهینه می‌کنی، بعد آن‌ها را در بازه بعدی آزمایش می‌کنی. سپس با حرکت به جلو، همین چرخه را دوباره انجام می‌دهی.

هدف این نیست که صرفاً بهترین نتیجه تاریخی را پیدا کنیم؛ هدف این است که بفهمیم آیا استراتژی پس از تغییر شرایط بازار همچنان می‌تواند عملکرد قابل‌قبولی داشته باشد؟

تفاوت Walk Forward Optimization با بک‌تست معمولی چیست؟

برای درک تفاوت این روش‌ها، باید با سه اصطلاح مهم آشنا شوی.

۱. بک‌تست (Backtesting)

در بک‌تست، استراتژی معاملاتی یا اکسپرت را روی داده‌های تاریخی اجرا می‌کنی تا ببینی در گذشته چه عملکردی داشته است.

برای مثال، اکسپرت را روی داده‌های EURUSD از سال ۲۰۲۰ تا پایان ۲۰۲۴ اجرا می‌کنی و سود، ضرر، تعداد معاملات و افت سرمایه آن را بررسی می‌کنی.

بک‌تست برای ارزیابی اولیه استراتژی ضروری است؛ اما اگر تمام تصمیم‌های توسعه و تنظیم استراتژی را بر اساس همین داده‌ها بگیری، احتمال بیش‌برازش افزایش پیدا می‌کند.

۲. بهینه‌سازی استراتژی (Optimization)

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

برای مثال، ممکن است دوره میانگین متحرک سریع را از ۱۰ تا ۴۰ و میانگین متحرک کند را از ۵۰ تا ۲۰۰ با گام‌های مشخص تغییر دهی.

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

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

۳. تست فوروارد (Forward Testing)

در تست فوروارد، استراتژی یا پارامترهای انتخاب‌شده را روی بخشی از داده‌ها آزمایش می‌کنی که در مرحله بهینه‌سازی دخالتی نداشته‌اند.

این کار کمک می‌کند بررسی کنی نتیجه بهینه‌سازی فقط محصول هماهنگی با داده‌های گذشته نبوده باشد.

Walk Forward Optimization از همین منطق استفاده می‌کند؛ با این تفاوت که به یک تقسیم‌بندی ثابت اکتفا نمی‌کند و چرخه بهینه‌سازی و آزمون را چندین بار تکرار می‌کند.

روش

چه کاری انجام می‌دهد؟

محدودیت اصلی

بک‌تست

اجرای استراتژی روی داده‌های تاریخی

ممکن است نتیجه با گذشته بیش از حد هماهنگ شود

Optimization

جست‌وجوی ترکیب مناسب پارامترها

ممکن است بهترین ترکیب صرفاً نتیجه نویز تاریخی باشد

Forward Testing

آزمایش روی داده‌های جدا از بهینه‌سازی

یک بازه آزمون به‌تنهایی ممکن است نماینده شرایط مختلف بازار نباشد

Walk Forward Optimization

تکرار بهینه‌سازی و آزمون روی بازه‌های متوالی

به طراحی درست بازه‌ها و تحلیل دقیق نتایج نیاز دارد

چرا Walk Forward Optimization در متاتریدر ۵ اهمیت دارد؟

مهم‌ترین دلیل استفاده از WFO، کاهش احتمال بیش‌برازش (Overfitting) است.

بیش‌برازش در معاملات الگوریتمی یعنی چه؟

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

اما شاید این ترکیب در شرایط دیگر هیچ مزیتی نداشته باشد.

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

WFO این مشکل را کاهش می‌دهد؛ زیرا تنظیمات استراتژی باید در چند دوره متوالی و خارج از داده‌های بهینه‌سازی نیز ارزیابی شوند.

البته توجه داشته باش که Walk Forward Optimization بیش‌برازش را به‌طور کامل از بین نمی‌برد. اگر پس از مشاهده نتایج هر آزمون، بارها قوانین استراتژی را تغییر دهی تا سرانجام به نتیجه‌ای جذاب برسی، همچنان ممکن است به نویز داده‌های تاریخی وابسته شوی.

ارزیابی عملکرد در شرایط مختلف بازار

بازار همیشه در یک وضعیت نیست. ممکن است یک استراتژی در روندهای قوی عملکرد مناسبی داشته باشد، اما در بازار خنثی یا هنگام افزایش نوسان دچار افت شود.

با بررسی نتایج چند دوره متوالی می‌توانی بهتر تشخیص بدهی که:

  • سودآوری اکسپرت در طول زمان چقدر پایدار بوده است؛
  • آیا افت سرمایه در بعضی دوره‌ها به‌شدت افزایش یافته است؛
  • آیا عملکرد اکسپرت به چند ماه خاص وابسته است؛
  • آیا با تغییر شرایط بازار، کارایی استراتژی کاهش پیدا می‌کند.

این اطلاعات برای تصمیم‌گیری درباره ادامه توسعه استراتژی، تغییر پارامترها یا کنار گذاشتن آن ارزشمندند.

دو اصطلاح کلیدی در WFO: In-Sample و Out-of-Sample

پیش از اجرای Walk Forward Optimization باید تفاوت این دو اصطلاح را به‌خوبی درک کنی.

In-Sample (IS): بازه‌ای از داده‌های تاریخی که برای بهینه‌سازی پارامترهای اکسپرت استفاده می‌شود.

Out-of-Sample (OOS): بازه‌ای که برای ارزیابی پارامترهای انتخاب‌شده استفاده می‌شود و نباید در انتخاب همان پارامترها دخالت داشته باشد.

برای مثال، فرض کن قصد داری یک اکسپرت EURUSD را بررسی کنی.

اگر بازه ژانویه ۲۰۲۰ تا دسامبر ۲۰۲۱ را برای بهینه‌سازی انتخاب کنی و تنظیمات به‌دست‌آمده را روی ژانویه تا ژوئن ۲۰۲۲ آزمایش کنی، دوره اول In-Sample و دوره دوم Out-of-Sample خواهد بود.

در چرخه بعدی، بازه بهینه‌سازی را جلو می‌بری و آزمون را روی شش ماه بعد انجام می‌دهی.

نکته بسیار مهم این است که داده‌های OOS هر چرخه نباید برای انتخاب بهترین تنظیمات همان چرخه استفاده شوند. اگر بعد از دیدن نتایج OOS، تنظیماتی را صرفاً به دلیل سود بیشتر در همان دوره انتخاب کنی، استقلال آزمون تا حدی از بین می‌رود.

روش‌های مختلف Walk Forward Optimization

به‌طور کلی، دو روش رایج برای حرکت دادن پنجره‌های زمانی وجود دارد.

روش اول: Rolling Walk Forward

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

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

این روش زمانی مفید است که بخواهی وزن بیشتری به رفتار نسبتاً جدید بازار بدهی.

روش دوم: Anchored Walk Forward

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

برای مثال، چرخه اول از ژانویه ۲۰۲۰ تا دسامبر ۲۰۲۱ را بهینه می‌کند؛ چرخه بعدی از ژانویه ۲۰۲۰ تا ژوئن ۲۰۲۲ استفاده می‌کند و به همین ترتیب جلو می‌رود.

این روش اطلاعات تاریخی بیشتری را در هر چرخه وارد محاسبات می‌کند؛ اما داده‌های قدیمی نیز همچنان در بهینه‌سازی باقی می‌مانند.

هیچ‌کدام از این دو روش همیشه برتر نیستند. انتخاب بین آن‌ها به منطق استراتژی، میزان تغییرپذیری بازار و فرضیه‌ای که می‌خواهی بررسی کنی بستگی دارد.

آموزش Walk Forward Optimization در متاتریدر ۵

حالا به بخش عملی می‌رسیم.

برای اجرای این روش، ابتدا باید اکسپرتی داشته باشی که بتواند در Strategy Tester متاتریدر ۵ اجرا شود و پارامترهای موردنظر آن به‌عنوان ورودی قابل‌تنظیم تعریف شده باشند.

یک نکته مهم را از ابتدا بدان: گزینه Forward در Strategy Tester به‌تنهایی یک فرایند کامل و چندمرحله‌ای Walk Forward Optimization نیست. این گزینه یک بازه از داده‌های آزمایش را برای بهینه‌سازی و بخش پایانی آن را برای تست فوروارد جدا می‌کند. برای WFO واقعی باید این چرخه را با جابه‌جایی تاریخ‌ها تکرار کنی یا از ابزار و کد اختصاصی برای خودکارسازی آن استفاده کنی.

مرحله اول: آماده‌سازی اکسپرت

قبل از شروع، مطمئن شو اکسپرت در Strategy Tester به‌درستی اجرا می‌شود. اگر هنوز استراتژی‌ات را به یک ربات معاملاتی تبدیل نکرده‌ای، پیشنهاد می‌کنیم راهنمای تبدیل اندیکاتور به اکسپرت را بخوانی تا با مراحل تبدیل منطق معاملاتی به یک اکسپرت قابل تست آشنا شوی.

همچنین بهتر است:

  1. پارامترهایی را که واقعاً قصد بهینه‌سازی آن‌ها را داری مشخص کنی.
  2. محدوده منطقی هر پارامتر را تعیین کنی.
  3. از صحت داده‌های تاریخی و تنظیمات تست مطمئن شوی.
  4. کمیسیون، سواپ، اسپرد و شرایط اجرای معاملات را تا حد امکان واقع‌بینانه تنظیم کنی.
  5. اطمینان حاصل کنی که اکسپرت در محاسبات خود ناخواسته از اطلاعات آینده استفاده نمی‌کند.

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

مرحله دوم: ورود به Strategy Tester

در متاتریدر ۵، پنجره Strategy Tester را باز کن. معمولاً می‌توانی با فشردن کلیدهای Ctrl + R به آن دسترسی پیدا کنی.

در بخش تنظیمات، موارد زیر را انتخاب کن:

  • Expert: اکسپرتی که می‌خواهی بررسی کنی؛
  • Symbol: نماد معاملاتی، برای مثال EURUSD؛
  • Period: تایم‌فریم موردنظر، مثلاً H1؛
  • Date: بازه تاریخی مورد استفاده در تست؛
  • Optimization: حالت بهینه‌سازی، در صورتی که قصد اجرای Optimization داری.

تنظیمات استراتژی تستر متاتریدر ۵

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

مرحله سوم: تعریف پارامترهای قابل‌بهینه‌سازی

در بخش Inputs، ورودی‌های اکسپرت نمایش داده می‌شوند.

برای پارامترهای موردنظر، گزینه مربوط به بهینه‌سازی را فعال کن و مقادیر Start، Step و Stop را تعیین کن.

فرض کن دوره میانگین متحرک سریع را چنین تعریف کرده‌ای:

گزینه

مقدار نمونه

Start

10

Step

5

Stop

40

در این حالت، متاتریدر مقادیر ۱۰، ۱۵، ۲۰، ۲۵، ۳۰، ۳۵ و ۴۰ را آزمایش می‌کند.

این اعداد صرفاً مثال هستند. محدوده پارامترها باید بر اساس منطق استراتژی انتخاب شود، نه با هدف رسیدن به بیشترین سود تاریخی.

مرحله چهارم: تنظیم گزینه Forward

در بخش تنظیمات Strategy Tester، گزینه Forward را پیدا کن.

این گزینه معمولاً حالت‌های زیر را در اختیار تو قرار می‌دهد:

  • No
  • 1/2
  • 1/3
  • 1/4
  • Custom

اگر حالت 1/3 را انتخاب کنی، بخش پایانی بازه تعیین‌شده برای تست فوروارد اختصاص داده می‌شود و بخش ابتدایی برای بهینه‌سازی استفاده خواهد شد.

برای مثال، اگر بازه کلی تست از ژانویه ۲۰۲۰ تا دسامبر ۲۰۲۲ باشد و یک‌سوم پایانی به تست فوروارد اختصاص پیدا کند، متاتریدر دوره ابتدایی را برای بهینه‌سازی و بخش پایانی را برای آزمون تنظیمات منتخب استفاده می‌کند.

در حالت Custom می‌توانی تاریخ شروع فوروارد را خودت تعیین کنی.

این قابلیت برای انجام هر چرخه WFO بسیار کاربردی است؛ زیرا می‌توانی دوره بهینه‌سازی و دوره آزمون بعد از آن را دقیقاً مشخص کنی.

مرحله پنجم: انتخاب معیار بهینه‌سازی

در Strategy Tester باید مشخص کنی که متاتریدر بر اساس چه معیاری پارامترها را رتبه‌بندی کند.

ممکن است بیشترین سود خالص معیار مناسبی به نظر برسد؛ اما انتخاب پارامتر صرفاً بر اساس Net Profit می‌تواند ترکیب‌هایی را ترجیح دهد که سود بیشتری دارند ولی افت سرمایه بسیار بالاتری نیز ایجاد می‌کنند.

معیارهایی که ارزش بررسی دارند عبارت‌اند از:

  • Net Profit: سود یا زیان خالص؛
  • Profit Factor: نسبت سود ناخالص به زیان ناخالص؛
  • Expected Payoff: میانگین نتیجه مالی هر معامله؛
  • Drawdown: میزان افت سرمایه؛
  • Sharpe Ratio: معیاری برای ارزیابی بازده نسبت به نوسان آن.

هیچ‌کدام از این معیارها به‌تنهایی تضمین‌کننده کیفیت استراتژی نیستند. بهتر است نتیجه را با چند شاخص مکمل بررسی کنی و به تعداد معاملات نیز توجه داشته باشی.

برای مثال، Profit Factor بسیار بالا در استراتژی‌ای که فقط چند معامله انجام داده، ممکن است شواهد کافی برای اثبات پایداری آن فراهم نکند.

مرحله ششم: اجرای بهینه‌سازی و بررسی نتایج

پس از تنظیم پارامترها و تاریخ‌ها، تست را اجرا کن.

در نتایج Strategy Tester می‌توانی عملکرد ترکیب‌های مختلف را بررسی کنی و نتایج دوره بهینه‌سازی را با دوره فوروارد مقایسه کنی.

نتایج بهینه سازی و فوروارد تست در WFO

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

نکته مهم: متاتریدر در Forward Optimization معمول خود، تعدادی از بهترین ترکیب‌های حاصل از بهینه‌سازی را روی دوره فوروارد نیز آزمایش می‌کند. مطابق مستندات رسمی، تعداد ترکیب‌های منتخب به روش جست‌وجو بستگی دارد. بنابراین نباید صرفاً ترکیبی را انتخاب کنی که در تب Forward بیشترین سود را نشان می‌دهد؛ انتخاب پارامترهای هر چرخه باید بر اساس معیارهای از پیش تعیین‌شده در بخش In-Sample باشد و عملکرد OOS برای ارزیابی مستقل استفاده شود.

تا اینجا یک تقسیم‌بندی بهینه‌سازی و فوروارد را انجام داده‌ای. برای تبدیل آن به Walk Forward Optimization واقعی، باید این فرایند را چند بار تکرار کنی.

اجرای Walk Forward Optimization واقعی با چند چرخه زمانی

برای روشن شدن روش کار، فرض کن داده‌های EURUSD از ژانویه ۲۰۲۰ تا پایان دسامبر ۲۰۲۴ در دسترس است. می‌خواهی در هر چرخه از دو سال داده برای بهینه‌سازی و از شش ماه بعد برای آزمون استفاده کنی.

یک برنامه نمونه به این شکل خواهد بود:

چرخه

بازه In-Sample برای بهینه‌سازی

بازه Out-of-Sample برای آزمون

۱

ژانویه ۲۰۲۰ تا دسامبر ۲۰۲۱

ژانویه تا ژوئن ۲۰۲۲

۲

ژوئیه ۲۰۲۰ تا ژوئن ۲۰۲۲

ژوئیه تا دسامبر ۲۰۲۲

۳

ژانویه ۲۰۲۱ تا دسامبر ۲۰۲۲

ژانویه تا ژوئن ۲۰۲۳

۴

ژوئیه ۲۰۲۱ تا ژوئن ۲۰۲۳

ژوئیه تا دسامبر ۲۰۲۳

۵

ژانویه ۲۰۲۲ تا دسامبر ۲۰۲۳

ژانویه تا ژوئن ۲۰۲۴

۶

ژوئیه ۲۰۲۲ تا ژوئن ۲۰۲۴

ژوئیه تا دسامبر ۲۰۲۴

این تاریخ‌ها صرفاً برای توضیح روش هستند؛ طول مناسب پنجره‌ها به استراتژی و تایم‌فریم بستگی دارد.

مراحل اجرای هر چرخه

۱. بازه In-Sample را تعیین کن.

برای چرخه اول، داده‌های ژانویه ۲۰۲۰ تا دسامبر ۲۰۲۱ را برای بهینه‌سازی در نظر بگیر.

۲. پارامترهای مناسب را انتخاب کن.

اکسپرت را با محدوده پارامترهای تعریف‌شده بهینه‌سازی کن و تنظیماتی را انتخاب کن که بر اساس معیارهای از پیش تعیین‌شده و رفتار پایدار پارامترها قابل‌دفاع باشند.

۳. تنظیمات انتخاب‌شده را در بازه بعدی آزمایش کن.

پارامترها را روی ژانویه تا ژوئن ۲۰۲۲ آزمایش کن. این بازه نباید در انتخاب پارامترهای همان چرخه دخالت داشته باشد.

۴. نتیجه را ثبت کن.

سود و زیان، افت سرمایه، Profit Factor، تعداد معاملات و سایر شاخص‌های مهم را یادداشت کن.

۵. پنجره‌ها را به جلو ببر.

در چرخه دوم، بازه بهینه‌سازی را به ژوئیه ۲۰۲۰ تا ژوئن ۲۰۲۲ منتقل کن و تنظیمات جدید را در شش ماه بعد آزمایش کن.

۶. چرخه‌ها را تا پایان داده‌ها تکرار کن.

در پایان، عملکرد تمام دوره‌های OOS را به ترتیب زمانی کنار هم قرار بده تا بتوانی عملکرد ترکیبی خارج از نمونه را ارزیابی کنی.

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

این فرایند را چگونه در MT5 اجرا کنیم؟

برای اجرای هر چرخه می‌توانی از همان گزینه Forward استفاده کنی:

  1. محدوده Date را از ابتدای دوره In-Sample تا انتهای دوره Out-of-Sample قرار بده.
  2. گزینه Forward را روی Custom تنظیم کن.
  3. تاریخ شروع Forward را برابر با ابتدای دوره Out-of-Sample قرار بده.
  4. بهینه‌سازی و آزمون را اجرا کن.
  5. نتایج موردنیاز را ثبت کن و تاریخ‌ها را برای چرخه بعدی جابه‌جا کن.

در این روش، تاریخ شروع Forward تعیین می‌کند که کدام بخش به بهینه‌سازی و کدام بخش به آزمون اختصاص پیدا کند.

اگر تعداد چرخه‌ها زیاد باشد، تکرار دستی این کار وقت‌گیر خواهد شد. برای پروژه‌های جدی‌تر می‌توان از ابزارهای خودکارسازی یا کدنویسی MQL5 استفاده کرد.

چگونه نتایج Walk Forward Optimization را تحلیل کنیم؟

اجرای چرخه‌ها فقط نیمی از کار است. بخش مهم‌تر این است که بفهمی نتایج چه چیزی درباره استراتژی می‌گویند.

۱. منحنی موجودی ترکیبی دوره‌های OOS را بررسی کن

نتایج تمام دوره‌های خارج از نمونه را به ترتیب زمانی کنار هم قرار بده.

این منحنی نشان می‌دهد که استراتژی در مجموعه‌ای از دوره‌هایی که برای بهینه‌سازی همان چرخه‌ها استفاده نشده‌اند، چه عملکردی داشته است.

اگر مجموع سود مثبت باشد، اما یک دوره طولانی افت شدید سرمایه وجود داشته باشد، نباید نتیجه را صرفاً موفق ارزیابی کنی.

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

۲. افت سرمایه را جدی بگیر

فرض کن دو اکسپرت در مجموع دوره‌های OOS سود مشابهی داشته‌اند. اکسپرت اول افت سرمایه نسبتاً محدودی را تجربه کرده، اما اکسپرت دوم در میانه آزمون چندین افت شدید داشته است.

در این وضعیت، سود نهایی به‌تنهایی تصویر کاملی از ریسک ارائه نمی‌کند.

برای مقایسه استراتژی‌ها، حداکثر افت سرمایه (Maximum Drawdown)، مدت دوره‌های افت و نحوه بازگشت سرمایه را نیز بررسی کن.

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

۳. عملکرد هر دوره را جداگانه تحلیل کن

فقط به مجموع نتایج نگاه نکن.

ممکن است سود نهایی ترکیبی مثبت باشد، اما تقریباً تمام آن در یک دوره خاص به دست آمده باشد. چنین نتیجه‌ای با استراتژی‌ای که در شرایط متنوع بازار عملکرد نسبتاً یکنواختی دارد، یکسان نیست.

بهتر است مشخص کنی استراتژی در چه شرایطی موفق و در چه شرایطی ناموفق بوده است.

۴. تعداد معاملات را در نظر بگیر

یک دوره فوروارد با سه معامله نمی‌تواند به‌اندازه یک دوره با صدها معامله درباره عملکرد بلندمدت استراتژی اطلاعات بدهد.

البته تعداد زیاد معاملات نیز به‌تنهایی نشانه کیفیت نیست؛ اما تعداد کم معاملات می‌تواند باعث شود معیارهایی مانند Profit Factor یا بازده دوره‌ای بسیار ناپایدار باشند.

بنابراین، نتایج را در کنار تعداد معاملات و ماهیت استراتژی تفسیر کن.

چرا نباید فقط بهترین ترکیب پارامترها را انتخاب کنیم؟

یکی از نکات مهم، تفاوت میان پیدا کردن بهترین مقدار منفرد و پیدا کردن یک محدوده پایدار از پارامترهاست.

فرض کن دو ترکیب پارامتر در بک‌تست نتایج زیر را دارند:

ویژگی

ترکیب A

ترکیب B

سود تاریخی

بسیار بالا

نسبتاً بالا

حساسیت به تغییر پارامترها

زیاد

کمتر

عملکرد تنظیمات مجاور

ضعیف

نسبتاً مشابه

ریسک بیش‌برازش

بالقوه بیشتر

بالقوه کمتر

ترکیب A در نگاه اول جذاب‌تر است؛ اما اگر با تغییر جزئی یک پارامتر نتیجه آن به‌شدت افت کند، احتمال دارد فقط در یک نقطه خاص از فضای پارامترها عملکرد خوبی داشته باشد.

در مقابل، اگر ترکیب B در محدوده‌ای از مقادیر مجاور نیز نتیجه نسبتاً مشابهی تولید کند، می‌تواند گزینه قابل‌دفاع‌تری باشد.

به چنین محدوده‌ای که عملکرد در آن با تغییرات کوچک پارامترها به‌شدت تخریب نمی‌شود، گاهی Stable Plateau یا ناحیه پایدار گفته می‌شود.

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

نکته مهم این است که ناحیه پایدار در بک‌تست همچنان باید با آزمون خارج از نمونه و بررسی ریسک تأیید شود؛ صرفاً مشاهده یک سطح هموار، سودآوری آینده را تضمین نمی‌کند.

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

هیچ طول پنجره‌ای وجود ندارد که برای تمام استراتژی‌ها بهترین باشد.

انتخاب بازه به تایم‌فریم، تعداد معاملات، منطق استراتژی و سرعت تغییر شرایط بازار بستگی دارد.

برای مثال، استراتژی‌ای که معاملات کوتاه‌مدت زیادی انجام می‌دهد، با یک استراتژی بلندمدت مبتنی بر روندهای چندماهه شرایط یکسانی ندارد.

هنگام انتخاب پنجره‌ها به این نکات توجه کن:

  • بازه In-Sample نباید بیش از حد کوتاه باشد. در این صورت ممکن است تعداد معاملات برای انتخاب پارامترهای قابل‌اعتماد کافی نباشد.
  • بازه In-Sample نباید بی‌دلیل طولانی باشد. ممکن است داده‌های بسیار قدیمی، شرایطی را وارد بهینه‌سازی کنند که دیگر برای بازار فعلی مناسب نیستند.
  • دوره Out-of-Sample باید برای استراتژی معنادار باشد. یک آزمون بسیار کوتاه ممکن است تنها یک وضعیت خاص بازار را پوشش دهد.
  • طول پنجره‌ها را فقط بر اساس بهترین نتیجه تاریخی انتخاب نکن. بهتر است دلیل انتخاب آن‌ها با منطق استراتژی سازگار باشد.

برای شروع می‌توانی چند طرح معقول را آزمایش کنی؛ مثلاً پنجره بهینه‌سازی ۱۲، ۲۴ یا ۳۶ ماهه را با دوره‌های آزمون متفاوت مقایسه کنی. این اعداد صرفاً نقطه شروع هستند و توصیه عمومی برای همه استراتژی‌ها محسوب نمی‌شوند.

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

اگر در طراحی استراتژی معاملاتی، انتخاب پارامترهای مناسب یا ارزیابی عملکرد سیستم خودت به راهنمایی بیشتری نیاز داری، می‌توانی خدمات منتورینگ و طراحی سیستم معاملاتی اختصاصی عمادمی را بررسی کنی. این مسیر می‌تواند به تو کمک کند با دید منظم‌تری روی طراحی و ارزیابی سیستم معاملاتی‌ات کار کنی.

اشتباهات رایج در Walk Forward Optimization

انتخاب پارامتر بر اساس سود دوره فوروارد

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

برای ارزیابی معتبر، معیار انتخاب پارامتر باید پیش از مشاهده نتیجه OOS تعیین شود.

نادیده گرفتن هزینه‌های معاملات

اسپرد، کمیسیون، سواپ و لغزش قیمت می‌توانند بخش مهمی از سود استراتژی را از بین ببرند؛ به‌خصوص در استراتژی‌های پرتعداد یا کوتاه‌مدت.

اگر بک‌تست هزینه‌های واقعی معاملات را به‌درستی لحاظ نکند، ممکن است منحنی عملکرد غیرواقع‌بینانه‌ای تولید شود.

بهینه‌سازی تعداد زیادی پارامتر

هرچه تعداد پارامترها و ترکیب‌های آزمایش‌شده بیشتر شود، فرصت پیدا کردن نتیجه‌ای تصادفی و جذاب نیز افزایش پیدا می‌کند.

بهتر است پارامترهایی را بهینه‌سازی کنی که نقش مشخصی در منطق معاملاتی دارند و تعداد متغیرها را تا حد امکان معقول نگه داری.

تغییر مداوم استراتژی برای رسیدن به نتیجه مثبت

فرض کن چند بار WFO اجرا کرده‌ای و هر بار نتیجه نامطلوب بوده است. سپس قوانین ورود، خروج و مدیریت ریسک را تغییر می‌دهی تا بالاخره نتیجه مثبتی به دست آید.

اگر این تغییرات بدون فرضیه مشخص و صرفاً بر اساس نتایج تاریخی انجام شوند، ممکن است به همان مشکلی برسی که WFO قرار بود به کاهش آن کمک کند.

استفاده مجدد از داده نهایی آزمون

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

به همین دلیل، پس از توسعه و ارزیابی استراتژی، بهتر است یک دوره تاریخی جداگانه را برای بررسی نهایی کنار بگذاری و تصمیم‌های قبلی را بر اساس آن بازتنظیم نکنی.

توجه نکردن به کیفیت داده‌های تاریخی

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

به‌خصوص برای استراتژی‌هایی که به مسیر حرکت قیمت و زمان اجرای سفارش حساس هستند، انتخاب روش مناسب شبیه‌سازی اهمیت زیادی دارد.

چک‌لیست نهایی قبل از پذیرش نتایج WFO

پیش از اینکه نتیجه Walk Forward Optimization را مبنای تصمیم‌گیری قرار دهی، این موارد را بررسی کن:

  • اکسپرت از نظر منطق ورود، خروج و مدیریت ریسک به‌درستی کار می‌کند.
  • پارامترهای بهینه‌سازی و محدوده آن‌ها منطقی هستند.
  • داده‌های تاریخی و هزینه‌های معاملات تا حد امکان به شرایط واقعی نزدیک‌اند.
  • در هر چرخه، انتخاب پارامترها فقط بر اساس داده‌های In-Sample انجام شده است.
  • دوره‌های Out-of-Sample به ترتیب زمانی ثبت و ترکیب شده‌اند.
  • فقط سود نهایی بررسی نشده و افت سرمایه، تعداد معاملات و پراکندگی عملکرد نیز ارزیابی شده‌اند.
  • نتایج به یک ترکیب بسیار خاص از پارامترها وابسته نیستند.
  • برای آزمون نهایی، داده‌ای جدا از چرخه‌های توسعه و انتخاب استراتژی باقی مانده است.

سؤالات متداول درباره Walk Forward Optimization در متاتریدر ۵

آیا متاتریدر ۵ قابلیت داخلی Walk Forward Optimization دارد؟

متاتریدر ۵ قابلیت داخلی Forward Testing را در Strategy Tester ارائه می‌کند. این قابلیت برای جدا کردن دوره بهینه‌سازی از دوره آزمون مناسب است؛ اما اجرای WFO واقعی به چندین چرخه متوالی نیاز دارد. برای این کار باید تاریخ‌ها را جابه‌جا و چرخه‌ها را تکرار کنی یا از ابزارهای خودکارسازی و کدنویسی اختصاصی استفاده کنی.

تفاوت Forward و Forward Optimization در متاتریدر ۵ چیست؟

در تنظیمات Strategy Tester، گزینه Forward مشخص می‌کند کدام بخش از بازه برای آزمون فوروارد در نظر گرفته شود. در این فرایند، پارامترها روی بخش ابتدایی بهینه‌سازی و تعدادی از ترکیب‌های منتخب روی بخش پایانی آزمایش می‌شوند. اما WFO یک فرایند چندمرحله‌ای است که همین منطق را در پنجره‌های متوالی و با جابه‌جایی زمان تکرار می‌کند.

آیا Walk Forward Optimization سودآوری آینده را تضمین می‌کند؟

خیر. WFO می‌تواند احتمال وابستگی بیش از حد استراتژی به داده‌های تاریخی را کاهش دهد و اطلاعات بهتری درباره پایداری آن فراهم کند؛ اما نمی‌تواند تغییرات آینده بازار، خطاهای مدل یا تمام ریسک‌های معاملات واقعی را پیش‌بینی کند.

برای اجرای WFO حتماً باید برنامه‌نویسی بلد باشیم؟

برای اجرای دستی چرخه‌های بهینه‌سازی و آزمون می‌توان از امکانات Strategy Tester استفاده کرد. با افزایش تعداد چرخه‌ها، خودکارسازی کار با ابزارهای مناسب یا برنامه‌نویسی MQL5 می‌تواند فرایند را سریع‌تر و منظم‌تر کند.

بهترین معیار برای انتخاب پارامترهای اکسپرت چیست؟

یک معیار واحد برای همه استراتژی‌ها وجود ندارد. سود خالص، Profit Factor، افت سرمایه، Expected Payoff و Sharpe Ratio از معیارهای قابل‌بررسی هستند. انتخاب بهتر به منطق استراتژی و میزان ریسکی که می‌پذیرد بستگی دارد. همچنین تعداد معاملات و پایداری پارامترهای مجاور باید در ارزیابی لحاظ شوند.

استراتژی معاملاتی مشخصی داری و می‌خواهی آن را به یک اکسپرت قابل تست در متاتریدر ۵ تبدیل کنی؟ در بخش خدمات معاملات الگوریتمی عمادمی می‌توانی درباره امکان کدنویسی، تست و بهبود استراتژی خودت اطلاعات بیشتری کسب کنی.

جمع‌بندی

Walk Forward Optimization در متاتریدر ۵ روشی برای ارزیابی دقیق‌تر پایداری اکسپرت‌های معاملاتی است. به‌جای اینکه فقط بهترین تنظیمات را در یک بک‌تست تاریخی پیدا کنی، پارامترها را روی یک دوره بهینه می‌کنی و سپس عملکرد آن‌ها را در دوره بعدی می‌سنجی. با تکرار این چرخه در چند بازه زمانی، می‌توانی دید بهتری نسبت به رفتار استراتژی در شرایط مختلف بازار به دست بیاوری.

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

در نهایت، هدف WFO پیدا کردن اکسپرتی نیست که در گذشته بیشترین سود را ساخته است؛ بلکه پیدا کردن استراتژی‌ای است که شواهد تاریخی، در دوره‌های متعدد و خارج از نمونه، از پایداری معقول آن پشتیبانی کنند.


منابع و مطالعه بیشتر

۱. What Is a Walk-Forward Optimization and How to Run It? — AlgoTrading101

۲. Walk-Forward Optimization: A Framework for More Reliable Backtesting — QuantInsti

۳. From “Best Pass” to Robust Solutions: Exploring the Optimization Surface in MetaTrader 5 — MQL5

۴. Strategy Optimization — مستندات رسمی MetaTrader 5

۵. Custom Walk Forward Optimization in MetaTrader 5 — MQL5

 

​​جست و جو در مقالات و دوره های عمادمی 

رمز عبورتان را فراموش کرده‌اید؟

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

بازگشت به بخش ورود

کد دریافتی را وارد نمایید.

بازگشت به بخش ورود

تغییر کلمه عبور

تغییر کلمه عبور

حساب کاربری من

سفارشات

مشاهده سفارش

سبد خرید