تفاوتهای متاتریدر 4 و 5 از منظر برنامهنویسی و بهینهسازی
معاملهگری که بهصورت دستی و بدون استفاده از رباتهای هوشمند معامله میکند، تفاوت چندانی را بین متاتریدر 4 و 5 احساس نمیکند. دانستن تفاوتهای متاتریدر 4 و متاتریدر 5 برای برنامه نویسان بسیار حیاتی است.
تنها تفاوت متاتریدر 4 و 5 مهم این دو پلت فرم برای معاملهگر دستی، وجود تعدادی از اندیکاتورهای جدید در متاتریدر 5 است. ولی برای معاملهگر الگوریتمی تفاوتها بسیار معنیدار است. آنقدر متفاوت که بههیچعنوان توصیه نمیکنم برای کد نویسی از متاتریدر 4 استفاده کنید.
من تنها در 3 حالت از متاتریدر 4 استفاده میکنم:
اول: ابزار موردنظر من در متاتریدر 5 وجود نداشته باشد و من به کد آن دسترسی نداشته باشم.
گاهی بعضی از ابزارها و اندیکاتورها فقط برای نسخه 4 نوشتهشدهاند و مشابه آن در نسخه 5 نیست. در این حالت اگر به فرمول آن ابزار دسترسی داشته باشم، آن را در نسخه 5 پیادهسازی میکنم. اگرنه، بهناچار از نسخه 4 استفاده میکنم.
دوم: کارگزار محصول موردنظر من را در نسخه 5 ارائه نکند.
کارگزاران بعضی از محصولات را فقط روی نسخههای خاصی از متاتریدر ارائه میکنند. مثلاً کارگزار من محصولات ارز دیجیتال را روی متاتریدر 4 ارائه میکند. در این حالت من چارهای ندرام جز اینکه کد خود را روی متاتریدر 4 بنویسم.
سوم: هزینه معاملات (spread یا Commission) روی نسخه 4 تفاوت معنیداری با نسخه 5 داشته باشد.
گاهی پیش میآید که هم محصول روی هر 2 نسخه وجود دارد و هم ابزارها برای هر دو نسخه هست. ولی (مثلاً) به دلیل تعداد معاملات بالای استراتژی، کومیسیونی که باید به کارگزاری برای نسخه 5 بپردازیم، بسیار بالاتر از نسخه 4 باشد. در این حالت من ابتدا استراتژی را بر روی نسخه 5 مینویسم، آن را بهینهسازی میکنم و نسخه بهینهسازی شده را عیناً روی نسخه 4 (بدون هیچ تغییری) اجرا میکنم.
قبل از اینکه به بیان تفاوت متاتریدر 4 یا 5 در معاملات الگوریتمی بکنم، ابتدا مفهوم بک تست و فوروارد تست (Back Test & Forward Test) را برای شما بیان میکنم.
[irp posts=”9967″ name=”معاملات الگوریتمیک چه کمکی برای کاهش خطای معاملهگر میکند”]
بک تست:
به معنی تست کردن استراتژی معاملاتی درگذشته بازار و استخراج نتیجه از آن است. نتایجی که بیشتر از این کار مورد انتظار است، میزان سود، میزان زیان، درصد معاملات برنده به بازنده، میزان سود و زیان در هر معامله و حداکثر میزان زیان در طول زمان تست است. البته پارامترهای بسیار بیشتری باید مدنظر قرار گیرند ولی فعلاً در حد این کتاب موارد ذکرشده را موردتوجه قرار خواهیم داد.
برای اینکه بدانید استراتژی معاملاتی شما مناسب است یا نه حتماً باید آن را درگذشته بازار موردبررسی قرار دهید.
انجام این کار بهصورت دستی میتواند خطای زیادی داشته باشد و ضمناً حوصله فراوان میخواهد.
در متاتریدر (4 و 5) ابزاری به نام Strategy Tester وجود دارد که با آن میتوانید استراتژی کد شده خود را درگذشته بازار بهسرعت و دقیق، بررسی کنید و این ابزار تمام گزارشهای آماری موردنیاز شمارا در اختیارتان قرار میدهد.
همچنین در این ابزار میتوانید پارامترهای ورودی استراتژی خود را بهینه کنید. مفهوم بهینهسازی پارامترهای ورودی را مقالات آینده بهتفصیل بیان خواهم کرد. با مثال سادهای مفهوم کلی را با مثال برای شما میگویم:
فرض کنید استراتژی معاملاتی شما فقط از یک میانگین متحرک تشکیلشده است و در سادهترین حالت شما میخواهید با گذر رو به بالای قیمت از میانگین متحرک، خرید کنید و هنگامیکه قیمت میانگین متحرک را رو به پایین قطع کرد از معامله خود خارج شوید. (پیشنهاد میکنم مقاله صف خرید در بورس و کال مارجین چیست؟ را هم بخوانید)
[button size=”medium” style=”primary” text=”همین حالا ثبت نام کنید” link=”https://midassarmaye.com/product/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%db%8c%d9%84%d8%aa%d8%b1-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%af%d8%b1-%d8%a8%d9%88%d8%b1%d8%b3/” target=”_blank”]
در شکل بالا فرض میکنیم در فلش رو به بالا (قیمت میانگین متحرک را رو به بالا قطع کرده) میخریم و در فلش رو به پایین (قیمت میانگین متحرک را رو به پایین قطع کرده) میفروشیم.
شکل زیر پارامترهای ورودی میانگین متحرک را نشان میدهد که دارای 4 پارامتر است:
-
Period
-
Shift
-
Method
-
Apply to
این پارامترها مقادیر مختلفی به خود میگیرند ولی سؤال اینجاست: کدام پارامترها برای محصول موردنظر ما بهترین است؟
پاسخ به این سؤال تنها وقتی معلوم میشود که شما با تمام حالات ورودی استراتژی خود را درگذشته تست کنید و بهترین جواب را برگزینید. به این کار بهینهسازی میگویند.
[irp posts=”20069″ name=”وبینار آشنایی با معاملات الگوریتمی”]
فوروارد تست (Forward Test):
در بک تست، فرض بر این بود که ما اطلاعات گذشته بازار را در اختیار داریم ولی موضوع در فوروارد تست متفاوت است.
در فوروارد تست ما ابتدا بازه زمانی تست خود را به دو قسمت (لزوماً مساوی نیستند) تقسیم میکنیم، سپس استراتژی خود را در قسمت اول، تست میکنیم و پارامترهای بهینه را به دست میآوریم.
حال با همان پارامترهای بهدستآمده، در قسمت دوم معامله میکنیم و نتیجه را با خروجی قسمت اول مقایسه میکنیم. در حقیقت هنگامیکه استراتژی را در قسمت دوم بررسی میکنیم، فرض بر این است که ما از آینده خبر نداریم و داریم با اطلاعات بهدستآمده درگذشته در آینده معامله میکنیم.(پیشنهاد میکنم مقاله اموزش بازار دوطرفه بورس را هم مطالعه کنید)
(در ادامه مقاله مارجینها و کمیسیون ها را هم بخوانید)
اگر نتایج بهدستآمده تا حد زیادی شبیه هم بود به این معنی است که احتمال اینکه استراتژی در آینده مانند گذشته عمل کند، زیاد است. دقت کنید گفتم زیاد است و درصد نگفتم. چون واقعیت این است که هیچکس از آینده خبر ندارد قیمت و بازار قابل پیشبینی نیست!
مفاهیم بک تست و فوروارد تست را در مقالات آینده بهتفصیل خواهم گفت. در اینجا برای اینکه فرق متاتریدر 4 و 5 را بگویم توضیح مختصری دادم.
[button size=”medium” style=”primary” text=”همین حالا ثبت نام کنید” link=”https://midassarmaye.com/product/%d8%a2%d8%aa%db%8c-%d8%b2%d8%b9%d9%81%d8%b1%d8%a7%d9%86/” target=”_blank”]
دلایل استفاده از نسخه 5 متاتریدر برای معاملات الگوریتمی:
-
دقت بالاتر در ذخیرهسازی دیتا:
دقت مدل کردن دیتا در متاتریدر 5 بسیار بالاتر از متاتریدر 4 است. در متاتریدر، دیتا مدل میشود یعنی برای اینکه دیتای یک کندل را ذخیره کند در زمانهای مختلف از آن نمونهبرداری میکند.
یکی از مهمترین عوامل صحت بک تست، صحت اطلاعات ورودی است. چون ما میخواهیم با توجه به اطلاعات گذشته برای آینده تصمیم بگیریم. پس اگر اطلاعات ورودی ما (همان قیمت) خطا داشته باشد، حتماً خروجی نتایج ما هم خطا خواهد داشت.
من در بهترین حالت (با کارگزاریهای مختلف بررسی کردم) از متاتریدر 4 صحت ورودی 90 درصد گرفتم اما در متاتریدر 5 صحت اطلاعات 99 درصد امری طبیعی است.
شاید فکر کنید صحت اطلاعات 90 درصد، مناسب است ولی باید بگویم بههیچوجه اینطور نیست.
بگذارید مثالی بزنم:
فرض کنید بگویم فلان فوتبالیست، 90 درصد ضربههای کاشته پشت 18 قدم را وارد دروازه میکند. به نظر شما این آمار خوب است؟
خوب نیست، عالی است!
حال میگویم 90 درصد هواپیماهایی که از باند بلند میشوند، سالم به زمین مینشینند! در این موردنظر شما چیست؟ هر دو صحت 90 درصدی دارند ولی اگر این آمار صحت داشته باشند آیا شما جرئت سوارشدن به هواپیما را دارید؟ در هفته صدها پرواز در کشور ما انجام میشود و در صورت صحت این آمار، باید هر هفته منتظر دهها سقوط باشیم!
پس هر سیستمی به درجه دقت خاص خود را نیاز دارد.
اصولاً این موضوع که ما میخواهیم با بررسی گذشته بازار برای آینده آن تصمیم بگیریم، خود دارای خطا است. در جهان هستی، رفتار هیچ پدیدهای را با بررسی گذشته آن نمیتوان پیشگویی کرد بلکه تنها میتوانیم احتمال وقوع را پیشبینی کنیم.(در ادامه مقاله سواپ (SWAP) در فارکس را هم بخوانید)
[irp posts=”8759″ name=”الگوریتمیکتریدینگ چیست؟”]
خوب، پس اصل مطلب دارای خطا است پس باید ما با کاهش حداکثری خطا، تست را انجام دهیم.
10 درصد خطا در اطلاعات ورودی خطای بسیار زیادی است و این یعنی (ازنظر من) تمام نتایج بهدستآمده زیر سؤال است. نه خوب بودن نتایج میتواند ما را خوشحال کند و نه بد بودن نتایج ما را ناراحت!
تنها برداشت من این است که بک تست گرفتن در متاتریدر 4، کاری کاملاً بیهوده است.
نکته دیگری که در مورد بازارهای مالی حتماً باید مدنظر قرار دهید، مسئله لوریج (Leverage) یا همان اهرم است. در بسیاری از بازارهای دوطرفه دنیا امکان استفاده از اهرم به معاملهگر داده میشود. همانطور که میدانید بازارهایی که امکان لوریج دارند، به معاملهگر اجازه میدهند که بیش از مقدار پول خود امکان معامله داشته باشد.
مثلاً در بازار فارکس اهرمهای مالی 50 یا 100 یا بالاتر وجود دارد؛ و این یعنی در صورت استفاده از اهرم 100، شما میتوانید با 1 واحد پول، 100 واحد معامله کنید. این موضوع، مسئله خطا در ورودی را بهشدت افزایش میدهد. پس بههیچعنوان به بک تستهای متاتریدر 4، اعتماد نکنید.
- نکته دیگر اینکه در متاتریدر 4 دیتا در تایم m1 ذخیره میشود و به تایم فریمهای دیگر تبدیل میشود و هر خطایی در تایم فریم m1، در تایم فریمهای بالاتر نیز وجود دارد؛ اما در متاتریدر 5 دیتای هر تایم فریم بهصورت جداگانه ذخیره میشود.
- در متاتریدر 4، spread(اختلاف قیمت بیت ask و bid) ذخیره نمیشود اما در متاتریدر 5 این عدد برای هر کندل ذخیره میشود و این مسئله باعث کاهش خطا در بک تستها میشود.
- متاتریدر 5 یک سیستم multi thread و 64 بیتی است و متاتریدر 4 سیستم single thread و 32 بیتی است. (کسانی که تفاوت single thread و multi thread را نمیدانند با یک جستجوی ساده در گوگل میتوانند تفاوت آنها را درک کنند و توضیح آن در موضوع این کتاب نیست ولی تنها به این نکته اشاره میکنم که این موضوع باعث بالا بردن سرعت متاتریدر 5 است)
- متاتریدر 5 در تستهای گذشته (back test) سرعت بسیار بالاتری از متاتریدر 4 دارد. نرمافزار متاتریدر 5 برای سیستمعاملهای 64 بیتی طراحیشده و روی آنها بسیار سریعتر کار میکند درحالیکه متاتریدر 4 برای سیستمعاملهای 32 بیتی طراحی شده. البته این نکته را نیز بدانید که متاتریدر 5 روی سیستمعاملهای 32 بیتی هم کار میکند.
- گزارشها در متاتریدر 4 تنها بهصورت اچ تی ام ال (HTML) ذخیره میشوند اما گزارشها در متاتریدر 5 میتواند به فرمت xml هم ذخیره شود که در بهینهسازی بسیار به برنامهنویس کمک میکند. (خواننده توجه داشته باشد این موضوع تا زمان نگارش این کتاب به این صورت بوده و در آینده ممکن است این امکان به متاتریدر 4 نیز اضافهشده باشد)
- در متاتریدر 4 امکان قرار دادن 5 نوع دستور معاملاتی است. 1 دستور ورود سریع یا Market Execution و 4 نوع دستور شرطی.
در متاتریدر 5، میتوانید 7 نوع دستور معاملاتی داشته باشید، 1 دستور ورود سریع و 6 دستور شرطی.
- در متاتریدر 5 شما میتوانید مشخص کنید که با قیمتی که مشخص کردهاید، معامله را باز کند و از باقیمانده باقیمت دیگر صرفنظر کند اما در متاتریدر 4 این امکان وجود ندارد.
بهعنوانمثال فرض کنید قیمت محصولی که میخواهید بخرید 100 تومان است. شما میتوانید برای کارگزار خود مشخص کنید که تعداد 50 عدد از محصول را به قیمت 100 تومان برای شما بخرد و در این صورت کارگزار اگر توانست تمام 50 عدد را به قیمت 100 تومان بخرد که سفارش را کامل انجام میدهد و اگر نتوانست تمام 50 عدد را باقیمتی که مشخص کردهاید بخرد، از باقیمانده آن صرفنظر میکند. مثلاً 30 عدد را برای شما با قیمت 100 میخرد و از بقیه سفارش صرفنظر میکند.
- در متاتریدر 5 شما این امکان را دارید که در تستهای خود درگذشته بازار، از پردازشگر دستگاههای دیگری که در شبکه داخلی شما هستند استفاده کنید. در مقالات آتی خواهم گفت که برای اینکه بتوانید یک استراتژی معاملاتی را سود ده کنید باید حتماً آن را بهینهسازی کنید. برای بهینهسازی نیاز به سختافزار قدرتمندی دارید. با این امکان شما میتوانید با استفاده از پردازشگرهای کامپیوترهای دیگر در شبکه داخلی (LAN) هزینه خرید سختافزارهای پیشرفته را کاهش دهید. درحالیکه این موضوع در متاتریدر 4 امکانپذیر نیست.
- پارامترهای آماری تصمیمگیری در متاتریدر 5، بیشتر و قابلاطمینانتر هستند. در متاتریدر 4 بعدازاینکه استراتژی را درگذشته چک کردیم 24 پارامتر آماری بهعنوان نتیجه در اختیار ما قرار میدهد ولی در متاتریدر 5، 48 پارامتر آماری برای تصمیمگیری در اختیارداریم که قطعاً تصمیم ما دقیقتر خواهد بود.
- امکان فوروارد تست:
متاتریدر 5 امکان فوروارد تست دارد ولی متاتریدر 4، این امکان را ندارد.
تفاوت mql4 و mql5 از منظر بررنامه نویسی آنقدر زیاد است که حتما توصیه می کنم برای اکسپرت نویسی های خود از متاتریدر 5 استفاده کنید.
باوجود تفاوت متاتریدر ۴ و ۵ که در بالا به آنها اشاره کردم، توصیه میکنم حتماً برای تست استراتژی خود درگذشته و بهینهسازی، از متاتریدر 5 استفاده کنید.
ما در این مقاله تفاوت متاتریدر 4 و 5 گفته شد و در انتها بر اساس گفته آقای Anthony Papaevagorou, مدیر فروش شرکت متاکوتس، توسعه نرمافزار متاتریدر 4 متوقف خواهد شد و بهروزرسانیها بر روی متاتریدر 5 خواهد بود. متن کامل مقاله را در لینک زیر مشاهده کنید:
https://smnweekly.com/2016/11/15/metaquotes-abandons-mt4-turns-entirely-to-mt5-trading-platform/
و از شما میخواهیم اگر نظر یا پیشنهادی در مورد مقاله فرق متاتریدر 4 و 5 و بک تست گیری در متاتریدر 5 دارید با ما در میان بگذارید تا سایر دوستان از تجربه ها و گفته های شما عزیزان استفاده کنند.
در آخر مقاله راه اندازی دوباره آتی سکه طلا را مطالعه کنید