ایجاد یک ربات معامله گر ساده: مقدمه(قسمت اول)

شایستگی های کلیدی یک معامله گر الگوریتمی

زمانی که شخصی می خواهد یاد بگیرد چگونه معامله کند، و شایستگی های یک معامله گر الگوریتمی را پیدا کند، شاید سوالاتی برایش پیش بیاید از قبیل : از کجا شروع کند؟ بر روی چه بازاری باید تمرکز کند؟ چه تنظیمات و الگوهایی را برای معامله باید در نظر بگیرند؟ چه مقدار ریسک را در معاملاتش می تواند بپذیرد؟شاید این ها سوالات متداولی باشند، اما همگی آن ها سوالات اولیه کاملا اشتباهی هستند!

مقدمه ای برای معاملات

یادگیری معاملات با یک چارچوب مفهومی آغاز می شود:درک چگونگی و چرایی حرکات بازار و چگونگی و چرایی وابستگی آنها به یکدیگر

به گفته ی Kurt Lewin، هیچ چیز به اندازه ی یک تئوری خوب کاربردی نیست. دانشمندان آزمایشات خود را معمولا با یک تئوری آغاز می کنند – توضیح و تفسیری آزمایشی از مشاهدات خود – و سپس از آن تئوری برای ایجاد و آزمایش فرضیه استفاده می کنند. تئوری، افکار و اندیشه را سازماندهی می کند و به ما کمک می کند بر روی چیزی که مهم است تمرکز کنیم و آن چیزی که بی اهمیت است را حذف کنیم. اکثر معامله گران نیز با چارچوب مفهومی و نظری خود پیش می روند و از دیدگاه های روانکاوانه و رویکردهای رفتاری-شناختی جهت درک و شناخت الگوهای رفتاری افراد استفاده می کنند. به همین دلیل است که معامله گران جدید از معامله گران قدیمی و با تجربه منطق، حس و رویکردها را می آموزند.

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

 

شایستگی های یک معامله گر الگوریتمی

اغلب برای معامله گران کمی تازه وارد، پیدا کردن راهنمایی های منصفانه در شروع کار سخت است. در نتیجه منابع و مباحث کلیدی برای شروع کار مانند: فوت و فن معاملات، سیستم های معاملاتی، ریزساختارهای بازار(market microstructure) و حتی موقعیت های شغلی در شرکت های بورسی برای آن ها بسیار ارزشمند است.

به نظر من، ۴ زمینه اصلی که می توان برای قدم گذاشتن در مسیر معامله گر الگوریتمی شدن برشمرد، به شرح زیر هستند:

  1. اقتصاد کلان

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

  1. یک روش معاملاتی

یک معامله گر نیاز به چارچوبی برای تفکر در مورد حرکات قیمت و فهم جریان مداوم تغییرات قیمت در طول بازارها دارد و چیزی که در ابتدا مهم است داشتن یک استراتژی معاملاتی است تا نداشتن آن! مثلا استفاده از پرایس اکشن و آشنایی با آن به عنوان یک روش معاملاتی، بهتر است تا اینکه بدون دانستن حتی یک استراتژی بخواهیم معامله گر الگوریتمی شویم!

معامله گران از انواع تئوری های اساسی و فنی استفاده می کنند. در معاملات الگوریتمی،

تئوری های ریزساختار بازار(theories of market microstructure)، بازارهای حراج دوطرفه(double auction markets)، مالی رفتاری(behavioral finance)، روانشناسی معاملات، الگوهای معاملاتی، پروفایل های بازار(market profiles)، ارزش نسبی(relative valuation) و … به تنهایی یا با استفاده از سایر روش ها استفاده می شوند.

  1. رصد کردن (مشاهده)

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

من نمودارهای عملیات روزانه را جمع آوری می کردم و هر روز بدنبال بهترین فرصت ها برای معامله بودم. در طول زمان، الگوهایی تکراری در میان سهم ها مشاهده کردم که این ها برای معاملات بعدی من بسیار ارزشمند بودند. مشاهده نه فقط قیمت بلکه حجم، رفتار ارکان بازار، اقدامات بین بازاری(inter-market action) و اندازه گیری آن ها به شما کمک می کند تا دینامیک شکست مقاومت و حمایت، نقاط بازگشتی بازار و روندها را تشخیص دهید.

  1. بهینه بودن برنامه نویسی

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

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

یادگیری ماشین

