الگوریتمیک تریدینگ یا معاملات الگوریتمی چیست؟
الگوریتمیک تریدینگ یا معاملات الگوریتمی عبارتیست که احتمالا زیاد آن را شنیده اید، به خصوص اگر در حوزه بازار سرمایه بورس یا ترید رمز ارز فعالیت داشته اید. زمانی که بحث الگوریتم و محاسبات ماشینی به میان میآید، المان احساس، حدس یا گمان حذف میشود و کل قضاوت معامله بر عهده کامپیوتر قرار میگیرد. کامپیوتر با الگویی از پیش تعیین شده فرایندهایی که قبلا فرد ناچار بود خود تک به تک انجام دهد به صورت خودکار پیاده سازی میکند. از سویی سرعت و دقت معاملات بیشتر میشود ولی از سوی دیگر نیاز به دادههای دقیق تر و به روزتر هم بیشتر میشود.
این مقاله از جهت پیشنهاد به استفاده از الگوریتم خاص یا پلتفرم معاملهگری خاصی نوشته نشده است و صرفا هدف آگاهی رسانی و بررسی این ابزار فنی از جنبه تکنیکال و توسعه را دارد.
یک تاریخچه از معاملات الگوریتمی
تاریخچه الگوریتمیک تریدینگ با داستانهای زیادی شروع میشود، شاید از فردی که اولین بار از کبوتر برای انتقال اطلاعات مالی استفاده کرد، شاید از ساموئل مورس که مفهوم تلگراف را ممکن کرد. شاید از اولین فردی که نمایشگر بورس را اختراع کرد یا شاید از زمانی که NASDAQ ایجاد شد. ولی معمولترین شروع برای این فرم معاملاتی از زمانی بیان میشود که بورس نیویورک برای اولین بار سیستم Order Turnaround Designated یا دات را معرفی و سپس در سال ۱۹۸۴ ورژن بهروزتری یعنی SuperDOT را عرضه کرد.
از آن زمان به بعد بود که به همت فعالان بازار بورس معاملات الگوریتمی اتومات و شبکه های الکترونیکی زیرساخت برای دریافت دادههای بهروز معرفی و هرروز بهبود داده شدند.
بر اساس یک آمار اخیر درصد افراد فعالی در بورس که ۸۰درصد یا بیشتر از پورتفولیو سهامی خود را از طریق الگوریتمیک تریدینگ معامله میکنند، از رقم ۱۰.۹۸٪ سال ۲۰۲۰ به ۲۰.۷۵٪ در سال ۲۰۲۱ رسید. این آمار نشاندهنده این است که افزایش اطلاعات در این حوزه چه رشد سریعی دارد و حضور افرادی که به دنبال هوشمندسازی معاملاتشان در در بازارهای بورسی هستند چه قدر افزایش پیدا کرده است.
البته الگورتمیک تریدینگ صرفا محدود به بازار بورس نیست و امروزه در بازارهای معامله رمرارز که سرعت تغییر داده بالایی دارد نیز بسیار محبوب شده است.
الگوریتمیک تریدینگ دقیقا چیست؟
الگورتمیک تریدینگ که با نام های دیگری مانند Automated Trading (معامله اتوماسیون شده)، Black-box trading یا معاملات الگوریتمی شناخته میشود از برنامههای کامپیوتری که مجموعهای دستورات پیشفرض برایشان تعریف شده است استفاده میکنند تا بتوانند سفارشاتی برای یک معامله را ثبت کنند. این معامله اتومات از این جهت که سرعت و تناوبی فراتر از سرعت انسانی دارد حاشیه سود بیشتری را ممکن میکند.
دستورات پیش فرض این معاملات بر اساس زمان، قیمت، تعداد و یا هر مدل ریاضی مرسوم دیگری میتواند باشد.
یک مثال ساده
الگوریتم تعیین شده توسط کاربر این دستور را به سامانه میدهد که در صورت عبور سهام میانگین حرکت ۵۰ روزه سهام از میانگین حرکت ۱۰۰ روزه آن بیشتر شده بود و از حد قیمت میانگین ۵ دلار پایین آمده بود اردر خرید سهام را بگذارد.
در صورت افزایش حد قیمت میانگین همین سهام بعد از میانگین حرکت ۱۰۰ روزه نسبت به میانگین خرید قبلی، اردر فروش را ثبت کند.
با استفاده از این دو دستورالعمل، برنامه کامپیوتری به صورت هوشمند قیمت سهام را در بازههای قبل و بعد از سفارش چک میکند و در صورتی که معیار مد نظر کاربر دیده شد اردر را ثبت میکند. با کمک این برنامه نرم افزاری فرد دیگر لازم نیست خودش دائم پشت سیستم و درحال چک کردن قیمتها و حرکت چارتها باشد، درگیر هیجانات در ثبت دستورات خرید و فروش شود و یا سرعت پایین اینترنت در یک لحظه منجر به از دست دادن یک فرصت بی نظیر برای سود بیشتر شود.
این فرایند از یک فرایند برنامه نویسی شده پیروی می کند که به عنوان الگوریتم شناخته میشود.
الگوریتم میگوید که چه اتفاقی در چه زمانی و تحت چه شرایطی رخ دهد یا ندهد.
استراتژیهای الگوریتمیک تریدینگ
استراتژیهای معاملات الگوریتمی بر اساس فرصتهای شناسایی شده که منجر به کاهش هزینه یا افزایش سود می شوند طراحی میشوند.
برخی از استراتژیهای متداول:
برای مثال استراتژی Trend-following، یکی از معمولترین استراتژیها معاملات الگوریتمی است که ترندها در میانگین متحرک Moving Average، شکست کانال Channel Breakout، تغییرات سطح قیمت و سایر شاخصهای تکنیکال را در نظر میگیرد. این استراتژی پیش بینی قیمت نمیکند و در واقع الگوریتم به دنبال سهامهای مطلوب یا محبوب در بازار میگردد و بر اساس آن اردر خرید را ثبت میکند.
معاملات آربیتراژ Arbitrageهم احتمالا نام آشنایی برایتان باشد و در این حالت الگوریتم به دنبال سهامهایی که در دو پلتفرم مجزا با قیمتهای متفاوت ثبت شده اند میگردد. در بازاری که سهام قیمت کمتری دارد آن را میخرد و در بازاری که قیمت بیشتر دارد سهام را میفروشد.
مزایای الگوریتمیک تریدینگ
-
حذف دخالت احساسات و هیجانات انسانی
همانطور که پیشتر گفتیم، زمانی که قدرت تصمیم گیری بر اساس دادههای مشخص و معیارهای قابل اندازه گیری به یک برنامه کامپیوتری داده میشود، این برنامه (در اینجا الگوریتم معامله) قابلیت تصمیم گیری هوشمند را دارد. تصور کنید که ناگهان خبر رشد یک سهام را به شما داده اند، در اینجا هیجان ناشی از خبر مثبتی که به شما رسیده باعث ثبت یک سفارش خرید هیجانی میشود. چیزی که شما نمی دانید این است که این خبر علاوه بر شما ممکن است به هزاران نفر دیگر هم رسیده باشد و شبکهای جهت رشد بیپشتوانه یک سهام ایجاد شده باشد. سهام برای چند روز در وضعیتی مناسب است ولی بعد از مدتی شروع به سقوط میکند، ولی شما که به منبع خبر اعتماد دارید منتظر میمانید تا تغییری ایجاد شود، تنها زمانی متوجه اشتباه محاسباتی خود میشوید که ضرر به وجود آمده بیش از توان پورتفولیو شما است. این یک تصمیم احساسی و بدون پشتوانه اطلاعات منسجم بوده که هیچ وقت یک الگوریتم کامپیوتری آن را مرتکب نمیشد.
-
ایجاد نظم در معاملات
معاملات ثبت شده توسط الگوریتمها و باتهای معامله که از دادهها و Indicatorها استفاده میکنند، منطق و پشتوانه دادههای Historical را به همراه دارد. چنین سفارشاتی نظمی قابل پیگیری دارند و تنها زمانی منجر به اختلال در بازار سرمایه میشوند که Indicatorهای کلی آن بازار سرمایه خطایی محاسباتی داشته اند. این اتفاق در مقابل تعداد بیشتر سفارشات منظم ثبت شده در بازار ناچیز است و همچنان به عنوان یکی از مزایای اصلی معاملات الگوریتمی شناخته میشود.
-
افزایش سرعت ثبت سفارش
الگوریتمها از ترندها و دادههایی استفاده میکنند که نقاط مشخص ورود و خروج را تثبیت شده نمایش می دهند. به محض وقوع یک نقطه خاص الگوریتم به صورت هوشمند شناسایی میکند که سفارشی باید ثبت شود و دیگر مسائلی مانند سرعت به مراتب پایین تر انسان از ماشین، اختلالات سیستمی مانند اینترنت یا در دسترس نبود یک کامپیوتر دیگر برای الگوریتمی که مستقیم با API خود صرافی در ارتباط است مطرح نیست.
چطور سامانه انلاینی برای الگوریتمیک تریدینگ داشته باشیم؟
الگوریتمیک تریدینگ یک عضو حیاتی برای تمامی سامانههای معاملاتی است و با افزایش مطلوبیت این استراتژیهای هوشمندسازی برای کاربرانی که علاقهمند به معاملات تکنیکال هستند، داشتن یک صرافی رمزارز یا سامانه تریدینگ بدون این امکان، شانس بقای سامانه در بازار رقابت را کمرنگ میکند.
برای این که صرافی امکان ارائه این خدمت به کاربرانش را داشته باشد به یک واسط نرم افزاری یا API نیاز است.
اگر علاقه دارید در مورد APIها و کاربرد آنها بیشتر بدانید اینجا را مطالعه کنید.
خیلی ساده و خلاصه، API سرور وبسایت یا سامانه شما مقدور میکند که به به درخواستهای فردی که قصد برقراری ارتباط با سرور دارد، پاسخ دهد.
فرض کنید فردی قصد اجرای معاملات الگوریتمیک بر اساس Trend-Following را داشته باشد، در این حالت الگوریتم نیاز به اردرهای قبلی یک سهام و حجم آنها دارد. این اطلاعات در دیتابیس سامانه شما ذخیره شده است و الگوریتم با اتصال به API امن قرار گرفته بر روی سرور شما میتواند این سفارشات را با توجه به محدودیتهایی که شما قرار داده اید دریافت کند. منظور از محدودیت این است که اگر سرور قرار باشد به میلیونها درخواست پاسخ دهد، مدیریت این درخواستها، چک کردن امنیت درخواست و یا احراز هویت سامانه درخواست کننده برای سامانه سنگین است. پس شما یک محدودیت یا LIMIT بر روی تعداد درخواستی که یک بات میتواند در ساعت بفرستد قرار میدهید.
علاوه بر تامین امنیت سامانه شما، این سیاستهای امنیتی یک لایه مدیریت بر رویدادهای بازار سرمایه نیز هستند.
پس یکی از کارهایی که توسعه دهنده در طراحی سامانه تریدینگ یا صرافی رمزارز شما انجام می دهد، پیاده سازی یک زیرساخت استاندارد برای طراحی API است. این API به طور انحصاری برای صرافی یا سامانه تریدینگ طراحی میشود و امکان استفاده از آن برای سامانهای دیگر وجود ندارد.
هر API مستندات مشخصی برای استفاده افراد (منظور افرادی با دانش فنی و برنامه نویسی که توانمندی پیادهسازی اصولی دستورات را دارند است) دارد. با استفاده از دستورات مشخص شده در این مستندات، یک پرتوکل مشخص برای الگوریتمیک تریدینگ تنظیم میشود.
مثالی شفاف تر از API لازم برای الگوریتمیک تریدینگ
صرافی رمز ارز شما کاربری دارد که قصد استفاده از الگوریتمیک تریدینگ برای بهتر کردن معاملات خود دارد.
-
مرحله اول Token:
برای این که این فرد بتواند به دیتای موجود در سیستم صرافی دسترسی پیدا کند به او یک کد اختصاصی یا Token میدهید. این توکن مثل یک کارت شناسایی و جهت احراز هویت کاربر عمل میکند. برای امنیت بیشتر سامانه، توکن را بر اساس روز محدود میکنید. کاربر برای ۱۵ روز یک توکن فعال دارد و اگر قصد استفاده مجدد از API بعد از ۱۵ روز را داشت باید درخواست دیگری ثبت کند.
-
مرحله دوم User Agent:
شما یک توکن برای دسترسی به سامانه دارید ولی هرروز هزاران بات یا همان الگوریتمها قصد دسترسی به سامانه را دارند. پس هر بات باید نام اختصاصی مطابق الگویی از پیش تعیین شده نیز داشته باشد. این کار علاوه بر بهبود تامین پشتیبانی برای باتها، عیبیابیهای آینده سامانه را نیز ممکن میکند
-
مرحله سوم Rules:
هر سامانهای که درخواستهایی از خارج دریافت میکند ملزم به تدوین و تنظیم مجموعهای از دستورالعملها برای سامانه است. این دستورالعملها بر اساس نیازهای صرافی یا سامانه تریدینگ و با توجه به کاربران و نیازهای آنها تدوین میشود.
به عنوان مثال محدودیتی که برای فعال بودن یک توکن وجود دارد، یا نوع دستوراتی که الگوریتم به صورت همزمان میتواند درخواست کند در این دستورالعملها تعیین میشود.
-
مرحله چهارم طراحی API و اتصال آن به دیتا:
در نهایت معماری API، نوع ارسال درخواستها، پارامترهای ورودی و خروجی برای API تعیین میشود و API قابل استفاده است.
اهمیت مدیریت درخواستها و تعیین پیش فرض پارامترهای ورودی و خروجی در سامانه آنجاست که حفظ یکپارچگی بین درخواستهای ارسالی به سرور و ورودیهای خروجی از آن مدیریت دادههای سامانه را ممکن میکند.
تصور کنید که یک بات درخواست دیتای لیست معاملات ۱۰ روز گذشته را دارد، شما پیش فرضی تعیین کرده اید که فرد درخواست خود را به صورت (نام نماد- روزشروع- ماه شروع- روز پایان-ماه پایان) ارسال کند. و شما نیز تنها به هر ۱۵ درخواست ورودی از بات در دقیقه پاسخ میدهید. ولی بات درخواستی به صورت (روز و ماه شروع- روز و ماه پایان-شماره نماد در سامانه) ارسال میکند و در یک دقیقه بعد ۲۰ درخواست دیگر برای پریود های زمانی متفاوت نیز ارسال میکند.
اگر چند بات با همین فرمت نامنظم درخواست ارسال کنند، سرور شما مانند کارمندی میشود که از شدت پیچیدگی درخواستهای دریافتی قابلیت پاسخگویی منسجم ندارد.
-
مرحله پنجم امکان ثبت سفارشات ورود و خروج:
بخشی از کار بات تصمیم گیری بر روی یک سهام یا ارز دیجیتال است، بخش دیگر کار بات که در این سناریو برای کاربر نهایی اهمیت بیشتری هم دارد، ثبت سفارش آنی یا Real-Time است.
پس API باید راهحلی برای اتصال بات به بازار مانند یک فرد واقعی را ایجاد کند. ثبت سفارش نیز مانند یک درخواست است. بر اساس سیاست تدوین شده در صرافی یا سامانه تریدینگ، یک کد مشخص برای ثبت درخواست وجود دارد. بات این درخواست را به API میفرستد، درصورتی که پارامترهای مد نظر API در درخواست وجود داشته باشد، نوع درخواست شناسایی شده و سفارش ورود یا خروج به سهم ثبت میشود.
در این بین باید یک لایه بررسی برای درخواستهای ثبت سفارش در نظر گرفته شود که امنیت درخواست ورودی، ممکن بودن آن و یا موجود بودن درخواست را بر اساس دیتای موجود در سامانه چک کرده و مقادیر دقیق را برگرداند. در عین حال API باید بتواند سبد سهامی یا والت فرد را نیز آپدیت کرده و گزارش آنرا در سامانه ثبت کند.
این مراحل یک خلاصه بسیار ساده شده از فرایند کاری یک API برای معاملات الگوریتمی بود، به طبع فرایند پیادهسازی و طراحی چنین سیستمی نیازمند مطالعات جزئی تر و تدوین استراتژیهای متعدد از سمت سرور و سامانه و نحوه ارتباط آنها با کاربر است.
جمع بندی نهایی
الگوریتمیک تریدینگ موضوع بسیار گسترده ای است و این مقاله صرفا به معرفی بخش کوچکی از آن پرداخت. هدف نمایش اهمیت این فیچر در سامانههای معامله ارز دیجیتال بود. در صورتی که هدف سرمایه گذاری بر توسعه یک صرافی ارز دیجیتال را دارید در نظر داشته باشید که برای جذب کاربران حرفهای به پلتفرم و رفع نیازهای این کاربران داشتن این امکان در صرافی اهمیت بالایی دارد. در این زمینه تیم نوژن میتواند به شما مشاوره نرم افزاری لازم را ارائه دهد و یا پروژه توسعه صرافی رمز را از ابتدا بر عهده گرفته و آن را توسعه دهد.
اگر دوست دارید در خصوص طراحی صرافی ارز دیجیتال مطالعه بیشتری داشته باشید اینجا، اینجا و اینجا را ببینید.