تست بصری سودآوری اندیکاتورها و هشدارها

تست بصری سودآوری اندیکاتورها و هشدارها

تست بصری سودآوری اندیکاتورها و هشدارها

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

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

یا شاید هم شرایط شما اینگونه باشد: اندیکاتوری با هشدارهای خوب وجود دارد، اما یک احساس درونی به شما می‌گوید که پارامترهای آن خیلی خوب و بهینه نیستند و نمی‌شود آن را خوب جمع‌وجور کرد، اما می‌دانید که می‌توانید این کار را انجام دهید. چطور می‌توانید ایده‌ی خود را سریع تست کنید؟ – آن‌هم بدون اینکه درون کدهای طولانی و پیچیده به دام بیفتید…

بیان مسئله

بیایید به این فکر کنیم که چه داریم و چه چیزی می‌‌خواهیم داشته باشیم. بیایید به‌عنوان مثال، اندیکاتور کاملاً شناخته‌شده‌ی زیگزاگ را از نرم‌افزار متاتریدر ۴ برداریم. این اندیکاتور را روی هر اَرزی در هر تایم‌فریمی که دوست دارید، بیندازید: آیا واقعاً می‌خواهید با آن ترید کنید؟ همه‌چیز واضح است: باید روی شکستگی در قله‌ها sell بگیرید و پوزیشن خود را در دره‌ها با buy گرفتن ببندید.

اما اینجا سوالی پیش می‌آید: این مدل ترید کردن چقدر به شما پول می‌دهد؟ جواب دادن به این سوال کاملاً ساده است: تمام highهای (high تمام کندل‌ها) محدوده‌ی ترید خود را با هم جمع بزنید و با درنظر گرفتن حجم پوزیشن در واحد لات و قیمت یک نقطه در واحد اَرزی که با آن سرمایه‌گذاری انجام داده‌اید، محاسبات را مجدد انجام دهید. می‌توانید به بافر مقادیر زیگزاگ، با فراخواندن تابع iCustom، دسترسی پیدا کنید:

و در اینجا i تعداد کندل‌هایی است که برای آنها می‌خواهید مقدار (value) بدست آورید.

تمام کاری که باید انجام دهید این است که در تمام مقادیر بافر جستجو کرده و تمام نقاطی که مقادیر غیرصفر دارند را پیدا کنید – اینها نقاطی هستند که زیگزاگ روی آنها ساخته می‌شود.

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

یک راه‌حل جهانی

برای داشتن چنین اندیکاتوری که قادر باشد هر نوع اندیکاتور دیگری را تست کند، باید ابتدا از کامل بودن و به‌نوعی جهانی ‌بودن آن مطمئن شد. از آنجایی که به‌طور کلی هر اندیکاتور یا سیستم ترید پیش‌فرضش این است که فقط ۴ عمل اصلی انجام می‌شوند (BUY, SELL, BUY CLOSE, SELL CLOSE)، باید برای هر کدام یک آرایۀ خاص درنظر بگیریم. قطعِ به یقین، محتمل است که این آرایه را بشود با هر منبعی تغذیه کرد. تنها چیزی که شما باید خودتان آن را ویرایش کنید، اضافه کردن کد هشدارها است (که احتمالاً باید برخی از پارامترها را در متغیرهای اکسترنال جای دهید).

در عمل، اندیکاتور شامل این بخش‌ها خواهد شد:

  • مقداردهی اولیه در اینجا به آرایه‌های هشدار، حافظه اختصاص می‌دهیم و شمارنده‌ها را نیز ریست می‌کنیم؛
  • پُر کردن آرایه‌های هشدار ویرایش کد را با اضافه کردن الگوریتم‌های مختلف انجام می‌دهیم. این الگوریتم‌ها، الگوریتم‌های محاسبه هشدار، یا الگوریتم‌های دریافت هشدار از دیگر اندیکاتورها هستند؛
  • پاک کردن هشدارهای تکراری این بخش‌ برای “حذف کردن” هشدارها از اندیکاتورهایی که در حالت گسسته (Discrete) کار نمی‌کنند، لازم است—حالت گسسته کارش تولید یک هشدار است، اما در حالت پیوسته، اندیکاتورها مرتباً دسترس‌پذیری شرایط بازشدن را اصلاح می‌کنند، نه نخستین پیدایش هشداری که، در عمل، معامله را باز می‌کند. در این بخش، به چنین مکانیزمی پِی بُردیم: اگر دو هشدار یکسان در دو کندل مجاور یکدیگر قرار داشته باشند، سمت راستی ساکن است، زیرا ما فقط یک معامله را برای استفاده درنظر می‌گیریم، و آن معامله‌ای است که در کندل قبلی (چپ) هم‌اکنون باز شده‌است. تمام هشدارهایی که خارج از محدوده‌‌ی تاریخ‌های تنظیم‌شده‌ در پارامترها باشند، حذف خواهند شد؛
  • قرار دادن علائم Open و Close در این بخش زیگزاگ توسط هشدارهای “حذف‌شده” (گسسته) کشیده شده‌است، و اگر نیاز باشد خطوط عمودی نیز در جای خود قرار می‌گیرند تا هماهنگ‌ بودن هشدارها با نمودارهای دیگر اندیکاتورها—شامل‌ آنهایی که هشدارها را تولید می‌کنند—را بررسی و پیگیری کنند؛
  • محاسبه‌ی نتایج با استفاده از علائم قرارداده‌شده حجم معاملات باز و سود آنها حین قرار دادن علائم، محاسبه می‌شود. این بخش یک سری محاسبات اضافی دیگر انجام داده و نتایج را به‌شکل یک کامنت/علامت در خود پنجره‌ی نمودار نشان می‌دهد؛
  • توابع کمکی دو تابع در اینجا قرار گرفته‌ است: تابعی که خط‌های علامت‌گذاری عمودی را [در جای خود] قرار می‌دهد، و تابعی که بخش‌های مختلف زیگزاگ را رسم می‌کند.

