یکی از کارهای بسیار مهم در معاملات الگوریتمی تست استراتژی در گذشته بازار بهمنظور بررسی رفتار استراتژی در گذشته است. به همین منظور در این مقاله به روش بک تست گیری در متا تریدر ۵ و توضیح پارامترهای آن میپردازم.
تصویر زیر عکس استراتژی تستر در متا تریدر ۵ است.
بررسی قسمتهای مختلف بک تست گیری در متا تریدر ۵ و پارامترهای آن
قسمتهای مختلف آن را در زیر توضیح میدهم:
Expert: در این قسمت، اکسپرت معاملاتی خود را که قرار است آن را در گذشته بهینهسازی کنیم را انتخاب میکنیم.
Symbol: نام نمادی را انتخاب میکنیم که میخواهیم اکسپرت در گذشته آن نماد (محصول) تست را انجام دهد.
Time frame: تایم فریم معاملاتی خود را انتخاب میکنیم.
Date: بازه زمانی که میخواهیم بک تست خود را در آن انجان دهیم انتخاب میکنیم.
Forward: در بکتست، فرض بر این بود که اطلاعات گذشته بازار را در اختیار داریم؛ ولی در فوروارد تست موضوع متفاوت است.
در فوروارد تست، ابتدا بازه زمانی تست خود را به دو قسمت تقسیم میکنیم که لزوماً مساوی نیستند؛ سپس، استراتژی خود را در قسمت اول بازه زمانی تست میکنیم و پارامترهای بهینه را به دست میآوریم. حال، با همان پارامترهای بهدستآمده، در قسمت دوم معامله میکنیم و نتیجه را با خروجی قسمت اول مقایسه میکنیم. در حقیقت، هنگامیکه استراتژی را در قسمت دوم بررسی میکنیم، فرض بر این است که از آینده خبر نداریم و با توجه به اطلاعات بهدستآمده در گذشته، در آینده معامله میکنیم.
Delays:
- استراتژی تستر به شما این امکان را میدهد که در back test زمانی برحسب میلیثانیه برای تأخیر تعریف کنید.
- در شرایط واقعی بین زمانی که شما دستور خرید یا فروش یا بستن معامله را ایجاد میکنید و زمان اجرای آن روی سرور کارگزاری، فاصله زمانی وجود دارد. در استراتژی تستر شما این امکان را دارید که این زمان را برحسب میلیثانیه وارد کنید.
- در طول زمانی که شما دستوری را برای سرور میفرستید تا زمانی که سرور آن را دریافت میکند ممکن است تغییری در قیمت به وجود بیاید. ازآنجاکه ما اکسپرت را در بدبینانهترین شرایط تست میکنیم پسازاین پارامتر همیشه استفاده کنید.
- توصیه من گزینه ping است (گزینه دوم) در این گزینه خود استراتژی تستر، فاصله زمانی سرور تا کامپیوتر شمارا برحسب میلیثانیه حساب میکند.
- اگر در کد نویسی خود از دستور ORDER_FILLING_FOK استفاده کرده باشید میتوانید تا حدی از delay صرفنظر کنید ولی بازهم توصیه من استفاده از آن است.
Modeling:
چهار حالت مدلینگ داده داریم:
۱. Every tick
هر زمان که معاملهای بین خریدار و فروشنده در بازار انجام میشود، یک تیک معاملاتی به وجود میآید و اگر حالت مدلینگ را بر روی این گزینه قرار دهیم، استراتژی تستر با هر تیک به بررسی شرایط بازار میپردازد.
۲. Every tick based on real ticks
این حالت بسیار شبیه حالت واقعی بازار است ولی نسبت به حالات دیگر کندتر است و همچنین حجم اطلاعات بیشتری را نیز در حافظه اشغال میکند.
۳. ۱ minute OHLC
در این حالت استراتژی تستر در open, high,low,close کندل یک دقیقه به بررسی شرایط بازار میپردازد.
۴. Open price only
در این حالت تنها در open کندل در تایم فریم مشخصشده به بررسی شرایط بازار میپردازد.
۵. Math calculation
این حالت برای برنامههای هستند که در آنها از توابع ریاضی مانند سینوس، کسینوس و … استفادهشده است.
محدودیتهای استفاده از open price only
- شما نمیتوانید از Random delay استفاده کنید.
- شما نمیتوانید به دیتای تایم فریمهای پایینتر از تایم فریم معاملاتی خود دسترسی داشته باشید. مثلاً روی h1 تست میگیرید، میتوانید به دیتای تایمهای h2,h3وh4 به بالا دسترسی داشته باشید
- در ضمن تایم فریمهای بالاتری که دسترسی دارید حتماً باید ضریب صحیحی از تایم فریم اصلی باشند. مثلاً اگر تایم فریم اصلی شما m20 است، به دیتای تایم فریم m30 دسترسی ندارید ولی به h1 دسترسی دارید.
- اگر در اکسپرت خود با بیش از ۱ محصول کار میکنید، اکسپرت به تایم فریمها و ضرایب صحیح از آنها دسترسی دارد که اولین بار از آنها استفاده میکند.
مثلاً اگر در اکسپرت اولین بار در محصول EURUSD با تایم h1 کارکنید و در همان اکسپرت در GBPUSD با تایم h4 کارکنید، در محصول EURUSD به تایمهای h1,h2,h3,… دسترسی دارید و در محصول GBPUSD به تایمهای h4,h8,h12,…
- درصورتیکه از Open Price Only استفاده کنید، اکسپرت فقط در لحظه باز شدن کندل (تایم فریم مورداستفاده اکسپرت) به بررسی شرایط میپردازد و مانند حالت OHLC ممکن است دستورهای شرطی و TP و SL در قیمتهای متفاوتی ازآنچه شما مشخص کردهاید، اجرا شود. همچنین در remove کردن دستورهای شرطی به مشکل برمیخورد.
- در تایم فریمهای w1 و mn1، در ابتدای کندل D1 به بررسی شرایط میپردازد
- ۱ minute OHLC از every tick بسیار سریعتر است ولی دقت داشته باشید که قیمت فقط در OHLC کندل ۱ دقیقه بررسی میشود و ممکن است دستورات شرطی و TP و SL شما در قیمتهای متفاوتی انجام شوند و این دقت back test را پایین میآورد
Deposit: میزان پولی که اکسپرت با آن در گذشته بازار بک تست میگیرد.
Leverage: میزان اهرمی که حساب شما برای بک تست از آن استفاده میکند. اهرم معاملاتی به ضریبی گفته میشود که کارگزاری بهعنوان اعتبار به شما میدهد. بهعنوانمثال اگر leverage=100 باشد یعنی شما میتوانید ۱۰۰ برابر موجودی حساب خود معامله کنید.
Optimization: درصورتیکه بخواهید همزمان با بکتست، بهینهسازی را نیز انجام دهید از این گزینه استفاده میکنید. این گزینه ۴ حالت برای انتخاب دارد:
۱. Slow Complete Algorithm
وقتی انتخاب را بر روی این گزینه قرار میدهیم، استراتژی تستر به ما اجازه میدهد تا بتوانیم پارامترهای ورودی را بهصورت بازهای از مقادیر، مقداردهی کنیم. این حالت، تمام حالات به وجود آمده از تغییرات ورودی را در گذشته تست میکند و نتیجه آن را در برگه Optimization Results به ما نشان میدهد.
۲. Fast Genetic Based Algorithm
این گزینه مانند گزینه بالا است با این تفاوت که با استفاده از الگوریتم ژنتیک به انتخاب حالت بهینه میپردازد و تنها میتواند ۱۰ هزار حالت را بررسی کند.
۳. All Symbols Selected In Market Watch
با انتخاب این گزینه، استراتژی ما بر روی تمام محصولهای قابلنمایش در market watch اجرا میشود و نتیجه آن در برگه Optimization Results نمایش داده میشود.
Visual Mode: با انتخاب این گزینه اجرای استراتژی بهصورت visual و در پنجره جدید به شما نمایش داده میشود و شما این امکان را دارید که بهصورت کامل از عملکرد اکسپرت خود مطلع شوید.
یکی از مهمترین دلایل شکست تحلیل گران تکنیکال، خطای ورودیهای استراتژی معاملاتی است. با استفاده از بک تست و بهینهسازی میتوان این خطا را به میزان زیادی کاهش داد.