یادگیری ماشین مهمترین بخش از لیست مهارت های مورد نیاز یک تحلیل گر الگوریتمی است. اکثر استراتژی های تکنیکال، عددی و یا بنیادی که در معاملات استفاده می شوند، می توانند اتوماتیک و بهینه شوند.

جهت بهینه سازی کدها نیاز دارید که درک قوی از زبان برنامه نویسی تان داشته باشید و برای بهینه سازی استراتژی نیز نیاز دارید که درک خوبی از ویژگی های استراتژی و مدل مناسب یادگیری ماشین با توجه به مساله تان داشته باشید.

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

انتخاب زبان برنامه نویسی برای نوشتن الگوریتم ها

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

C++ به طور گسترده در استراتژی هایی که “زمان اجرا” مهمترین پارامتر آن است، استفاده می شود. برای مثال در معاملات با فرکانس بالا  HFT (high-frequency trading) که معاملات در کمتر از ثانیه انجام می شوند، زبان برنامه نویسی که انتخاب می کنید می تواند استراتژی هایتان را بسازد یا به کلی خراب کند. در این چنین سناریوهایی C++ بهترین گزینه ی ممکن است.

Python یا R استفاده ی گسترده ای در زمینه ی مالی و تجزیه تحلیل دارند و به طور وسیعی در معاملات الگوریتمی استفاده می شوند و هر کارگزار ارشدی در دنیا که دارای API است حداقل از یکی از این ها استفاده می کند. هر دوی آن ها ویژگی ها و کتابخانه ی(libraries) مشابه دارند و هر دو open source هستند.

R یک زبان معتبر در زمینه ی مالی و Python یک تازه وارد نسبی است. اما محبوبیت و استفاده از Python به طرز چشمگیری در حال افزایش است.

Java  نیز یک زبان بسیار مناسب برای راه اندازی زیرساخت های الگوریتمی است.

علاوه بر موارد مذکور مهم است که :

بسیار ساده شروع کنید! در ابتدای کار فقط سعی کنید بازار را اسکن و از آن علامت‌هایی دریافت کنید! برای اینکار می‌توانید از ابزارهای متعددی استفاده کنید: فیلترنویسی در سایت بورس تهران، فیلترنویسی در نرم افزارهای آمی بروکر، متاتریدر، رهاوردنوین و یا چک لیست گاوهای بازار و …

به مرور کارها بهتر خواهند شد. کم کم ابزارهای کوچکی خواهید ساخت که می‌توانید بازار را بهتر دنبال کنید. به مرور این ابزارها بهتر خواهند شد و می‌توانید آن‌ها را به ترید متصل کنید. به عبارت دیگر ابزارها به صورت کاملا خودکار برای شما خرید و فروش می‌کنند!

مهارت‌های لازم برای شروع معاملات الگوریتمی به شرح زیر است:

  • مهارت بالای ریاضیات و آمار در زمینه آنالیز دیتا (Data Analysis Skills)
  • مهارت خوب برنامه نویسی (یا کمک‌گرفتن از یک برنامه‌نویس)
  • توانایی تفکر و تصمیم گیری در اتفاقات با احتمالات مختلف
  • حس و تجربه شناخت رفتار بازار
  • اعصاب قوی!

اگر شما موارد بالا را دارید، با یک پشتکار خوب می‌توانید بعد از دو یا سه سال یک الگوریتم تریدر حرفه‌ای باشید! (البته هر شخصی می‌تواند بسته به توانایی‌هایش در این پروسه سریع‌تر و یا کندتر باشد و این تخمین و نظر شخصی بنده است!)

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

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

6 Responses to “ایجاد یک ربات معامله گر ساده: مقدمه(قسمت اول)”

  1. سونیا گفت:

    سلام من چه جوری میتونم یک ربات بسازم

  2. مهران دشتی گفت:

    با سلام و احترام
    خیلی ممنونم از مقاله بسیار خوبتون جناب موسوی عزیز، بسیار لذت بردم.
    برای شما و تیم خوبتون آرزوی موفقیت، شادی و سرفرازی دارم .
    مهران دشتی

  3. حسین گفت:

    با سلام
    اگر یک الگوریتمی برای ترید نوشتیم ،چطور باید اون رو به سامانه کارگزاریمون ارتباط بدیم؟ یا بهتر بگم API سامانه معاملاتی کارگزاری رو چطور به دست بیاریم؟

دیدگاهتان را بنویسید

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