معاملات الگوریتمی چیست؟
معاملات الگوریتمی چیست؟ تاثیر هوش مصنوعی در معاملات الگوریتمی چیست؟ آیا فرق اتو تریدینگ و الگو تریدینگ را میدانید؟ مزایا و معایب این نوع معاملات چیست؟ تا بهحال نام معاملات الگوریتمی به گوشتان خورده است؟ زمانی که معاملات بورس راه افتاد هنوز رایانهها به شکل امروزی در دنیای مالی نفوذ نکرده بودند و معاملات بهصورت فیزیکی و سنتی انجام میشد. برای خرید و فروش یک سهم باید با ماشین یا اتوبوس به خیابان حافظ رفته و تازه قیمت روز سهم خود را روی تابلو میدیدید و فرم خرید و یا فروش را پر میکردید. اما امروز به معرفی الگوریتم استراتژیک معاملاتی معرفی الگوریتم استراتژیک معاملاتی لطف دنیای مجازی و اینترنت، پشت لپتاپ شخصی خود نشسته و قیمت سهمها را بهصورت آنلاین در سایت کارگزاری میبینیم و معامله میکنیم.
معاملات الگوریتمی چیست؟
معاملات الگوریتمی یا معاملات خودکار یک ابزار برای معامله در بازارهای سرمایه است. بر این اساس شما میتوانید با استفاده از هوش مصنوعی بهصورت اتوماتیک و یا نیمه اتوماتیک و با استفاده از کدهای برنامه نویسی شده، موقعیتهای مناسب در بازار را شناسایی و آنها را شکار کنید.
خیلیها معاملات الگوریتمی را با استراتژی معاملاتی یا فیلترنویسی اشتباه میگیرند. درصورتی که همه اینها زیرمجموعهای از معاملات الگوریتمی هستند. درواقع معاملات الگوریتمی یک ابزار معاملاتی کامل است که شما با استفاده از این ابزار میتوانید معاملات دقیقتر و سریعتری انجام دهید تا معرفی الگوریتم استراتژیک معاملاتی خطای کار را کاهش و نتایج معاملات را بهبود بخشید.
الگوریتمها میتوانند بیش از یکی باشند و بهصورت ترکیبی و پیچیده مورد استفاده قرار گیرند. آنها برای انجام معاملات، بررسیهای مختلفی از جمله زمانبندی، قیمت و حجم را در بازار انجام میدهند و بر اساس دیتاهای موجود برای معاملات تصمیمگیری میکنند. این ابزار کمک میکند تا بدون درگیر شدن احساسات، در بازار معامله کرد که در نهایت موجب افزایش حجم معاملات میشود.
معاملات الگوریتمی برای چه کسانی کاربرد دارد؟
هر شخصی میتواند از این ابزارها برای معاملات خود در بازارهای مالی استفاده کند. از این ابزار در بازارهای بورس داخلی و خارجی نظیر بورس آمریکا، فارکس و ارزهای دیجیتال استفاده میشود.
منتهی از این ابزار فقط به قصد گرفتن سود در بازار استفاده نمیشود؛ بلکه گاهی اوقات از این ابزار فقط برای سیگنالگیری و محدود کردن تعداد فرصتهای معاملاتی، اردرگذاری اتوماتیک یا مدیریت ریسک و سرمایه نیز استفاده میشود.
پیشنیازهای معاملات الگوریتمی
نتیجه مطلوب از معاملات الگوریتمی نیاز به بستری مناسب برای اجرایی شدن آن دارد. بستر معاملات الگوریتمی به سه عامل مهم بستگی دارد.
مطابقتدهندههای بازار یا منبع تغذیه دادهها
این مطابقت دهندهها فرمت اطلاعات بازار را به فرمتی که برای سیستم قابل درک باشد، تبدیل میکنند. همچنین دسترسی لازم به اطلاعات حساب و دیتاهای بازار فراهم میکنند. این کار از طریق رابط برنامهنویسی یا همان API که بازار معاملاتی در اختیار معاملهگر قرار داده، انجام میشود.
موتور پردازش دادههای معاملات الگوریتمی
این موتور مغز متفکر معاملات الگوریتمی است. موتور پردازشگر در این مرحله الگوریتمهای برنامهریزی شده توسط استراتژیهای معاملاتی و شروط تعیین شده ما را باهم و در آن واحد روی کل بازار اعمال میکند و هرگاه شرایط لازم در سهمی پیدا شد، برای معامله تصمیمگیری میکند. بهعنوان مثال فرض کنید که ما میخواهیم سهمهایی که در بازار RSI آنها معرفی الگوریتم استراتژیک معاملاتی زیر 30 است را شناسایی کنیم. از بین صدها سهم بازار شاید برای انسان این کار بسیار زمانبر و دشوار باشد، اما برای یک موتور پردازش کننده بسیار راحت است.
ارسال سفارشات به بازار توسط الگوریتمها
در این مرحله سفارشاتی که با الگوریتمهای ما مطابقت دارند به بازار ارسال میشود. تنها نکتهای که اینجا مهم است این است که معرفی الگوریتم استراتژیک معاملاتی بستری که الگوریتم ما روی آن کار میکند، برای بازاری که در آن معامله میکنیم، قابل درک باشد.
الگوریتمهای معاملاتی چه وظایفی دارند؟
معاملات الگوریتمی برای انجام درست و کامل بر اساس استراتژی مشخص شده چهار وظیفه کلی دارند:
- رصد و تحلیل کل بازار بهصورت دقیق و با بیشترین سرعت ممکن
- ثبت اردرها و پوزیشنگیری
- مدیریت پوزیشن
- مدیریت ریسک و سرمایه
هر الگوریتم معاملاتی میتواند هریک این چهار مورد را بهطور کاملا اتوماتیک و با استفاده از رباتهای معاملهگر انجام دهد که به آن معاملات خودکار یا کاملا اتوماتیک میگویند. گاهی هم این چهار مورد بهصورت ترکیبی با هوش انسانی در معاملات بهکار گرفته میشود که در اینصورت به آن معاملات نیمه خودکار میگویند.
طبقهبندی عملکردی معاملات الگوریتمی
الگوریتم معاملاتی یا الگوریتمهای معاملاتی در بازار بر اساس کارهایی که انجام میدهند و وظایفی که برعهده دارند، در طبقهبندیهای مختلفی قرار میگیرند.
الگوریتمهای اجرای معاملات
این نوع الگوریتمها صرفا برای مدیریت اردرگذاری و اجرای معاملات بهکار گرفته میشوند. تحلیل دادهها پس از پردازش برای این الگوریتمها ارسال و آنها براساس دادههای موجود اقدام به اردرگذاری سفارشات بر اساس استراتژی تعیین شده میکنند. نحوه اردرگذاری در این نوع الگوریتمها هم میتواند بهصورت اتوماتیک و هم بهصورت دستی باشد و الگوریتم تنها موظف به اجرای آنها است.
بهعنوان مثال فرض کنید یک شخص حقوقی میخواهد به اندازه 100 میلیارد تومان از یک سهم و در بازه قیمتی مشخصی خرید کند. خوب قطعا یک اردر 100 میلیارد تومانی مشکلساز خواهد بود. زیرا در این صورت ممکن است قیمت تغییر کند و یا اصلا اردر ما باعث ایجاد تشکیل صف خرید شود. برای حل چنین مشکلی از الگوریتمهای اجرای معاملات استفاده میشود که کار را برای ما راحتتر کنند. با استفاده از قابلیت مدیریت اردرها، این الگوریتمها میتوانند اردر بزرگ شما را با توجه به حجم بازار معرفی الگوریتم استراتژیک معاملاتی به هزاران اردر ریز تبدیل کنند تا خریدتان راحتتر انجام شود. این عملیات در زمان فروش نیز به همین شکل خواهد بود.
الگوریتمهای سیگنالدهی
الگوریتمهای سیگنالدهی همانطور که از اسمشان پیدا است، تنها وظیفه رصد و تحلیل بازار را بر عهده دارند و به تنهایی سودآور نیستند. این الگوریتمها دادههای کل بازار را بهصورت همزمان زیر نظر میگیرند و هرگاه شرایط یک سهم با استراتژی از پیش تعیین شده ما مطابقت پیدا کرد آن را به ما گزارش میدهند. بهعبارت دیگر یکی از مهمترین کاربردهای این نوع الگوریتمها در فیلتر بازار و شناسایی سهمهای خوب است.
الگوریتمهای بهینهساز کننده
این الگوریتمها کار پایش استراتژی و مطابقت آن با شرایط روز بازار را برعهده دارند. همانطور که میدانیم، میزان سود و ضررهای یک استراتژی در شرایط بازار صعودی و نزولی یکسان نخواهد بود. این الگوریتمها، استراتژی ما را با شرایط بازار در گذشته تست میکنند. تغییرات بازار از گذشته تا به زمان حال را در بهینهترین حالت ممکن برای ما پیدا میکنند و آن تغییرات را روی استراتژی ما اعمال میکنند.
بهینهسازی استراتژی میتواند معیارهای زیادی داشته باشد که ما بر اساس اولویتمان آنها را برای الگوریتممشخص میکنیم. بهعنوان مثال ممکن است اولیتها را بر اساس بیشترین سود، کمترین ضرر یا ترکیبی از این دو حالت تنظیم کنیم. این الگوریتمها باعث میشوند تا ما بتوانیم استراتژی معاملاتی خود را با توجه به شرایط بازار همیشه بهروز و در بهینهترین حالت ممکن نگهداریم.
الگوریتمهای تریدینگ
الگوریتمهای تریدینگ وظیفه خرید و فروش سهم بر اساس استراتژی از قبل تعیین شده معاملهگر را دارند. بهعنوان مثال فرض کنید که استراتژی ما خرید پلکانی سهم در صف فروش و فروش آن در صف خرید است. بر همین اساس این الگوریتم به محض دیدن صف فروش درسهم مورد نظر عملیات خرید را آغاز و در قیمتهای از پیش تعیین شده و صف خرید، عملیات فروش سهم را آغاز میکند.
این نوع الگوریتمها براساس دوره زمانی ازقبل برنامهریزی شده به دو نوع کمبسامد و پربسامد تقسیم میشوند.
الگوریتمهای کمبسامد (LFT)
منظور از الگوریتمهای تریدینگ کمبسامد (Low Frequency Trading) این است که فاصله زمان دریافت دادههای بازار زیاد باشد. بهعبارت دیگر در این نوع الگوریتمها بالا بودن سرعت دریافت و پردازش دادهها خیلی مهم نیست. بر همین اساس استراتژیهای معاملاتی در این الگوریتمها برای تایمهای میان مدت و بلند مدت برنامهریزی میشوند.
این نوع الگوریتمها باتوجه به محدودیتها با شرایط بازارهای داخلی ایران سازگار هستند.
الگوریتمهای پربسامد (HFT)
الگوریتمهای پربسامد مخفف عبارت (High Frequency Trading) است. بر خلاف الگوریتمهای کمبسامد، سرعت دریافت دادهها در این الگوریتم بسیار اهمیت دارد. همانطور که از اسمشان پیداست این الگوریتمها مناسب نوسانگیری در تایمهای کمتر از روزانه مورد استفاده قرار میگیرند. هرچه سرعت دریافت دادهها در این الگوریتم بیشتر باشد، دقت معامله در آن نیز بیشتر خواهد بود و الگوریتم قادر خواهد بود که در تایمهای پایینتر نیز به معامله بپردازد.
بهعنوان مثال درمقیاس بازارهای جهانی، سرعت دریافت دادهها در برخی از الگوریتمهای پربسامد، به میکرو ثانیه میرسد؛ که آنها را قادر میسازد تا درتایمهای یک دقیقه و حتی کمتر نیز به معامله بپردازند. هدف از این نوع معاملات، دریافت سود کم در تعداد معاملات زیاد است.
نکته مهم دیگر این است که حتی اگر شما به همچین الگوریتمی هم دسترسی داشته باشید، ابتدا باید ببینید هسته معاملاتی بازاری که در آن کار میکنید، توان پردزاش دادهها را در چنین مقیاس سرعتی دارد یا خیر. زیرا اگر این بستر فراهم نباشد دقیقا مصداق این مثال است که شما پر سرعتترین خودروی جهان را در اختیار دارید، اما در جادهای خاکی. بنابراین این نوع الگوریتمها در ایران با محدودیتهای زیادی مواجه هستند و کاربرد زیادی ندارند.
درحقیقت معاملات الگوریتمی هم مثل دراختیار داشتن اینترنت یا دانش شکافتن اتم است. خوب یا بد بودن آن بستگی به نوع دیدگاه و نحوه استفاده ما از این ابزار دارد. دقیقا همانطور که از شکافتن اتم در علوم پزشکی استفاده شد، اما با همان دانش بمب اتم هم تولید کردهاند.
اهمیت استراتژی در الگوریتمها
الگوریتمها به تنهایی و بدون داشتن یک استراتژی سودآور نمیتوانند کاری انجام دهند. لذا داشتن یک استراتژی سودآور با دقت بک تست بالای 90% در الگوریتمها بسیار مهم و حیاتی است. درواقع الگوریتمهای معاملاتی برای اینکه بتوانند جای ما در بازارهای مالی تصمیم بگیرند، نیاز به استراتژی دارند.
انواع استراتژی در الگوریتمهای معاملاتی
استراتژیهای معاملاتی در بازارهای مالی به چند دسته تقسیمبندی میشوند:
استراتژیهای Trend Following
استراتژیهای ترند فالویینگ یا همان دنبالهروی روند، همانطور که از اسمشان مشخص است، به دنبال پیشبینی بازار برای آینده نیستند و همزمان با روند در نمودار، جهت معاملات خود را نیز تغییر میدهند. این نوع استراتژی یکی از سادهترین انواع استراتژیها است که طرفداران بسیار زیادی نیز در جهان دارد.
اصول و مبنای برنامهریزی چنین استراتژی معاملاتی استفاده از میانگینهای قیمتی است. سپس براساس اندیکاتورها و سایر شواهد بازار اقدام به صدور سیگنال خرید و فروش در بازار میکنند.
استراتژی آربیتراژ (Arbitrage)
بهطور خلاصه استراتژی آربیتراژ یعنی کسب سود از محل اختلاف قیمت در بازار. در اینجا مفهوم آربیتراژ را با ذکر مثالی برای شما بیان میکنیم. فرض کنید شرکتی قصد خرید کالای X را به قیمت 1000 تومان دارد. بر حسب اتفاق شما شخصی را میشناسید که میخواهد همان کالا را به قیمت 800 تومان بهفروش برساند. خوب کار بسیار راحت است. شما تمام کالاهای فروشنده را بهقیمت 800 تومان خریده و تمام آن را به قیمت 1000 تومان به شخص خریدار میفروشید. این اختلاف قیمت درواقع همان سود بدون ریسک یا همان آربیتراژ است.
در بازارهای مالی نیز این کار ممکن است. کار استراتژیهای آربیتراژ کننده نیز همین است که تمام دادههای قیمتی در بازارهای مختلف را باهم قیاس کنند و درصورت پیدا شدن موردی مشابه از فرصت بهدست آمده نهایت استفاده را میبرند. معمولا این نوع استراتژیها در بازارهای متمرکز مورد استفاده قرار میگیرند. بهعنوان مثال اختلاف قیمت بیتکوین در بین صرافیهای مختلف میتواند یکی از این فرصتها را بهوجود آورد.
استراتژی معامله پیش از توازن در صندوقهای شاخصی
در بازار بورس صندوقهای سرمایهگذاری مختلفی وجود دارند که بر اساس شاخصی خاص (داراییهای مسکن، داراییهای طلا، اوراق قرضه و. ) مشغول به فعالیت در آن حوزه هستند. معمولا این صندوقها را با شاخص همان حوزه فعالیتشان میسنجند. اساس کار این استراتژی این است که بازدهی صندوقها تمایل دارند همیشه خود را به شاخص نزدیک کنند. بر همین اساس زمانی که بازدهی این صندوقها پایینتر از شاخصشان باشد، بهصورت پلکانی شروع به خرید میکنند و زمانی که بازدهی آنها بیشتر از شاخص باشد، شروع به فروش آنها میکنند. این نوع استراتژیها میتوانند براساس معرفی الگوریتم استراتژیک معاملاتی تایم فریمی که در آن معامله انجام میشود، کمبسامد (LFT) یا پربسامد (HFT) تعریف شوند.
استراتژیهای مبتنی بر مدل ریاضی
استراتژیهای مختلفی در بازار وجود دارند که بر اساس مدلهای ریاضی ثابت شده، تعریف میشوند. مانند استراتژی دلتا، تحلیل پوششی دادهها و. ازجمله استراتژیهای مبتنی بر مدل ریاضی هستند که الگوریتمهای معاملاتی بر اساس این استراتژیها برنامهریزی میشوند. استراتژیهای گرید تریدینگ (Grade Trading) نیزاز همین دسته استراتژیها هستند که برای رسیدن به سودآوری نیاز به تحلیل ندارند.
بهعنوان مثال فرض کنید شما با مبلغ 1 دلار در یک شرطبندی شیر یا خط (پرتاب یک سکه) شرکت میکنید و بهصورت شانسی یک روی سکه را برای شرطبندی خود انتخاب میکنید.
دوحالت وجود دارد:
اگر برنده شدید که مشکلی وجود ندارد؛ اما اگر شما برنده نشدید، مجدد روی همان طرف سکه اما به اندازه 2 دلار (دو برابر حجم اولیه) شرطبندی میکنید. اینبار اگر ببرید، 4 دلار برنده میشوید، درحالی که تنها 3 دلار هزینه کردهاید (یک دلار سود). اگر بازهم برنده نشدید، دوباره همان شرط را با دو برابر حجم قبلی ادامه دهید (4دلار). اینبار معرفی الگوریتم استراتژیک معاملاتی اگر برنده باشید، 8 دلار برنده میشوید درحالی که تنها 7 دلار هزینه کریدهاید. این قضیه آنقدر ادامه پیدا میکند تا یکبار برنده شوید. در اینصورت شما بهاندازه میزان خرج کرد + 1 دلار برنده میشوید.
طبق احتمالات و ریاضیات این سیستم در انتها همیشه برنده خواهد بود؛ اما به شرطی که اصول مدیریت حجم و سرمایه مخصوص به خود را هم در آن رعایت کنید. این نوع استراتژیها برای ورود به یک معامله نیازبه تحلیل ندارند و تنها متکی به اصول ریاضیات هستند.
استراتژیهای گرید تریدینگ برای شروع کار حجم اولیه بالایی را نیاز دارند تا ریسک اولیه کار را کاهش دهند. بعد از اینکه استراتژی به سود نشست، دیگر خطری حساب را تهدید نکرده و بعد ازمدتی این الگوریتم به یک ماشین پولسازی تبدیل میشود. برای سودآوری بیشتر از این نوع استراتژیها در الگوریتمهای مدیریت سرمایه نیز میتوان استفاده کرد.
استراتژیهای بازگشت به میانگین سهم
ایده بازگشت به میانگین دربازارهای مالی بر این اساس استوار است که یک دارایی همواره میانگینی بین کمترین و بیشترین قیمت خودش در بازار را دارد و در زمانهایی که زیر کف میانگین و یا بالاتر از این میانگین قرار دارد، تمایل به برگشت به خط میانگین درآن دیده میشود. این نوع استراتِژیها میتوانند بر اساس نوع دادههای تحلیلی به سه قسمت استراتژیهای میانگین قیمتی (WAP)، ماینگین حجمی (VWAP) و میانگین زمانی (TWAP) تقسیمبندی شوند.
الگوریتمهایی که بر اساس این نوع استراتژیها برنامهریزی میشوند، بر اساس محدوده شناسایی شده و تعریف شدهای که در اختیار دارند، هنگامی که از محدوده مورد نظر دور میشوند، اقدام به خرید و فروش میکنند.
مزایا و معایب معاملات الگوریتمی
بهنظر شما استفاده از ابزار معاملات الگوریتمی در بازار بورس خوب است یا بد؟
راهنمای جامع نحوه انجام معاملات الگوریتمی با پایتون (قسمت دوم)
در قسمت اول این مقاله، به ارائه اطلاعات کلی درباره معاملات الگوریتمی، دلایل استفاده از پایتون برای طراحی این معاملات و ابزارهای مورد نیاز پرداختیم.
در ادامه این مطلب قصد داریم به نحوه ایجاد یک استراتژی معاملاتی و بهینهسازی آن در پایتون جهت انجام معاملات الگوریتمی بپردازیم.
ایجاد یک استراتژی معاملاتی در پایتون
پس از انجام تحلیلهای اولیه بر روی دادههای قیمتی به دست آمده از یک سهام یا کوین ارز دیجیتال، هدف بعدی ما ایجاد اولین استراتژی معاملاتی است.
اما برای طراحی یک استراتژی معاملاتی مناسب در پایتون، ابتدا باید با برخی از پرکاربردترین استراتژیهای معاملاتی موجود که در باتها و معاملات الگوریتمی استفاده میشوند آشنا شویم.
استراتژیهای معاملاتی پرکاربرد
در ابتدای مقاله گفتیم استراتژی معاملاتی در واقع یک برنامه ثابت برای معرفی الگوریتم استراتژیک معاملاتی حرکت در بازار روی پوزیشنهای Long و Short است.
اما این همه ماجرا نیست، روش ورود به این پوزیشنها تشخیص نقاط ورود و خروج یکی از مباحث اساسی معاملهگری است. در هر استراتژی، نقاط ورود و خروج براساس اصول مخصوص به آن انتخاب و استفاده میشوند.
در کل دو نوع استراتژی معاملاتی وجود دارد. استراتژی مومنتوم و استراتژی معکوس:
استراتژی مومنتوم
استراتژی مومنتوم که با نامهای Divergence یا معامله ترند نیز شناخته میشود یکی از محبوبترین استراتژیها در انواع بازارهای معاملاتی است.
در این استراتژی، تریدر جهت فعلی ترند قیمت سهام را دنبال میکند. در این حالت، روند چه صعودی باشد و چه نزولی، معاملهگر در پی کسب سود از آن خواهد بود.
برخی از مثالهای خوب این استراتژی شامل استفاده از تقاطع اندیکاتور میانگین متحرک (Moving Average)، تقاطع میانگین متحرک دوگانه و معامله لاکپشتی است.
در تقاطع میانگین متحرک، قیمت یک دارایی از یک سمت اندیکاتور MA به سمت دیگر حرکت میکند. این تقاطع نشان دهنده تغییر در مومنتوم (حرکت) بازار است که میتوان از آن به عنوان نقطه اتخاذ تصمیم برای ورود یا خروج از بازار استفاده شود.
در تقاطع میانگین متحرک دوگانه، یک میانگین متحرک کوتاه مدت (مثلا 50 MA) از روی خط یک میانگین متحرک طولانیتر (مثلا 200 MA) عبور میکند.
این تقاطع به ما نشان میدهد که مومنتوم سهام مورد نظر در حال حرکت به سمت میانگین متحرک کوتاه مدت است.
زمانی که خط میانگین متحرک کوتاه مدت از روی میانگین متحرک بلند مدت به سمت بالا عبور کند یک سیگنال خرید صادر میشود و برعکس آن یعنی زمانی که میانگین متحرک کوتاهتر، میانگین متحرک طولانیتر را به سمت پایین قطع کند سیگنال فروش دریافت میکنیم.
به صورت خلاصه، استراتژی ترید لاکپشتی به معنای دنبال کردن ترند محبوب بازار پس از شکست قیمت (Breakout) است که توسط Richard Dennis ابداع شد.
اصول پایه این استراتژی به این شکل است که تریدر در بازار معاملات آتی (فیوچرز)، روی high 20 روزه وارد پوزیشن Long و در 20 روزه Low وارد پوزیشن Short میشود.
استراتژی معکوس
استراتژی معکوس که با نامهای Convergence یا معامله چرخه شناخته میشود از این عقیده نشات گرفته که در آن هر حرکت بازار در نهایت معکوس میشود.
این موضوع ممکن است کمی غیر عملی به نظر برسد اما زمانی که به مثالهای آن توجه کنیم، فرصتهای درون آن پدیدار میشود.
استفاده از استراتژی میانگین معکوس میتواند روش مناسبی در شکار موقعیتها باشد.
در این روش، شما منتظر بازگشت قیمت سهام مورد نظر به میانگین خود خواهید ماند که پس از انحراف از میانگین، از فرصت استفاده و در جهت ترند جدید وارد پوزیشن میشوید.
مثال دیگر استراتژی معکوس، معامله جفت میانگین معکوس است که مشابه میانگین معکوس، اما به شکل گستردهتر عمل میکند. همانطور که گفته شد در استراتژی معکوس ما برای بازگشت قیمت سهام به میانگین خود منتظر میمانیم اما در حالت معامله جفت، دو سهام مختلف را برای ارزیابی میزان همبستگی (Correlation) و نوع آن مورد بررسی قرار میدهیم.
پس از شناسایی همبستگی، تغییر در تفاوت قیمت دو سهام را میتوان به عنوان سیگنال معامله در نظر گرفت. با حرکت یک سهام، سهام دیگر نیز واکنش نشان خواهد داد و با شناسایی این وابستگی، میتوان از آن سود کسب کرد.
روش معامله در این استراتژی بدین شکل است که اگر همبستگی میان دو سهام کاهش پیدا کند، سهام با قیمت بالاتر را میتوان در موقعیت Short قرار دارد چرا که سهام با قیمت بالاتر همیشه به میانگین خود باز میگردد. در طرف دیگر، سهام با قیمت کمتر را باید در پوزیشن Long قرار داد چرا که با توجه به همبستگی، قیمت آن به حالت معمولی بازخواهد گشت.
البته این استراتژیها، تنها روشهای معامله در بازار نیستند و شما میتوانید با کمی جستجو موارد بیشتری بیابید. برای نمونه استراتژی پیشبینی بازار که در آن تریدر تلاش میکند براساس عوامل تاریخی گذشته، جهت یا ارزش یک سهام را در بازههای زمانی آینده پیشبینی کند.
یا استراتژی معامله فرکانس بالا یا HFT که در آن معاملات در کسری از ثانیه رخ میدهد، از دیگر استراتژیهای پرکابرد بازارهای مالی هستند.
به عنوان یک تحلیلگر بازارهای مالی، شما باید هر از چند گاهی، به جستجو و یافتن روشهای جدید معاملاتی بپردازید. موفقیت الگوریتمهای معاملاتی شما در گرو به کار گرفتن روشهای موثر و آزمایش آنها در سهام و نمادهای مختلف است.
ایجاد یک الگوریتم استراتژی معاملاتی ساده
اولین برنامه الگوریتم معاملاتی ما در پایتون، استفاده از استراتژی تقاطع میانگین متحرک استفاده میکنیم.
روش کار آن ساده است، ابتدا دو اندیکاتور متفاوت SMA (Simple moving Average) از دادههای قیمت سری زمانی ایجاد میکنیم. طول اندیکاتور اول میتواند 40 روز و دومی 100 روز باشد.
اگر اندیکاتور کوتاهتر از روی اندیکاتور بلند عبور کند، به معنای پوزیشن Long یا خرید است و اگر اندیکاتور بلندتر که در اینجا 100 روز است از روی اندیکاتور کوتاه ما عبور کند، ما از پوزیشن خارج میشویم.
آزمایش استراتژی معاملاتی
اکنون ما یک استراتژی معاملاتی اولیه داریم، برای ارزیابی کیفیت بازدهی این استراتژی، باید روی آن بک تست (Backtest) انجام دهیم.
بکتست روشی است که به کمک آن ما میتوانیم بازدهی استراتژی معاملاتی خود را بر روی نمودار مورد ارزیابی قرار دهیم.
بکتست علاوهبر یک روش آزمایش استراتژی معاملاتی، ارزیابی استراتژی با استفاده از دادههای تاریخی نیز هست. در این روش شما میتوانید بر روی قیمتهای گذشته نمودار، استراتژی خود را آزمایش کنید.
میتوان گفت Backtest روشی برای شبیه سازی و ارزیابی ریسک و میزان سود آوری یک استراتژی معاملاتی خاص در بازه زمانی مشخص است.
اما قبل از ورود به این مبحث باید به مشکلات و دامهای آن نگاهی بیندازیم:
دامهای موجود در Backtest
بکتست مزایای زیادی دارد چرا که ما از دادههای واقعی برای ارزیابی استراتژی بهره میبریم اما باید به دامهای آن نیز توجه شود. چرا که در هنگام کار با این روش ممکن است واضح نباشند.
در هنگام کار با دادههای قیمتی قدیمی (و حتی دادههای فعلی) باید به رویدادهای بیرونی که بر روی بازار تاثیرگذار هستند نیز توجه شود.
مثلا تغییر قوانین و یا رویدادهای اقتصاد کلان مسلما بر روی خروجی آزمایشهای شما موثر هستند. اگر قوانین بازار مالی به شکلی تغییر کند که پوزیشنهای Short برای مدتی غیرفعال شوند، آزمایش استراتژی شما از حالت عادی خارج میشود و ممکن است بدون در نظر گرفتن رویدادهای مربوط به آن برهه تاریخی، بر روی نتایج به دست آمده تصمیم گیری کنید.
اما مشکلاتی نیز از سمت طراح استراتژی وجود دارند که بر روی نتیجه بکتست تاثیر قابل توجهی خواهد داشت. تعصب در بهینه سازی بیش از حد، نادیده گرفتن قوانین استراتژی(دخالت در مدل) یا حتی وارد کردن اطلاعات فعلی به دادههای قدیمی میتواند از مهمترین دامهایی باشد که ممکن است شما در آن گرفتار شوید.
اجزای بکتست
علاوهبر دامهایی که ممکن است در هنگام آزمایش استراتژی بر روی دادههای واقعی بازار مواجه شوید، لازم است تا با اجزای اصلی Backtest نیز آشنا شوید.
یک فرآیند Backtest شامل 4 قطعه است که هر کدام وظایف مخصوصی برعهده دارند:
- کنترلکننده دادهها: این بخش مجموعهای از دادهها را آماده میکند.
- استراتژی یا منطق: این بخش وظیفه تولید سیگنالهای خرید Long یا فروش Short را براساس دادههای قطعه اول برعهده دارد.
- پرتفوی: سفارشها را تولید و سود و زیان معاملات را مدیریت میکند. به این بخش مدیریت PnL نیز گفته میشود.
- کنترل کننده اجرایی: سفارشارت (Order) را به کارگزاری ارسال میکند. علاوهبر آن، این کنترل کننده سیگنالهای تکمیل سفارش خرید یا فروش سهام را دریافت و براساس آن گزارشات مربوطه را ذخیره میکند.
در کنار چهار اجزای عنوان شده در اینجا، شما میتوانید هر تعداد اجزای مورد نیاز را به بک تستر خودتان اضافه کنید. این مسئله کاملا به پیچیدگی و منطق پشت آن بستگی دارد و در صورت اضافه شدن بخشهای محاسباتی یا منطقی بیشتر، میتوان برنامههای پیچیدهتری نوشت.
با این حال، چهار قطعه عنوان شده از اجزای اصلی یک استراتژی الگوریتمی هستند که باید در هنگام شروع کار آنها را در نظر بگیرید.
ابزارهای مورد نیاز در پایتون
برای طراحی و پیاده سازی Backtest در پایتون تکیه به کتابخانه Pandas کافی نیست و به ابزارهای دیگری برای بهینه سازی نیاز خواهید داشت.
کتابخانههایی مثل NumPy و SciPy، ویژگی و عملکردهایی مانند بهینهسازی، محاسبات برداری (Vectorization) و روالهای جبر خطی را برای توسعه استراتژی معاملاتی پیشرفته در اختیار شما قرار میدهند.
کتابخانه Scikit-Learn که یکی ابزارهای یادگیری ماشین در پایتون است نیز در هنگام کار با استراتژیهای Forecasting یا پیشبینی بازار به کمک شما میآید. این کتابخانه به شما کمک میکند تا مدلهای طبقهبندی شده و برگشتی ایجاد کنید.
با این حال اگر قصد دارید بر روی دادههای به دست آمده تحلیل آماری انجام دهید، کتابخانه Statsmodel کار شما را راه میاندازد. محاسبه شاخص OLS یکی از کاربردهای این کتابخانه است که قبلا به آن اشاره شد.
در آخر کتابخانههای lbPy و ZipLine نیز امکان اتصال و تعامل با صرافیها و سیستمهای معاملاتی آن را فراهم میکند. این کتابخانهها به شما کمک میکنند تا علاوهبر مدیریت داراییها، سفارشهای خود را برای سهامهای مختلف ثبت و کنترل کنید.
البته برخی از صرافیهای ارز دیجیتال ممکن است کتابخانه مخصوص به خود را ارائه دهند که در این مورد نیازمند کمی جستجو و تحقیق است.
بکتست توسط کتابخانههای Zipline و Quantopian
همانطور که گفته شد، وقتی صحبت از بازارهای مالی در پایتون میشود، کتابخانه Pandas یکی از بهترین روشهای مدیریت داده و ارزیابی آن است.
با این حال، از آنجایی که شما باید همه اجزای یک مدل استراتژی را از پایه توسعه دهید، اشتباهات انسانی یا باگ در آنها وجود خواهد داشت. حتی با وجود کتابخانههایی مانند Pandas، خطاهایی که یک برنامه نویس میتواند حین نوشتن یک برنامه مرتکب شوند غیر قابل انکار هستند.
به همین دلیل در هنگام توسعه معاملات الگوریتمی در پایتون بهتر است از یک بستر بک تست برای آزمایش استراتژی و رفع باگ استفاده کنیم.
کتابخانه Quantopian یکی از بهترین روشهای انجام بکتست در نظر گرفته میشود. این کتابخانه رایگان و انجمن محور است که هدف اصلی آن میزبانی و اجرای استراتژیهای معاملاتی است.
کتابخانه Quantopian، قدرت خود را از Zipline که یک کتابخانه پایتون برای معاملات الگوریتمی است دریافت میکند. نیازی به خرید سرور و یا هاست وب نیست، شما میتوانید این کتابخانه را در سیستم خودتان اجرا و از قابلیتهای آن برای نوشتن الگوریتم بک تست بهره ببرید. اما قبل از آن باید در وبسایت آن ثبت نام و وارد شوید.
پس از ورود به حساب کاربری خود، در این وبسایت یک الگوریتم جدید ایجاد و کدهای آن را بنویسید. البته میتوانید از مثالهای موجود برای آزمایش استراتژی استفاده کنید.
بهبود استراتژی معاملاتی
پس از ایجاد یک استراتژی معاملاتی برپایه یک الگوریتم ساده و پیاده سازی backtest مورد نظر توسط کتابخانههای Pandas ،Zipline و Quantopian نوبت به بررسی روشهای بهبود استراتژی پیاده شده میرسد.
تا اینجای مقاله شما با الگوریتم کلی معاملهگری در پایتون آشنایی پیدا کردهاید اما این کافی نیست.
اتمام کد نویسی و تست یک الگوریتم معاملاتی به معنای پایان پروژه نیست بلکه سرآغاز فرآیند توسعه و بهبود استراتژی مورد استفاده در آن است.
استفاده از یک یا چند الگوریتم دیگر در کنار الگوریتمهای فعلی با هدف بهبود بازدهی معاملات چیزی است که هر برنامه نویسی باید روی آن تمرکز کند. آشنایی و استفاده از الگوریتمهایی مانند KMeans ،k-Nearest Neighbors ،Classification یا درخت بازگشتی و ژنتیک از مهمترین زمینههایی است که باید در گامهای بعد به آن توجه شود.
اما الگوریتمها همه پروژه نیستند و شما باید با کار بر روی سهامهای دیگر در سایر صنایع و زمینهها، استراتژی معاملاتی خود را بهبود دهید.
فقط تکیه به سهام یک شرکت یا نماد در بازار بورس یا ارز دیجیتال کمک چندانی به شما نمیکند چرا که از سایر فرصتهای بازار عقب خواهید ماند.
در این مقاله ما یک استراتژی ساده مانند استفاده از میانگین متحرک را معرفی کردیم اما اضافه کردن چیزهای دیگر برای مدیریت ریسک یا حتی یک سیستم Backtest رویداد محور میتواند سوگیریها و دامهای پیش رو را کاهش دهد.
نتیجه گیری
معاملات الگوریتمی در زبان برنامه نویسی پایتون به عنوان یکی از راحتترین زبانهای برنامه نویسی، میتواند نقطه شروعی برای خودکار سازی فرآیند معامله بدون استرس باشد. با طراحی یک استراتژی مناسب و آزمایش آن در بازارهای واقعی شما میتوانید در هنگام خواب نیز کسب درآمد کنید.
البته طراحی یک استراتژی جامع با الگوریتمهای بینقص در کنار برنامههای مدیریت ریسک از آنچه که به نظر میرسد مشکلتر است. در گام اول شما باید به اندیکاتورهای رایج در بازارهای مالی و نحوه تحلیل بازار تسلط کافی داشته باشید.
یادگیری زبان برنامه نویسی پایتون آسان است اما طراحی و صیغل یک استراتژی مالی که به صورت خودکار به صرافی یا کارگزاریهای آنلاین متصل و اقدام به معاملهگری کند کار مشکلی است. شما باید در طراحی استراتژی خود به اندازه کافی اعتماد به نفس به خرج دهید تا در زمانهایی اسکریپت شما اقدام به معاملهگری میکند، خیال شما از بابت خطرات آن آسوده باشد.
در این مقاله ما فقط به مباحث کلی معاملات الگوریتمی در پایتون پرداختهایم و مسلما بخش کدنویسی، تست و بهبود آن به همراه جزییات فنی خارج از حوصله این مقاله است و شما باید از منابع زبان اصلی برای آغاز این مسیر کمک بگیرید.
قصد خرید یا فروش ارز دیجیتال در ایران را دارید؟ در این سایت میتوانید با اطمینان و با چند کلیک خرید کنید:
پلتفرم آسان بورس
در آسان بورس میتوانید با توجه به دانش و تجربه خود الگوریتمتان را شخصی سازی کنید و انجام معاملات را به ربات بسپارید
استراتژی معاملاتی
پلن معاملاتی خود را طراحی کنید و سیگنال سهامهای مورد نظر را شناسایی کنید
بررسی و رصد بازار
با طراحی فیلتر بازار را رصد کنید و لیست سهامهای مناسب و دلخواه خود را بیابید
تنظیم هشدار
با قرار دادن هشدارها از اتفاقات دلخواه خود روی بازار و پرتفوی شخصی مطلع شوید
مدیریت سرمایه
قوانین مدیریت سرمایه و ریسک خود را قرار دهید تا بهترین بازدهی را داشته باشید
تست و مانیتورینگ
استراتژیتان را در گذشته سهامها تست کنید و آن را بعد از فعال شدن در بازار مانیتور کنید
هوش مصنوعی
به کمک ابزارهای هوش مصنوعی پارامترهای دلخواه خود را مدلسازی و پیشبینی کنید
افتخارات کسب شده توسط آسان بورس
جوایز و تقدیرنامههایی که آسان بورس از ابتدای سال 97 تاکنون به دست آورده است:
- منتخب 5 استارتآپ برتر فین استارز 2018
- مقام سوم در پانزدهمین دوره دیموند پیچ - مهر 97
- محصول برگزیده در ششمین همایش ملی مدیران فناوری اطلاعاتی برتر(فاب) - دی 97
- مقام دوم طرح استارتآپی در دهمین دوره جشنواره کارآفرینی دانشگاه شریف (VC CUP) - دی 97
- مقام نخست نمایشگاه ITE 2019 در بخش استارتاپهای فینتک
تهران، پایینتر از میدان توحید، خیابان اردبیل، پلاک 51
تلفن تماس : 66918648 021
شبکههای اجتماعی
لینک های مفید
×
به اطلاع میرساند به دلیل تغییرات زیرساختی در سرورهای آسانبورس، از ساعت 20 چهارشنبه 99/11/08 سایت به مدت 48 ساعت دچار اختلال خواهد بود . تیم فنی آسان بورس تمام تلاش خود را برای کاهش این زمان به حداقل ممکن به کار خواهد بست. بابت این اختلال صمیمانه از شما عذرخواهی کرده و از شکیبایی شما سپاسگزاریم.
ابزارهای معامله الگوریتمی — ربات آماده یا کدنویسی؟
آیا با ابزارهای معامله الگوریتمی آشنا هستید؟ نرم افزار معاملات الگوریتمی چیست؟ برای معاملات الگوریتمی ربات آماده یا کدنویسی را ترجیح میدهید؟ این صفحه، مقاله سوم از آموزش معاملات الگوریتمی است. پیشنهاد میکنم در صورت ندیدن، دو قسمت قبلی این آموزش مفید را مشاهده کنید.
در صورتی که تمایل دارید بجای مطالعه مقاله فیلم آن را تماشا کنید، روی این لینک (+) و یا پخش کننده پایین کلیک کنید.
در صورتی که مطالعه متن را به تماشای فیلم ترجیح میدهید با ما در ادامه مقاله همراه باشید.
ابزارهای معامله الگوریتمی
ابزارهای معامله الگوریتمی را به 4 دسته تقسیم میکنیم:
- ابزارهای آماده
- پلتفرمهای ساخت ابزار
- پلتفرمهای کدنویسی ابزار
- وبسرویسهای توسعه ابزار
ابزارهای آماده
تنها کافی است شما در گوگل ابزارهای معامله گر و یا خرید ابزارهای معامله را جستجو کنید. وبسایتهایی به شما نمایش داده میشود که به کمک آنها میتوانید این ابزارها را خریداری کنید. برای توضیحات بیشتر پیشنهاد میکنم فیلم رایگان در این صفحه را مشاهده کنید.
پلتفرمهای ساخت ابزار
نامهایی مثل SFB و یا آسان بورس در این دسته قرار میگیرند. این پلتفرم و یا نرم افزارها ممکن است دسکتاپی و یا تحت وب باشند.
هم رویش منتشر کرده است:
پلتفرمهای کدنویسی ابزار
نرم افزار متاتریدر یکی از معروف ترین نرم افزارها به ویژه برای بازار فارکس است. متاتریدر یک نرم افزار جامع است. در متاتریدر هم معامله دستی و هم معامله خودکار انجام میشود. به تازگی متاتریدر 4 به متاتریدر 5 ارتقا پیدا کرده است. اما در حال حاضر نسخه چهارم متاتریدر نیز قابل استفاده است.
وب سرویس های توسعه ابزار
کارگزاری مثل BINANCE یک سری APIهایی را به کاربر میدهد. به عنوان مثال اگر یک نماد را ارسال کنیم، BINANCE قیمت بروز را در اختیار کاربر قرار میدهد.
انبوهی از این APIها وجود دارد که ما میتوانیم با زبانهای مختلف مثل پایتون، جاوا اسکریپت و یا هر نوع زبان دیگری این APIها را صدا کنیم و براساس آنچه به ما میدهد برنامهای را بنویسیم که اجرا شود. برنامهای که در اینجا نوشته میشود یک برنامه مستقل است.
جمع بندی
ابزارهایی وجود دارند که به کمک آنها میتوانیم وارد دنیای الگوریتمی شویم و الگوریتمی معامله کنیم. در این مقاله 4 ابزار معرفی کردیم. متن این مقاله قابل مطالعه و فیلم آن قابل مشاهده است.
** محتوا و فیلم آپلود شده در ابتدای این صفحه در واقع درس سوم از فصل اول آموزش معامله الگوریتمی با پایتون است. برای دیدن فیلم معرفی این بسته آموزشی بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:
برای دریافت بسته کامل این آموزش بر روی لینک کلیک کنید(+).
کلیدواژگان
ابزارهای معامله الگوریتمی | ابزارهای معاملات الگوریتمی | ابزار معامله الگوریتمی | ربات آماده یا کدنویسی | کدنویسی یا ربات آماده | ربات یا کد نویسی | کدنویسی یا ربات | معامله الگوریتمی با پایتون | آموزش معاملات الگوریتمی با پایتون | دوره معاملات الگوریتمی با پایتون | معاملات الگوریتمی بورس با پایتون | نرم افزار معاملات الگوریتمی | نرم افزار انجام معاملات الگوریتمی | نرم افزار معاملات الگوریتم
آموزش معاملات الگوریتمی ارز دیجیتال در پایتون
با گسترش بازارهای مالی و فراگیر شدن معاملات دارایی های مختلف در بین مردم، روش های نوین معامله گری به تدریج وارد عرصه معاملات شدند.
در سال های اخیر، استفاده از الگوریتم های پیچیده و قدرتمند در معاملات بازارهای مالی بسیار گسترش پیدا کرده است و شاهد پیشرفت چشمگیری در طراحی الگوریتم های معاملاتی بوده ایم. ویژگی مهم معاملات الگوریتمی، دقت و سرعت بالای آن، در تشخیص موقعیت مناسب برای انجام معاملات می باشد.
برای نوشتن یک الگوریتم معاملاتی، زبان های برنامهنویسی مختلفی میتوانند در کنار هم بهکار گرفته شوند. یکی از گزینه های مناسب برای طراحی یک الگوریتم معاملاتی، استفاده معرفی الگوریتم استراتژیک معاملاتی از زبان پایتون میباشد.
یکی از ویژگی های زبان پایتون، سادگی کار با دادهها در این زبان است. همچنین، وجود تعداد زیادی از کتابخانه های قدرتمند و رایگان در این زبان، موجب شده است تا بتوان تقریبا هرکاری را با این زبان انجام داد.
یکی از حوزههایی که بکارگیری زبان پایتون در آن بسیار مورد توجه قرار گرفته است، حوزه مربوط به بازارهای مالی و کار با داده های مالی است.
در این دوره با استفاده از زبان محبوب پایتون و همچنین با بررسی متد های مختلف تحلیل مالی، تلاش میکنیم تا چندین استراتژی معاملاتی را، در بازار های مالی مختلف و بهطور خاص، بازار رمزارزها پیاده سازی کنیم و با پیاده سازی ساختاری برای سنجش عملکرد استراتژی ها (Backtesting)، میزان بازدهی هرکدام از این استراتژی ها را مشخص کنیم.
همچنین علاوه بر بررسی استراتژیهای رایج در تحلیل داده های مالی، با معرفی ابزار های مستقل و قدرتمند دیگری از زبان پایتون، قدرت تحلیل ها را بالاتر برده و مواردی مانند تحلیل روانی (Sentiment Analysis) بازار رمزارزها را نیز در قالب پروژههایی در دوره، بررسی خواهیم کرد.
این دوره در قالب 6 فصل مجزا آماده شده و در هر فصل، قسمتی از مهارت های مورد نیاز برای طراحی و پیاده سازی الگوریتم های معاملاتی خودکار، به تفکیک بیان شده است.
مثال ها و پروژه های این دوره برای رمزارزها طراحی شده اما مباحث تدریس شده در این دوره، همچون الگوریتم های معاملاتی پیاده سازی شده، در بازارهای های مالی دیگر، همانند بازار سهام نیز قابل پیاده سازی میباشند.
برای توضیحات بیشتر در رابطه با این دوره و مشاهده برخی پروژه های انجام شده در این دوره، لطفا ویدئوی معرفی دوره را مشاهده نمایید.
پیش نیاز: تسلط نسبی بر زبان پایتون و آشنایی اولیه با کتابخانههای pandas, matplotlib و numpy
دیدگاه شما