تحقق مطلب

در اینجا کد خود اندیکاتور را داریم که شامل مثالی از تغذیه داده‌ها از اندیکاتور زیگزاگ است.

پارامترهای این اندیکاتور، یک پارامتر خاص را درون خود دارند – Optimizm. این پارامتر درجه‌ی مورد نظر از خوش‌بینی را در محاسبات لحاظ می‌کند. اگر مقدار آن زیر صفر باشد، بدان معناست که محاسبات کاملاً بدبینانه خواهند بود: برای قیمت‌های buy، high کندلِ هشدار انتخاب می‌شود، و برای قیمت‌های sell – low انتخاب می‌شود. اینگونه بدترین نتایج ممکن که می‌توانیم با استفاده از این هشدارها بگیریم، مدل‌سازی می‌شوند. اگر مقدار آن بالای صفر باشد، خوشبینانه‌ترین محاسبه، مدل‌سازی شده‌است: ‌buy در پایین‌ترین و sell در بالاترین. و اگر مقدار این پارامتر برابر با صفر باشد، رفتار خنثی شکل گرفته که در این ‌صورت ما معاملات را در قیمت‌های بازشدن کندل‌ها، باز کرده و می‌بندیم. معمولاً هنگام ترید با اکسپرت‌ها این شرایط محقق می‌شود.

تحلیل نتایج

اکنون بیایید به نتایج نگاهی بیندازیم. در اینجا نتایج واقع‌گرایانه [و بدون نظر شخصی] از تحلیل زیگزاگ را می‌توانید مشاهده کنید.

تست بصری سودآوری اندیکاتورها و هشدارها

ببینید، نمودار هشت بار ضرر را نشان می‌دهد. پس، زیگزاگ روی بهترین قیمت‌ها “کار می‌کند” و برای ساختن دوباره‌ی آن باید پارامترOptimizm  را مساوی با ۱ تنظیم کنیم.

تست بصری سودآوری اندیکاتورها و هشدارها

اگر پارامترOptimizm  را برابر با ۱- قرار دهیم، و بدترین ترید ممکن را انجام دهیم، می‌توانیم نتیجه را، هرچه که باشد، ببینیم.

تست بصری سودآوری اندیکاتورها و هشدارها

کمی مطلب اضافه

تریدرهای عزیز،

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

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

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

تحلیل هشدارهای سیستمهای ترید

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

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

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

بیایید مثالی را درنظر بگیریم – کد آماده‌ی MACD استاندارد. اینطور باید به‌نظر برسد. بخش پُر کردن آرایه‌های هشدار، که محتوای آن از متن اندیکاتور کپی و paste شده‌است:

و نتیجه:

تست بصری سودآوری اندیکاتورها و هشدارها

توجه داشته باشید که خطوط علائم هشدار کاملاً با نقاط متقابل نمودارهای MACD منطبق هستند. شاید با نگاه کردن به این نمودارهای به‌هم‌متصل بتوانید تصمیم بگیرید که دقیقاً چه چیزی باید در هشدارها تغییر کند. برای مثالMaCurrent  وMaPrevious  نیاز به بررسی ندارند. کد با کمی اصلاح:

می‌بینید که نتیجه چیست. تعداد عملیات‌ها از ۱۹ به ۵۱ افزایش داشته است. با این حال، سود کلی به ضرر تبدیل شده‌است، که نشان می‌دهد ارتقاء کیفیت هشدار ایده‌ی خوبی نبوده است.

تست بصری سودآوری اندیکاتورها و هشدارها

تست فانتزیها

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

در اینجا، یک “سیستم” ابتدایی را برای مثال آورده‌ایم: buy با استفاده از یک اندیکاتور ساده MA. شرط buy – صعود MA و شرط sell – سقوط MA. ببینید چگونه می‌توان سریع سودده بودن این ایده را بررسی کرد. در اینجا بخش پُر کردن هشدار را داریم:

و نتیجه:

تست بصری سودآوری اندیکاتورها و هشدارها

بد نبود، اما این بهترین نتیجه نیست. زیرا انتظار سودی فوق‌العاده را داشتیم. اکنون بیایید دوره‌ی MA را کم کنیم تا احتمال بُرد روی معاملات سودده را افزایش دهیم. دوره را از ۱۵ به ۷ کندل کاهش می‌دهیم. توانستیم میانگین سود روزانه را تقریباً ۲ برابر کنیم:

تست بصری سودآوری اندیکاتورها و هشدارها

آنچه باقی می‌ماند این است که همبستگی معاملات سودده را نسبت به معاملات ضرر، به حداقل ۸۰% به ۲۰% برسانیم. اما باید این کار را بدون هیچ‌گونه کمکی خودتان انجام دهید.

نتیجهگیری

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

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

امینی

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

الگویی برای تریلینگ اِستاپ و خروج از بازار

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

بررسی سیستم مدیریت پول لبوشر از لحاظ آماری

نوشتن نظر شما

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

سیزده − سیزده =