آموزش فیلترنویسی در بورس و مزایا و معایب آن
فیلترنویسی در بورس چیست؟
سایت اصلی بورسبازها، یعنی سایت مدیریت فناوری بورس تهران یا همان tsetmc.com، امکانات و اطلاعات گستردهای در اختیار معاملهگران و سرمایهگذاران گذاشته است که یکی از آنها قابلیت فیلترنویسی در بورس است. در قسمت «دیدهبان» بازار این سایت میتوانیم به ابزار فیلترنویسی دسترسی داشته باشیم. برای ورود به بخش دیدهبان بازار، کافی است سایت tsetmc.com را باز کنید و از گزینههای بالای صفحه، روی گزینه «دیدهبان بازار» کلیک کنید تا وارد صفحهای مانند تصویر زیر شوید.
در قسمت بالای صفحه اصلی دیدهبان بازار گزینههای مختلفی وجود دارد که نام یکی از آنها «فیلتر» است و اگر روی آن کلیک کنید، پنجرهای باز خواهد شد که میتوانید از طریق آن فیلترهای مورد نظرتان را ذخیره و مدیریت کنید.
نکته: پیش از هر کاری، در سایت مدیریت فناوری بورس تهران ثبت نام کنید. برای ثبت نام کافی است در سمت چپ صفحه دیدهبان، روی گزینه «ورود» کلیک کنید و در صفحه بعدی، گزینه «ثبتنام و دریافت نام کاربری» را انتخاب نمایید. یادتان باشد برای اینکه فیلترهایتان در سایت ذخیره شود، باید پیش از شروع کار با استفاده از نام کاربری و رمز عبورتان وارد سایت شوید.
اکنون که محیط اصلی فیلترنویسی را دیدیم، خوب است اشاره کنیم که فیلترنویسی چیزی شبیه به برنامهنویسی برای کامپیوتر است؛ در فیلترنویسی، با استفاده از کدهای تعریفشده، دستورها و شرطهایی را وارد میکنیم تا نمادهایی که شروط موردنظرمان را دارند استخراج شوند و به نمایش در بیایند.
اهمیت و کاربرد فیلترنویسی در بورس
اهمیت این کار زمانی مشخص میشود که دقت کنیم در بازار سرمایه ایران بیش از ۷۰۰ نماد وجود دارد و امکان بررسی تکبهتک این نمادها برای رسیدن به نمادهای مناسب وجود ندارد. فیلترنویسی این امکان را فراهم میکند که به سرعت نمادهایی را که شروط دلخواهمان را دارند پیدا کنیم.
نمونههایی از شروطی که میتوانیم با استفاده از فیلترنویسی تعیین کنیم:
- نمادهایی که صف خریدشان بیشتر از ده میلیون سهم است،
- نمادهایی که بیش از دو برابر میانگین معاملات ماهانه معامله شدهاند،
- نمادهایی که در آستانه صف خرید قرار گرفتهاند،
- نمادهایی که الگوی شمعی چکش معکوس ساختهاند،
- نمادهایی که P/E آنها بین ۴ تا ۶ است،
- نمادهایی که ۵ برابر حجم مبنا معامله شدهاند،
و تقریبا هر شرطی که ممکن است به ذهن یک معاملهگر برسد.
آموزش فیلترنویسی در بورس
برای فیلترنویسی حرفهای در بورس باید با انواع عملگرها و توابع و کاربردشان آشنا باشیم تا بتوانیم شرطهای مورد نظرمان را به زبان این عملگرها و توابع بنویسیم و به نمادهای مورد نظرمان برسیم. اما نگران نباشید، حتی اگر به زبان عملگرها و توابع فیلترنویسی مسلط نباشیم، میتوانیم از فیلترهای آماده استفاده کنیم تا اینکه کمکم خودمان بتوانیم فیلترهای مورد نظر خودمان را از همان اول طراحی کنیم.
اما برای استفاده از فیلترهای آماده هم بهتر است با کلیات مربوط به فیلدها، عملگرها و توابع فیلترنویسی آشنا باشیم.
فیلدهای ساده در فیلترنویسی
فیلترنویسی در واقع ترجمه زبان انسان به زبان ماشین است. به عبارت سادهتر، در فیلترنویسی قرار است گزارههایی مانند «سهمهایی که قیمت پایانی آنها بیشتر از میانگین هفتگی است» به زبان کامپیوتر ترجمه شوند. برای این کار نیاز به تعدادی فیلد و عملگر داریم. فیلدها مشخصکننده عبارتهایی مانند «قیمت پایانی»، «تعداد معاملات» و «حجم معاملات» هستند که به صورت علامت اختصاری درآمدهاند. کامپیوتر درکی از این عبارتها ندارد، ولی علامتهای اختصاریشان را میشناسد. در جدول زیر تعدادی از فیلدهای ساده را مشاهده میکنید که در فیلترنویسی کاربرد دارند.
نکته یک: همانطور که در این جدول مشاهده میکنید، تمام فیلدهای فیلترنویسی پرانتز دارند. در واقع اگر بخواهیم فیلترهایی که مینویسیم اطلاعات روز جاری را بررسی کنند، باید از پرانتز استفاده کنیم. اگر بخواهیم اطلاعات معاملاتی روزهای گذشته را بررسی کنیم باید از فیلدهای مخصوص دسترسی به سوابق معاملاتی بهره بگیریم.
نکته ۲: فیلدهایی که در این جدول مشاهده میکنید فقط تعداد اندکی از فیلدهای مورد استفاده در فیلترنویسی هستند. برای مشاهده فهرست کاملتری از فیلدهای موجود، میتوانید در بخش «دیدهبان بازار» سایت tsetmc روی گزینه «راهنما» که آیکونی شبیه به علامت سوال دارد کلیک کنید و از منویی که باز میشود گزینه «فیلدهای ساده قابل استفاده در فیلتر» را انتخاب نمایید.
انواع عملگرها در فیلترنویسی
همانطور که اشاره کردیم، فیلترنویسی شبیه به برنامهنویسی است. برای تعریف شرطهای مورد نظر خودمان به زبان فیلترنویسی، باید از مجموعهای از عملگرها استفاده کنیم. در زبان فیلترنویسی، روی هم رفته سه نوع عملگر وجود دارد: عملگر محاسباتی، عملگر منطقی و عملگر رابطهای. در جدول زیر این عملگرها را مشاهده میکنید.
عملگرهای محاسباتی: همان جمع و تفریق خودمان است و برای محاسبات مورد نظرمان استفاده میشوند. مثلا اگر بخواهیم دنبال سهمهایی بگردیم که مجموع قیمت پایانی دیروز و امروزشان بیشتر از ۲۰۰۰ ریال باشد، باید از عملگر جمع (+) استفاده کنیم:
(py) + (pl) > 2000
عملگرهای منطقی: در فیلترنویسی، عملگرهای «و»، «یا» و «نقیض» تعریف شده است. این عملگرها برای تعریف گزارههای منطقی کاربرد دارند. مثلا اگر بخواهیم به دنبال سهمهایی باشیم که قیمت پایانی (pc) آنها بیشتر از ۲۰۰۰ ریال و آخرین قیمتشان (pl) بیشتر از ۲۰۰۱ ریال باشد از این عبارت استفاده میکنیم:
(pl) > 2000 && (pc) < 2001
عملگر رابطهای: این عملگرها برای تعریف رابطههایی مانند بزرگتر یا کوچکتر بودن استفاده میشوند. مثلا اگر بخواهیم دنبال سهمهایی بگردیم که قیمت پایانیشان (pc) بیشتر از آخرین قیمت (pl) باشد، از عبارت زیر استفاده میکنیم:
(pc)>(pl)
نکته: دقت کنید که بعضی از عملگرها از دو کاراکتر تشکیل میشوند. مثلا عملگر «و» را باید به صورت && بنویسیم یا اینکه عملگر یا را باید به شکل || نمایش دهیم. عملگر «مساوی» هم به همین صورت است.
انواع توابع فیلترنویسی در بورس
در فیلترنویسی، تعدادی تابع آماده وجود دارد که هر کدام کار خاصی انجام میدهند. تعداد این توابع زیاد نیستند. در جدول زیر تعدادی از این توابع و عملکرد هر کدام را میتوانید ببینید.
همانطور که در جدول بالا میبینید، تابع Math.abs(x) قدرمطلق مقدار x را برمیگرداند. به عبارت دیگر، هر چیزی که داخل پرانتز قرار بگیرد، این تابع قدرمطلقش را محاسبه خواهد کرد. دقت کنید که داخل پرانتز هر عبارت معنیداری که دوست داشته باشیم میتوانیم قرار بدهیم.
انواع قالب فیلتر نویسی در بورس
برای نوشتن فیلترهای نظرمان میتوانیم از دو قالب ساده یا کدنویسی استفاده کنیم. همانطور که میشود حدس زد، استفاده از قالب ساده آسانتر است و برای تازهکارها هم پیشنهاد میشود. قالب کدنویسی بیشتر برای مراحل پیشرفتهتر و فیلترنویسهای حرفهای است. در هر صورت با تمرین و مطالعه کافی میشود از قالب کدنویسی هم استفاده کرد.
قالب ساده: در این روش میتوانیم از عملگرها، توابع آماده و فیلدهای اطلاعاتی دیگر استفاده کنیم. فیلترهایی که به این روش ساخته میشوند در واقع تعدادی شرط هستند که با عملگرهای منطقی با هم مرتبط میشوند. به نمونه زیر توجه کنید:
(pl) > 2000> && (pc)2020
قالب کدنویسی: در این روش میتوانید برنامههای مورد نظر خودمان را بنویسیم که بخشهایی از آن میتواند شامل فیلترهای قالب ساده باشد. برنامهای که در این روش مینویسیم باید یکی خروجیاش از دو مقدار true یا false باشد. اگر این مقدار true بود، سهم بررسیشده در این تابع نمایش داده خواهد شد و در غیر این صورت، این تابع در فهرست خروجی نخواهد بود.
شکل کلی تعریف یک تابع در قالب کدنویسی به این صورت است:
true==function()
{
//—در اینجا بدنه تابع تعریف میشود—-
}()
دسترسی به سابقه قیمتها و معاملات در فیلترنویسی
کدهایی که تا اینجای کار معرفی کردیم، بیشتر مربوط به معاملات روز جاری بودهاند. اگر بخواهیم به اطلاعات معاملاتی روزهای قبل دسترسی داشته باشیم، باید از کدهای مخصوص به دسترسی به سابقه معاملات استفاده کنیم. در جدول زیر تعدادی از این دستورها و توضیحات مربوط به هر کدام را مشاهده میکنید:
نکته: دقت کنید که در فیلترنویسی، بزرگ یا کوچک بودن حروف انگلیسی اهمیت دارد. برای مثال در جدول بالا، فیلد مربوط به قیمت پایانی را باید حتما به صورت «PClosing» بنویسیم و اگر ای عبارت را به شکل «Pclosing» یا «pClosing» بنویسیم، ممکن است به نتیجه مطلوب نرسیم.
اطلاعات حقیقی و حقوقی در فیلترنویسی
در بررسی نمادهای بورسی و سابقه معاملاتی آنها، گاهی لازم میشود به اطلاعات مربوط معاملات حقیقی و حقوقی را هم بررسی کنیم. مثلا ببینیم خریداران حقوقی بیشتر به کدام نمادها توجه داشتهاند یا اینکه کدام نمادها در حجمهای بالا بین حقوقیها و حقیقیهای بازار دستبهدست شدهاند. ابزارهای فیلترنویسی در این مورد هم به کمکمان میآیند. در جدول زیر فیلدهای مربوط به اطلاعات معاملات حقیقی و حقوقی را مرور میکنیم:
مثال: اگر بخواهیم به دنبال سهامی بگردیم که در آنها حجم خرید حقوقی از حجم خرید حقیقی بیشتر باشد، از فیلتر زیر استفاده میکنیم:
.Buy_N_Volume > Buy_I_Volume
دسترسی به آمارهای کلیدی در فیلترنویسی
گاهی اوقات در بررسی اطلاعات معاملاتی نیاز پیدا میکنیم که به آمارهایی از قبیل میانگین ارزش معاملات و میانگین حجم معاملات طی بازههای چندروزه یا چندماهه دسترسی داشته باشیم. در فیلترنویسی فیلدهای خاصی برای اینگونه آمارها در نظر گرفته شده است. در جدول زیر تعدادی از این فیلدها را مشاهده میکنید:
مثال: اگر بخواهیم دنبال سهمهایی بگردیم که میانگین ارزش معاملاتشان در سه ماه گذشته بالاتر از میانگین ارزش معاملاتشان در در دوازده ماه گذشته باشد، باید از فیلتر زیر استفاده کنیم:
[is5]>[is6]
نحوه استفاده از فیلتر در بورس
قبلا هم اشاره کردیم که برای استفاده از فیلترها در بورس لازم نیست حتما تسلط دقیق به فیلترنویسی داشته باشیم. این امکان وجود دارد که فیلترهای آمادهای را در قسمت مربوط به فیلترنویسی سایت مدیریت فناوری بورس تهران ذخیره کنیم و در صورت لزوم به این فیلترها مراجعه نماییم.
فرض کنید میخواهیم از فیلتر زیر که سهمهایی را نشان میدهد که در آستانه صف خرید هستند استفاده کنیم:
(po1)<= (tmax) && (po1)>= (tmax)-1 && (pd1)<(tmax)
برای این کار اول از همه سایت tsetmc.com را باز میکنیم و روی گزینه «دیدهبان بازار» کلیک میکنیم.
در قسمت دیدهبان بازار ابتدا روی گزینه «فیلتر» کلیک میکنیم تا پنجره مربوط به مدیریت فیلترها باز شود و در این پنجره روی گزینه «فیلتر جدید» کلیک میکنیم.
بعد از اینکه فیلتر جدید را ساختیم، این فیلتر در فهرست فیلترهای ما ظاهر میشود. اگر قبلا فیلتری ثبت نکرده باشید، عنوان این فیلتر «فیلتر شماره ۰» خواهد بود. روی عنوان فیلتر کلیک کنید تا وارد تنظیمات مربوط به فیلتر جدیدتان شوید. دقت کنید که در تنظیمات فیلتر میتوانید عنوان فیلتر را تغییر بدهید. بهتر است از عنوانی استفاده کنید که فیلتر مورد نظرتان را بهخوبی توصیف کند تا در آینده هم بتوانید بهراحتی این فیلتر را پیدا کنید. مثلا بهتر است برای فیلتر این مثال از عبارت «سهمهای در آستانه صف خرید» استفاده کنیم. سپس این فیلتر را در پنجرهای که با عنوان «شرط» مشخص شده وارد میکنیم.
بعد از وارد کردن فیلتر مورد نظر و انتخاب عنوان مناسب، روی دکمه «ثبت» کلیک کنید تا فیلترتان اِعمال شود. بعد از این کار، فهرستی از سهمهایی که شرایط فیلترمان را دارند به نمایش در خواهند آمد. برای دیدن جزئیات این فهرست روی دکمه ضربدر پنجره مدیریت فیلترها کلیک کنید تا این پنجره بسته شود و بتوانید فهرست سهمها را بهخوبی ببینید. در بالای این صفحه عنوانی هم که برای فیلترتان انتخاب کردهاید مشاهده خواهد شد.
نکته: اگر میخواهید جزئیات معاملات هر کدام از این سهمها را ببینید، کافی است روی آن کلیک کنید تا در ستون سمت چپ صفحه این جزئیات به نمایش در بیاید. اگر در ساعات فعالیت بازار این کار را انجام بدهید، این اطلاعات را به صورت زنده و لحظهای خواهید دید.
معرفی چند فیلتر ساده و رایگان در بورس
اکنون که یاد گرفتیم چطور میشود از فیلترهای ساده در بخش مربوط به فیلترنویسی سایت بورس استفاده کنیم، بیایید چند فیلتر ساده را با هم مرور کنیم.
فیلتر حجمهای مشکوک در بورس
شرط زیر یکی از فیلترهای سادهای است که نشان میدهد کدام سهمها در روز جاری حجم معاملاتی مشکوکی داشتهاند:
2*[is6]<(tvol) && [is5]<(tvol)
نکته: چیزی که این کد دقیقا نشان میدهد این است: «سهمهایی که حجم معاملاتشان (tvol) بیشتر از دو برابر میانگین حجم معاملات در ۱۲ ماه گذشته [is6] بوده و همچنین حجم معاملاتشان بیشتر از میانگین حجم معاملاتشان در سه ماه گذشته [is5] بوده است.»
نتیجه اعمال فیلتر هم فهرستی مانند این تصویر خواهد بود:
فیلتر P/E
فیلتر P/E یا همان نسبت قیمت به سود میتواند کمکمان کند تا سهمهایی را پیدا کنیم که نسبت P/E آنها در بازه دلخواهمان قرار داشته باشد. مثلا فیلتر زیر میتواند سهمهایی را به ما بدهد که نسبت P/E آنها بین ۳ تا ۱۰ است:
3<(pe)<10
فیلتر نمادهایی که ۳۰ درصد یا بیشتر افت کردهاند
با استفاده از فیلتر زیر میتوانید فهرستی از نمادهایی را ببینید که ظرف یک ماه اخیر، ۳۰ درصد یا بیشتر افت قیمت داشتهاند:
([ih][20].PriceMax-(pl))/[ih][20].PriceMax>0.3
فیلتر صف خرید
فیلتر زیر که به صورت یک تابع تعریف شده، همه صفهای خرید در روز جاری را فهرست میکند:
true==function(){
if((qd1)>0&&(pd1)==(tmax)){return true;}
else{return false;}
}()
فیلتر نمادهایی که در ۵ روز اخیر در دامنه منفی معامله شدهاند
فیلتر ساده زیر از مجموعهای از شرطها تشکیل شده که با عملگر && به یکدیگر پیوند داده شدهاند. این فیلتر نمادهایی را نمایش میدهد که طی پنج روز معاملاتی اخیر در دامنه منفی معامله شدهاند:
.PClosing [ih][5] > [ih][4].PClosing &&
.PClosing [ih][4] > [ih][3].PClosing &&
.PClosing [ih][3] > [ih][2].PClosing &&
.PClosing [ih][2] > [ih][1].PClosing &&
.PClosing [ih][1] > [ih][0].PClosing
فیلتر صف فروش با محدودیت حجم صف
فیلتر زیر نمادهایی را فهرست میکند که صف فروش دارند و صف فروششان زیر یک میلیون سهم است. میتوانید عدد یک میلیون را در فیلتر زیر به دلخواه خودتان تغییر بدهید:
فیلتر سهمهایی که حجم معاملاتشان پایین است
فیلتر زیر سهمهایی را فهرست میکند که مجموع خرید حقیقی و حقوقی در آنها کمتر از ۱۰ هزار برگه سهم بوده است:
همانطور که میبینید با استفاده از فیلدها و عملگرهای فیلترنویسی میتوانیم انواع و اقسام فیلترها را طراحی کنیم. با کمی تمرین و مطالعه میتوانیم مهارت خودمان را در استفاده از این ابزار بالا ببریم و تقریبا هر شرط پیچیدهای را به زبان کد فیلترنویسی تبدیل کنیم و سهمهایی را که شرایط مورد نظرمان را دارند بیابیم.
سال مالی در شرکت های بورسی به چه معناست؟
مزایا و معایب فیلترنویسی
تا اینجا دیدیم که قسمت دیدهبان بازار سایت مدیریت فناوری بورس تهران امکانات بسیار متنوعی برای پیدا کردن سهمهای مورد نظر هر معاملهگر ارائه میکند. از مزایای این ابزارها یکی این است که استفاده از آن نسبتا ساده است و با استفاده از بخش راهنمای دیدهبان و کمی وقت گذاشتن میشود فیلترهای متنوعی طراحی کرد. به این ترتیب برای یافتن سهامی که شرایط معاملاتی دلخواه ما را داشته باشد، دیگر لازم نیست سراغ سایتها و نرمافزارهای دیگر برویم. اگر بخواهیم مزایای فیلترنویسی را نمونهوار مرور کنیم، به چنین فهرستی میرسیم:
- جستوجوی سریع نمادهایی که شرطهای مورد نظرمان را دارند
- بهسادگی میتوانیم فیلترهای جدید طراحی کنیم و بنویسیم
- بینیازی به نرمافزارهای تحلیلی دیگر
- مدیریت ساده حجم بالای اطلاعات
اما ابزار فیلترنویسی در این سایت محدودیتهایی هم دارد. اول اینکه از فیلترنویسی فقط در بازار بورس خودمان میتوانیم استفاده کنیم و مثلا این ابزار برای تحلیل قیمتهای جهانی کاربردی ندارد. دیگر اینکه این بخش از سایت مدیریت فناوری بورس تهران با نرمافزارهای تحلیلی دیگر سازگاری ندارد و با آنها ارتباط برقرار نمیکند.
جمعبندی
در این مطلب با فیلترنویسی و استفاده از فیلترهای آماده تا حدودی آشنا شدیم. تلاش کردهایم این مطلب تا جای ممکن برای تازهکارها روشن باشد و نیازی به جستوجو در سایتهای دیگر نباشد، اما واضح است که طراحی و نوشتن فیلترهای بورسی به همین حد محدود نمیشود و این امکان وجود دارد که فیلترهای پیچیدهتری نوشت و به کار گرفت.نکته اینجاست که فیلترنویسی را نباید ملاک صددرصدی برای انتخاب سهام در نظر گرفت. این ابزار صرفا ابزاری برای افزایش سرعت جستوجو در بین نمادهای بورسی است و تفسیر دقیق اطلاعات معاملاتی و تصمیمگیری درمورد خریدوفروش به دانش و مهارتهایی فراتر از فیلترنویسی نیاز دارد.
پیشنهاد ما این است که سعی کنید سهامی را که یک فیلتر خاص فهرست میکند به دقت بررسی کنید و پی ببرید چرا در فیلتر شما ظاهر شدهاند. مثلا فیلتر «حجم مشکوک» میتواند سهمهایی را نمایش بدهد که حجم معاملاتیشان چندین برابر میانگین حجم معاملات طی یک ماه اخیر بوده است. این افزایش ناگهانی حجم معاملاتی میتواند به معنای آغاز یک روند صعودی جدید باشد یا اینکه نشانه انتهای روند صعودی و آغاز دوره رکود سهم. در این مورد برای اینکه به نتیجه دقیقتر برسید، باید وضعیت بنیادی و نمودار تکنیکال سهم را بررسی کنید و ببینید کدام حالت احتمال بیشتری دارد.