![آشنایی با فیلترنویسی در بورس](https://cdn.arongroups.co/uploads/2023/10/فیلر-نویسی-در-بورس.jpg)
![آشنایی با فیلترنویسی در بورس](https://cdn.arongroups.co/uploads/2023/10/فیلر-نویسی-در-بورس.jpg)
![آشنایی با فیلترنویسی در بورس](https://cdn.arongroups.co/uploads/2023/10/فیلر-نویسی-در-بورس.jpg)
آشنایی با فیلترنویسی در بورس
October 31, 2023
فیلترنویسی در بورس به معنای استفاده از الگوریتمها و قوانین برنامه نویسی جهت انتخاب و فیلتر سهام است. با استفاده از این روش، میتوان سهام هایی را که شرایط خاصی را دارند انتخاب و به صورت خودکار آن ها را خریداری یا فروش کرد. الگوریتم های مورد استفاده در فیلترنویسی در بورس معمولاً بر اساس تحلیل دادههای بازار سهام و شاخصهای مالی است. این الگوریتمها میتوانند از روشهای مختلفی مانند تحلیل تکنیکال، تحلیل بنیادی و استراتژیهای مبتنی بر قوانین محاسباتی استفاده کنند.
حجم گسترده دیتا های تاریخی و پیش بینی در بازارهای مالی از یک سو و نیازمنـدی فعالان این بازارها در استفاده ی همزمان از این اطلاعات منجر به ارائه راهکار های متنوعی جهت سهولت در استفاده و در نهایت، تصمیم گیری سرمایه گذاران شده است. حجم بالای اطلاعات و نیاز به بررسی همزمان دو عامل مهم به نظر می رسند، اما فاکتور سومی که اهمیت موضوع را دوچندان می کند، سرعت دسترسی به اطلاعات طبقه بندی شده است.
برای مثال در بازار سهام ، جست وجو در بین صدها نماد بازار جهت غربال کردن نماد هایی که یک یا چند ویژگی مورد نظر ما را دارند، بسیار سخت و زمان بر است. تصور کنید، بین تعداد بالای سهام شرکت هایی که قابلیت معامله در بازار سهام را دارند، به دنبال سهمی خاص با ویژگی معاملاتی خاصی هستید. برای مثال سهمی که صف خرید باشد و تمایل دارید فقط اطلاعات این نوع خاص از سهم ها نشان داده شود.
فیلترنویسی به طور دقیق ابزاری است که به این نوع از تقاضای معامله گران پاسخ و اطلاعات را در انواع مختلفی از دسته بندی ها فیلتر و ارائه می دهد. در واقع فیلترنویسی در بورس همان غربالگری سهم مناسب بر اساس دستور است.
شرکت مدیریت فناوری بورس تهران یکی از ارکان اصلی بازار سرمایه و زیرمجموعه سازمان بورس و اوراق بهادار است. این شرکت ، قابلیتی در قالب فیلترنویسی در بورس اضافه کرده است که در بخش دیـده بـان بـازار می توان به آن دسترسی پیدا کرد. در این بخش، شبه کدها یا اسکریپت هایی قرار دارد که دارای عملگرها و فیلدهای از قبل آماده و بخشی از نیازهای سفارشی کردن اطلاعات را فراهم کرده است.
برای فیلترنویسی در بورس نیاز به استفاده از هیچ نرم افزار جانبی دیگری نیست و می توان تحت وب در محیط اسکریپت سایت از دستورات آماده ارائه شده استفاده کرد. بنابراین ، استفاده از این محیط درجهت دسته بندی اطلاعات سـاده بـوده و امکان سرعت بخشیدن به اطلاعات موردنیاز را فراهم می کند.
انواع فیلترهای مورد استفاده در فیلترنویسی در بورس عبارتند از:
- فیلترهای قیمت: این فیلترها بر اساس قیمت سهم، مانند قیمت بازگشایی و پایانی سهم، نسبت به حجم معاملات و تغییر قیمت سهم، سهامها را فیلتر میکنند.
- فیلترهای مالی: این فیلترها بر اساس شاخصهای مالی مانند نسبت سود به قیمت (P/E)، نسبت سود به فروش (P/S) و نسبت قیمت به نقدینگی (P/B) سهامها را فیلتر میکنند.
- فیلترهای تکنیکال: این فیلترها بر اساس الگوهای نموداری مانند روند قیمت، نقطه ورود و خروج و شاخصهای تحلیل تکنیکال دیگر سهامها را فیلتر میکنند.
فیلترنویسی با مزایا و معایب خود، طرفداران خاصی دارد که روزانه با توجه به سهامی که در فیلترها رصد کنند، اقدام به خرید و فروش سهام می کنند. نحوه اعمال و بررسی فیلترها، مهارتی است که برای یادگیری ان نیاز به آموزش است. آموزش فیلترنویسی به صورت رایگان در اغلب سایت ها موجود و ما در این بخش که معرفی و آشنایی با فیلترنویسی است، در بخش های بعدی مراحل مختلفی را تشریح خواهیم کرد. همه افرادی که اطلاعات کافی درمورد خرید و فروش سهام دارند، می توانند فیلتر نویسی را بیاموزند.
![فیلر نویسی در بورس](https://cdn.arongroups.co/uploads/2023/10/فیلر-نویسی-در-بورس-1024x683.jpg)
مزایای فیلترنویسی در بورس
- افزایش سرعت و دقت در انتخاب سهام و رصد سریع: با استفاده از فیلترها می توانید تمام نمادهای گروه های مختلف بازار را زیر نظر و وضعیت آنها را در سریع ترین زمان تحلیل کنید.
- نیاز نداشتن به نرم افزارهای جانبی: فیلتر نویسی به کمک سایت tsetmc (تـب دیده بان بازار > فیلترنویسی) انجام می شود. پس به هیچ نرم افزار کمکی دیگری نیاز ندارد .
- امکان رصد بازار با استراتژی ها و دسته بندی های مختلف و امکان خودکارسازی فرآیند خرید و فروش سهام: برای مثال، انتخاب فیلتری با ویژگی هایی مثل عدم نمایش حجم معاملات، نمایش تعداد و قیمت معاملات
- کاهش خطر و ریسک سرمایهگذاری به علت نمایش اطلاعات تکنیکالی و فاندامنتالی به صورت تجمیعی: فیلترها می توانند برخی اندیکاتورهای تحلیل تکنیکال یا موارد قابل استفاده در فاندامتال را روی نمادهای انتخاب شده پیاده سازی کنند. پس احتیاج به تست در نرم افزارهای مختلف به صورت جداگانه وجود ندارد.
- راحت بودن محیط اسکریپت نویسی: برای استفاده از قابلیت فیلتر نویسی از اسکریپت استفاده می شود که در آن، نیازی به فراگیری برنامه نویسی حرفه ای نیست و با توجه به راهنمای سایت شرکت مدیریت فناوری بورس تهران از ( tsetmc ) استفاده می شود.
معایب فیلترنویسی در بورس
- بومی سازی: بومی سازی یکی از ویژگی های فیلترنویسی در بورس تهرآن است. این ویژگی، باعـث عدم استفاده از آن در سایر بازارهای مالی می شود، زیرا در آنها به اطلاعات متفاوتی نیاز و فقط در بازار بورس تهران امکان استفاده از آن وجود دارد.
- عدم استفاده از دوره های زمانی (تایم فریم) مختلف: در حال حاضر در فیلترنویسی تنها امکان استفاده از تایم فریم روزانه موجود و امکان تعویض تایم فریم به هفتگی ، ساعتی و … وجود ندارد.
- عدم استفاده از بک تست (بررسی روی دیتا های گذشته): فرض کنید فیلتری تعریف کرده ایم که اگر سهمی درصد رشد کرد ، متوجه شویم برای خرید مناسب است ؛ اما نمی تونیم بدانیم در گذشته ، زمانی که سهم در این شرایط بوده ، چه اتفاقی برایش افتاده است .
- ارتباط نداشتن با سایر نرم افزارها برای گزارش گیری
- محدودیت دسترسی به داده های گذشته: طبق بررسی ها، برای برخی از داده های گذشته محدودیت دسترسی تا ۲۱ روز قبل مشاهده شده است.
- فیلترنویسی یک زبان برنامه نویسی مانند MQL در نرم افزارهای معاملاتی نبوده و به همین علت فراگیر نیست.
- وابستگی به دادههای بازار و الگوریتمهای برنامه نویسی
- عدم درک کامل از عوامل بنیادی و تحلیل تکنیکال سهام
قالب های فیلترنویسی در بورس
برای نوشتن فیلتر از دو قالب می توانیم استفاده کنیم:
- قالب ساده
- قالب کدنویسی
در روش قالب ساده قادر به استفاده از فیلدهای اطلاعاتی، عملگرها و توابع پیش ساخته هستید. هر فیلتر می تواند از تعدادی شرط تشکیل که با عملگرهای and , or از هم جدا شده اند. برای مثال برای نوشتن فیلتر در قالب ساده ، کافیه که شرط خود را به زبان ساده بیان و بعد با فیلدهای مجاز معادل آنها را در فیلتر بنویسیم.
(pl) > 1000 && ( pc ) > 1000
من سهامی را می خواهم که در روز آخر کندل مارابوزو دارند. یعنی قیمت اولین مقدار معامله ( ( pf ) ) برابر == ) با کمترین قیمت معامله ( ( pmin ) ) و ( && ) قیمت آخرین معامله ( ( pl ) ) برابـر ( == ) با بیشترین قیمت معامله ( ( pmax ) ) باشد و قیمت بیشترین مقدار ۳ درصد بیشتر از ( > ) قیمت کمترین باشد ( قادر به استفاده جای ۳ درصد از هر مقدار مجاز دلخواه هستید).
پس برای فیلترنویسی بورس در قالب ساده، کافیه که هر چه را می خواهیم، اول به زبان خود بنویسم و سپس با استفاده از فیلدهای موجود، به زبان TSE ترجمه کنیم .
در روش قالب کدنویسی، علاوه بر موارد بالا، قادر به نوشتن برنامه خود هستید. در این برنامه، می توانید توابع جدید بسازید و از دستورات حلقه، شرط، تعریف متغیر و … استفاده کنید. برای این حالت باید قالب زیر را به کار ببرید :
true == function()
{
—– محل تعریف توابع شما —- //
—-محل تعریف برنامه شما—- //
}()
گاهی هنگام فیلترنویسی ، نیاز به تعریف و محاسبه متغیرهای جدیدی هستیم. آنها را در فیلـد خـالی بگذاریم و آنها را در شروط خود به کار ببریم.
ساخت ستون و فیلد جدید و استفاده از آن در قالب شخصی: با استفاده از کدنویسی می توانید اطلاعات جدیدی را محاسبه کنید و در دیده بان بازار نمایش دهید. سه فیلد در اختیار دارید:
(cfield0)
(cfield1)
(cfield2)
در فیلتری به میانگین هفتگی قیمت های پایانی نیاز دارید؛ ولی این مقدار در هیچ فیلدی ذخیره نشده است. بنابرین، باید خودتان تابعی را تعریف که براساس آن میانگین هفتگی را حساب و در فیلتر خود از آن بهره ببرید. برای اینکه قادر به نوشتن فیلترهای جدیدی باشید، دو مورد از معروف ترین و در عین حال پر کاربردترین توابع را در اینجا معرفی می کنیم:
حلقه یا for در فیلترنویسی بورس
طرز کار حلقه به شرح زیر است:
گزاره مقداردهی فقط یک بار و در ابتدای کار اجرا می شود.
سپس عبارت شرط (تست) ارزیابی می گردد. اگر عبارت تست نادرست باشد، حلقه for پایان می یابد.
اگر عبارت تست درست باشـد، کدهای درون بدنه حلقه for اجرا می شوند و عبارت update به روزرسانی می شود.
یک بار دیگر عبارت تست ارزیابی و این فرآیند تا زمانی تکرار که عبارت تست false شود.
ساختار یا فلوچارت حلقه به شکل زیر است:
![فلوچارت حلقه](https://cdn.arongroups.co/uploads/2023/10/فلوچارت-حلقه--227x300.jpg)
حلقه for به این شکل نوشته می شود:
![حلقه for در فیلتر نویسی](https://cdn.arongroups.co/uploads/2023/10/حلقه-for-در-فیلتر-نویسی-300x120.jpg)
مثال: می خواهیم میانگین قیمت پایانی نمادها را برای پنج روز حساب کرده و در فیلدی نمایش دهد. از قالب کدنویسی استفاده می کنیم: ابتدا باید متغیرهایی را تعریف کنیم که می خواهیم سیستم آنها را بشناسد. یک متغیر برای میانگین و یک متغیر برای حلقه می خواهیم:
I برای حلقه
Avr برای میانگین
Sum برای مجموع
بعد اجرای حلقه
بعد فیلددهی
true == function ( )
{
var i = 0;
var avr = 0;
var sum = 0;
for ( i = 0; i < 5 ; i + 1 )
{
sum = sum + [ ih ] [ i ] .PClosing
}
avr = (sum / 5);
( cfield0 ) = avr;
} ()
نکته مهم: پس از هر خط از دستورات، از علامت ; استفاده می کنیم و برای توضیحات به صورت نوشتاری از // بهره می بریم.، البته به جز داخل حلقه ها.
تابع شرطی if
در تابع شرطی if ، ابتدا شرط را مشخص می کنیم و بعد اگر شرط برقرار باشد، یک دستور و اگر برقرار نباشد، دستور دیگری را اجرا می کنیم.
If (شرط یا شروط)
{ دستورات داخل آکولاد نوشته می شود
Return True; اگر می خواهیم نماد نمایش داده و شود از این دستور استفاده می کنیم
{
Else
{
Return False; این دستور صرف نظر از نماد هست
}
البته، به جای نمایش یا عدم نمایش، می توان از دستورات دیگر هم استفاده کرد. مثال برای هر دو تابع در این مثال می خواهیم میانگین هفتگی قیمت محاسبه شده و در قالب ( cfield0 ) avr ) نمایش داده شود و بعد، نماد هایی که حجم معاملات آن بیشتر مساوی دو برابـر میانگین هفتگی باشد و درصـد قیمت پایانی بیشتر از صفر باشد ( 0 < ( avr > = ( tvol ) * 2 && ( pcp ) ، فیلتر کند و نشان دهد.
true = function ( )
{
var i = 0;
var avr = 0;
var sum = 0;
for ( i = 0 ; i < 5 ; i + 1 )
{
sum = sum + [ ih ] [ i ] .PClosing
}
avr = ( sum / 5 );
( cfield0 ) = avr;
if ( avr > = ( tvol ) * 2 && ( pcp ) > 0 )
{
return true;
}
Else
{
return false;
}()
در مقالات بخش های بعدی تلاش خواهم نمود نحوه کار با سایت بورس طهران و انجام تنظیمات و همچنین یک سری از اسکریپت ها و کدها جهت سهولت عزیزان آموزش دهم. با سایت آرون گروپس همراه باشید.