ما با استفاده از استراتژی باند دو بولینگر و در 5 سال ارزش داده های مقایسه آن با مقایسه آن با Buy & Hold ، یک ربات برای تجارت Appl Stock ایجاد خواهیم کرد.
منتشر شده در
به سمت علم داده
5 دقیقه بخوانید 29 فوریه 2020
یکی از بزرگترین چالش های یادگیری تجزیه و تحلیل فنی (اگر نه بزرگترین) "شرط بندی" پول شما در یک استراتژی است که شما واقعاً نمی دانید که آیا این کار را انجام می دهد. اطلاعات خوب و بد زیادی در اینترنت وجود دارد ، اما پیدا کردن چه چیزی کار می کند و چه چیزی از طریق خسارات مالی انجام نمی شود ، قرص سخت برای بلع است. خوشبختانه ، ما نیازی به ریسک کردن پول سخت خود نداریم تا چیزی را که دیگر به صورت آنلاین آموخته ایم آزمایش کنیم. ما می توانیم قبل از شروع کار ، از Quantopian استفاده کنیم تا از آن استفاده کنیم.
من می خواهم یک تمرین ساده را پیشنهاد کنم: از یکی از مشهورترین شاخص ها برای تجارت سهام اپل از سال 2015 تا 2020 استفاده کنید. این استراتژی باند دو بولینگر است. این کاری است که ما می خواهیم انجام دهیم:
1- 2 مجموعه باند بولینگر را محاسبه کنید.
یک مجموعه 1 انحراف استاندارد به دور از میانگین حرکت ساده 20 روزه (SMA20) خواهد بود ، در حالی که دیگری 2 انحراف استاندارد به دور از SMA20 خواهد بود.
2- مناطق عملیاتی را تعریف کنید
منطقه بین دو باند فوقانی "منطقه خرید" (منطقه قرمز روی تصویر بالا) خواهد بود. منطقه ای که بین دو باند پایین قرار دارد ، "منطقه فروش" (منطقه سبز) خواهد بود. و منطقه مرکزی ، "منطقه خنثی".
3- عملیاتی کردن استراتژی
- اگر قیمت فعلی در "منطقه خرید" باشد ، ما به مدت طولانی می رویم.
- اگر قیمت فعلی در "منطقه خنثی" باشد ، ما قرار می گیریم.
- اگر قیمت فعلی در "منطقه فروش" باشد ، ما در برنامه کوتاه می رویم.
علاوه بر این ، ما همچنین پارامترهای مختلفی را برای این الگوریتم آزمایش خواهیم کرد. اما ابتدا به یک معیار نیاز داریم. بیایید ببینیم عملکرد خرید برنامه و نگه داشتن آن به مدت 5 سال چه بود.
خیلی بد نیست ، نرخ بازده 194. 63 ٪ در 5 سال یا تقریباً 15 ٪ در سال. با این حال بتا و سقوط بسیار زیاد بودند. همچنین ، افزایش آلفا و نسبت شارپ مطلوب خواهد بود. بیایید یک ربات بنویسیم تا استراتژی باند بولینگر دوتایی را اجرا کنیم و آن را برای مدت زمان مشابهی پشت سر بگذاریم:
# استراتژی اصلی دوتایی BBوارد کردن numpy به عنوان npdef Initialize (زمینه):Context. stock = SID (24)برنامه ریزی_ کار (buy_and_hold ، date_rules. every_day ()context. sell = falsecontext. buy = falsedef bollinger_bands (زمینه ، داده):دوره = 20current_price = data. current (Context. stock ، "قیمت")قیمت = data. history (context. stock ، "قیمت" ، دوره ، "1d")avg_20 = قیمت. mean ()std = قیمت. std () under_band1 = avg_20 + stdunder_band2 = avg_20 + 2*stdLower_Band1 = AVG_20 - STDLower_Band2 = AVG_20 - 2*STD stop_loss = 0. 0 if ((current_price>under_band1) و (current_priceorder_target_percent (Context. stock ، 1. 0)Context. buy = درست استcontext. sell = falseچاپ ("موقعیت طولانی") elif ((current_priceLower_Band2)) و نه متن. sell:order_target_percent (Context. stock ، -1. 0)context. buy = falsecontext. sell = درست استچاپ ("موقعیت کوتاه") elif (current_price<(1 - stop_loss) * lower_band1) and context.buy:order_target_percent (Context. stock ، 0)context. buy = falsecontext. sell = falseچاپ ("متوقف کردن از دست دادن طولانی") elif (current_price>(1 + stop_loss) * under_band1) و context. sell:order_target_percent (Context. stock ، 0)context. buy = falsecontext. sell = falseچاپ ("توقف از دست دادن کوتاه") ضبط (upper = under_band2 ، پایین = پایین_بند 2 ، قیمت = فعلی_پریس)
در این کد از SMA20 و از دست دادن 0 ٪ استفاده شد. علاوه بر این ، هنگامی که قیمت فعلی از مناطق خرید یا فروش خارج شود ، Algo موقعیت را بسته می کند. بیایید ببینیم که این کد چگونه عملکرد خواهد داشت:
کاهش قابل توجهی در بازده وجود دارد ، اما همه سرمایه گذاری های دیگر بهبود یافته اند. بیایید ببینیم که آیا می توانیم با کمی الگوریتم خود بهتر از این کار کنیم. من 3 تغییر پیشنهاد می کنم:
1- به جای SMA20 ، بیایید SMA13 را امتحان کنیم."اینترنت" به شما می گوید SMA را بین 8 تا 12 انتخاب کنید ، اما من فکر می کنم بهتر است از آن استفاده کنید و یکی را انتخاب کنید که برای امنیتی که می خواهید با آن کار کنید بهترین کار را انجام دهید. من چندین آزمایش کردم و 13 بهترین بود.
2- اجازه دهید فضای بیشتری برای قیمت فعلی "نفس بکشد". بیایید اجازه دهیم قیمت بین 2 انحراف استاندارد از میانگین حرکت ساده (باندهای فوقانی و پایین) بین 2 انحراف استاندارد باشد.
3- از دست دادن توقف 2 ٪.
# استراتژی BB دوتایی اصلاح شدهوارد کردن numpy به عنوان npdef Initialize (زمینه):Context. stock = SID (24)برنامه ریزی_ کار (bollinger_bands ، date_rules. every_day ()context. sell = falsecontext. buy = falsedef buy_and_hold (زمینه ، داده):order_target_percent (Context. stock ، 1. 0)چاپ ('خرید برنامه')def bollinger_bands (زمینه ، داده):دوره = 13current_price = data. current (Context. stock ، "قیمت")قیمت = data. history (context. stock ، "قیمت" ، دوره ، "1d")avg_20 = قیمت. mean ()std = قیمت. std () under_band1 = avg_20 + stdunder_band2 = avg_20 + 2*stdLower_Band1 = AVG_20 - STDLower_Band2 = AVG_20 - 2*STD stop_loss = 0. 02 if ((current_price>under_band1) و (current_priceorder_target_percent (Context. stock ، 1. 0)Context. buy = درست استcontext. sell = falseچاپ ("موقعیت طولانی") elif ((current_priceLower_Band2)) و نه متن. sell:order_target_percent (Context. stock ، -1. 0)context. buy = falsecontext. sell = درست استچاپ ("موقعیت کوتاه") elif (current_price<(1 - stop_loss) * lower_band2) and context.buy:order_target_percent (Context. stock ، 0)context. buy = falsecontext. sell = falseچاپ ("متوقف کردن از دست دادن طولانی") elif (current_price>(1 + stop_loss) * under_band2) و Context. sell:order_target_percent (Context. stock ، 0)context. buy = falsecontext. sell = falseچاپ ("توقف از دست دادن کوتاه") ضبط (upper = under_band2 ، پایین = پایین_بند 2 ، قیمت = فعلی_پریس)بیایید این کد را پشت سر بگذاریم:
خوبما توانستیم بازده ، آلفا و نسبت شارپ را در حالی که بتا و کاهش آن کاهش می یابد ، بهبود بخشیم.
نتیجه
در این مقاله ما عملکرد استراتژی Double BB را در مورد سهام اپل در برابر استراتژی Buy & Hold بررسی کردیم.
BB دوتایی اتوماتیک در مقایسه با خرید و نگه داشتن در حالی که باعث کاهش خطر بازار بتا و کاهش می شود ، بیش از 100 ٪ بازده را افزایش داد. همچنین ، ربات باعث افزایش آلفا و نسبت شارپ شد.
من دوست دارم ایده های شما را در مورد چگونگی بهبود این الگوریتم در بخش نظرات بشنوم.
توجه داشته باشید از ویرایشگران Data Science: در حالی که ما به نویسندگان مستقل اجازه می دهیم مقالات را مطابق با قوانین و دستورالعمل های خود منتشر کنند ، ما سهم هر نویسنده را تأیید نمی کنیم. شما نباید بدون اینکه به دنبال مشاوره حرفه ای باشید ، به آثار نویسنده اعتماد کنید. برای جزئیات بیشتر به اصطلاحات خواننده ما مراجعه کنید.
فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید
برچسب :
نویسنده : احمد قانع پور
بازدید : 26
تاريخ : جمعه
10 شهريور
1402 ساعت: :