بیاموزید که چگونه استراتژی های معاملاتی را بر اساس تجزیه و تحلیل فنی ایجاد و پیاده سازی کنید!
این چهارمین بخش از مجموعه مقالات در مورد استراتژی های معاملاتی پشتی در پایتون است. موارد قبلی مباحث زیر را شرح داد:
- معرفی چارچوب Zipline و ارائه نحوه تست استراتژی های اساسی (LINK)
- وارد کردن داده های سفارشی برای استفاده با Zipline (پیوند)
- ارزیابی عملکرد استراتژی های معاملاتی (پیوند)
این بار ، هدف از مقاله نشان دادن چگونگی ایجاد استراتژی های معاملاتی بر اساس تجزیه و تحلیل فنی (به طور خلاصه TA) است. به نقل از ویکی پدیا ، تجزیه و تحلیل فنی "روش شناسی برای پیش بینی جهت قیمت ها از طریق مطالعه داده های بازار گذشته ، در درجه اول قیمت و حجم" است.
در این مقاله ، من نحوه استفاده از یک کتابخانه محبوب پایتون را برای محاسبه شاخص های TA-TA-Lib-همراه با چارچوب پشتی Zipline نشان می دهم. من 5 استراتژی ایجاد خواهم کرد و سپس بررسی می کنم که کدام یک بهترین عملکرد را در افق سرمایه گذاری انجام می دهد.
راه اندازی
برای این مقاله از کتابخانه های زیر استفاده می کنم:
Pyfolio 0. 9. 2Numpy 1. 14. 6Matplotlib 3. 0. 0پانداس 0. 22. 0JSON 2. 0. 9امپراتوری 0. 5. 0Zipline 1. 3. 0
توابع یاور
قبل از ایجاد استراتژی ها ، من چند کارکرد یاور را تعریف می کنم (در اینجا من فقط یکی از آنها را توصیف می کنم ، زیرا این مهمترین موردی است که بر پشتی تأثیر می گذارد).
این تابع برای دریافت تاریخ شروع اصلاح شده از پشتی استفاده می شود. دلیل این امر این است که من می خواهم همه استراتژی ها در همان روز کار کنند-روز اول سال 2016. با این حال ، برخی از استراتژی های مبتنی بر شاخص های فنی به تعداد مشخصی از مشاهدات گذشته-به اصطلاح "دوره گرم شدن" نیاز دارند. به همین دلیل است که با استفاده از این عملکرد ، تاریخ شروع Backtest را محاسبه می کنم تا در روز اول افق سرمایه گذاری ، من در حال حاضر مشاهدات گذشته کافی برای محاسبه شاخص ها داشته باشم. لطفاً در نظر داشته باشید که هیچ تصمیم معاملاتی نمی تواند قبل از تاریخ شروع واقعی Backtest اتفاق بیفتد!
ما همچنین خلاصه عملکرد را ایجاد می کنیم (با استفاده از یک عملکرد یاور دیگر) ، که در بخش آخر استفاده خواهد شد:
buy_and_hold_perf = get_performance_summary (buy_and_hold_results. retus)
برای کوتاه بودن ، ما تمام این مراحل (مانند بارگیری DataFrame عملکرد یا دریافت خلاصه عملکرد) را برای هر استراتژی نشان نمی دهیم ، زیرا آنها هر بار به همان روش انجام می شوند.
استراتژی متوسط حرکت ساده
دومین استراتژی که ما در نظر می گیریم مبتنی بر میانگین حرکت ساده (SMA) است. منطق استراتژی را می توان با موارد زیر خلاصه کرد:
- وقتی قیمت از SMA 20 روزه به سمت بالا عبور می کند-سهام بخرید
- وقتی قیمت از SMA 20 روزه به سمت پایین عبور می کند-تمام سهام را بفروشید
- میانگین متحرک از 19 روز قبل و روز جاری استفاده می کند - تصمیم معاملات برای روز بعد است
این اولین باری است که برای محاسبه تاریخ شروع تنظیم شده باید از عملکرد یاور قبلی تعریف شده استفاده کنیم ، که به سرمایه گذار این امکان را می دهد تا در اولین روز معاملاتی سال 2016 تصمیمات تجاری را اتخاذ کند.
get_start_date ('tsla' ، '2016-01-04' ، 19)# '2015-12-04'در استراتژی زیر از تاریخ تنظیم شده به عنوان تاریخ شروع استفاده می کنیم.
طرح زیر سری قیمت را به همراه میانگین حرکت 20 روزه نشان می دهد. ما علاوه بر این سفارشات را که در روز معاملاتی بعدی پس از تولید سیگنال اجرا می شوند ، مشخص کرده ایم.
حرکت متقاطع متوسط
این استراتژی را می توان پسوند برنامه قبلی در نظر گرفت - به جای میانگین متحرک واحد ، ما از دو میانگین با اندازه های مختلف پنجره استفاده می کنیم. میانگین حرکت 100 روزه همان چیزی است که برای تنظیم تغییرات ناگهانی قیمت بیشتر طول می کشد ، در حالی که 20 روزه بسیار سریعتر برای پاسخگویی به تغییرات ناگهانی است.
منطق استراتژی به شرح زیر است:
- وقتی سریع کارشناسی ارشد از آهسته به سمت بالا عبور می کند ، ما دارایی را خریداری می کنیم
- وقتی MA کند از سریع به سمت بالا عبور می کند ، ما دارایی را می فروشیم
به خاطر داشته باشید که بسیاری از ترکیبات مختلف پنجره ها که MA سریع و آهسته را تعریف می کنند ، می توانند برای این استراتژی در نظر گرفته شوند.
برای این استراتژی ، ما برای مقابله با "دوره گرم شدن" باید 100 روز داده را نیز طی کنیم.
در زیر ما دو میانگین متحرک را در بالای سری قیمت ترسیم کردیم. ما می بینیم که این استراتژی سیگنال های بسیار کمتری نسبت به نمونه بر اساس SMA ایجاد کرده است.
MACD
MACD مخفف میانگین همگرایی/واگرایی در حال حرکت است و یک شاخص/نوسان ساز است که در تجزیه و تحلیل فنی قیمت سهام استفاده می شود.
MACD مجموعه ای از سه سری زمانی است که با استفاده از قیمت های نزدیک تاریخی محاسبه می شود:
- سری MACD - تفاوت بین میانگین حرکت سریع (دوره کوتاه تر) و آهسته (دوره طولانی تر)
- سیگنال - EMA در سری MACD
- واگرایی - تفاوت بین سری MACD و سیگنال
MACD با تعداد روزهای مورد استفاده برای محاسبه سه میانگین متحرک - MACD (A ، B ، C) پارامتر می شود. پارامتر A با EMA سریع ، B به EMA آهسته و C به EMA سیگنال MACD مطابقت دارد. متداول ترین تنظیمات ، که در این مقاله نیز استفاده می شود ، MACD (12،26،9) است. از نظر تاریخی ، این شماره ها بر اساس یک هفته کاری 6 روزه با 2 هفته ، 1 ماه و 1. 5 هفته مطابقت داشتند.
نکته ای که باید به خاطر بسپارید این است که MACD یک شاخص عقب مانده است ، زیرا این امر بر اساس میانگین های حرکت است. به همین دلیل MACD برای سهام هایی که یک روند را نشان نمی دهند یا با اقدام قیمت نامنظم تجارت می کنند ، کمتر مفید است.
استراتژی ما در این مقاله را می توان توسط:
- وقتی MACD از خط سیگنال به سمت بالا عبور می کند ، سهام را بخرید
- سهام را بفروشید وقتی MACD از خط سیگنال به سمت پایین عبور می کند
مانند گذشته ، برای مقابله با دوره گرم کردن ، باید تشخیص دهیم که ما 34 مشاهده برای محاسبه MACD داریم.
در زیر ما خطوط MACD و سیگنال را ترسیم می کنیم ، جایی که کراس اوور نشانگر سیگنال های خرید/فروش است. علاوه بر این ، می توان واگرایی MACD را به شکل یک بارپلت ترسیم کرد (معمولاً به عنوان هیستوگرام MACD گفته می شود).
RSI
RSI مخفف شاخص قدرت نسبی است ، که یکی دیگر از شاخص های فنی است که می توانیم برای ایجاد استراتژی های معاملاتی از آن استفاده کنیم. RSI به عنوان یک نوسان ساز حرکت طبقه بندی می شود و سرعت و بزرگی حرکات قیمت جهت را اندازه گیری می کند. Momentum نرخی را که قیمت دارایی بالا می رود یا کاهش می یابد ، توصیف می کند.
بدون اینکه به جزئیات فنی زیادی بپردازید ، RSI حرکت را به عنوان نسبت بسته شدن بالاتر به بسته شدن پایین تر اندازه گیری می کند. دارایی هایی با تغییرات مثبت بیشتر/قوی تر RSI بالاتری نسبت به دارایی هایی با تغییرات منفی بیشتر/قوی تر دارند.
خروجی RSI یک عدد در مقیاس 0 تا 100 است و به طور معمول به صورت 14 روزه محاسبه می شود. برای تولید سیگنال های معاملاتی ، مشخص کردن سطح پایین و زیاد RSI در 30 و 70 به ترتیب معمول است. تفسیر آستانه ها این است که پایین تر نشان می دهد که دارایی بیش از حد است ، و قسمت فوقانی که دارایی بیش از حد است.
بعضی اوقات ، یک سطح متوسط (نیمه راه بین پایین و زیاد) نیز مشخص می شود ، به عنوان مثال در مورد استراتژی هایی که امکان فروش کوتاه را نیز فراهم می کند. همچنین می توانیم آستانه های شدید تری مانند 20 و 80 را انتخاب کنیم که پس از آن نشان دهنده حرکت قوی تر است. با این حال ، این باید با استفاده از دانش دامنه یا با اجرای پشتی مشخص شود.
استراتژی مورد نظر ما را می توان به شرح زیر توصیف کرد:
- هنگامی که RSI از آستانه پایین عبور می کند (30) - دارایی را خریداری کنید
- هنگامی که RSI از آستانه فوقانی عبور می کند (70) - دارایی را بفروشید
در زیر ما RSI را با آستانه بالا و پایین ترسیم می کنیم.
ارزیابی عملکرد
آخرین مرحله شامل قرار دادن تمام معیارهای عملکرد در یک DataFrame و بازرسی از نتایج است. ما می توانیم ببینیم که در مورد پشتی ما ، استراتژی مبتنی بر میانگین حرکت ساده که از نظر بازده تولید شده بهترین عملکرد را دارد. همچنین بالاترین نسبت شارپ را داشت-بالاترین بازده اضافی (در این حالت بازده ، زیرا ما یک دارایی بدون ریسک را در نظر نمی گیریم) در هر واحد خطر. دومین استراتژی ترین استراتژی مبتنی بر MACD بود. همچنین خوب است که توجه کنیم که فقط این دو بهتر از استراتژی خرید و نگه داشتن معیار عملکرد داشتند.
perf_df = pd. dataframe ("میانگین متحرک ساده": sma_perf ،"حرکت متقاطع متوسط": mac_perf ،'MACD': MACD_PERF ،'RSI': rsi_perf>)perf_df. transpose ()نتیجه گیری
در این مقاله کوتاه ، من نشان دادم که چگونه می توان Zipline را با Talib ترکیب کرد تا استراتژی های معاملاتی پشتی را بر اساس شاخص های فنی محبوب مانند میانگین حرکت ، MACD ، RSI و غیره ترکیب کند ، اما این فقط آغاز بود ، همانطور که امکان ایجاد وجود دارداستراتژی های بسیار پیچیده تر.
برخی از مسیرهای احتمالی آینده:
- شامل چندین دارایی در استراتژی ها
- اجازه فروش کوتاه
- شاخص ها را مخلوط کنید
- پارامترهای مختلف برای هر استراتژی برای یافتن بهترین عملکردها
ما همچنین باید به یاد داشته باشیم که این واقعیت که استراتژی در گذشته به خوبی انجام می شود ، هیچ تضمینی نیست که این اتفاق دوباره در آینده رخ دهد.
مثل همیشه ، از هر بازخورد سازنده استقبال می شود. می توانید در توییتر یا نظرات به من دسترسی پیدا کنید. می توانید کد مورد استفاده برای این مقاله را در GitHub من پیدا کنید.
مقاله را دوست داشتید؟برای ادامه یادگیری با خواندن بدون محدودیت به یک عضو متوسط تبدیل شوید. اگر از این لینک برای عضویت استفاده می کنید ، بدون هیچ هزینه اضافی برای شما پشتیبانی می کنید. پیشاپیش متشکرم و شما را در اطراف می بینم!
در زیر می توانید سایر مقالات موجود در این سریال را پیدا کنید:
- ساختمان استراتژی های تجارت الگوریتمی بر اساس تجزیه و تحلیل میانگین واریانس (LINK)
من به تازگی کتابی در مورد استفاده از پایتون برای حل کارهای عملی در حوزه مالی منتشر کردم. اگر علاقه مند هستید ، من مقاله ای را ارسال کردم که مطالب کتاب را معرفی می کند. می توانید کتاب را در وب سایت Amazon یا Packt دریافت کنید.
سیگنال های تجاری...
ما را در سایت سیگنال های تجاری دنبال می کنید
برچسب :
نویسنده : عبدالله بوتیمار
بازدید : <-PostHit->
تاريخ : پنجشنبه
26 مرداد
1402 ساعت: 18:07