یک روش خودکار برای تجارت سهام با گروههای بولینگر در پایتون
سلب مسئولیت: این مقاله کاملاً برای اهداف آموزشی است و نباید به عنوان یک نکته سرمایه گذاری در نظر گرفته شود.
این دومین مقاله از سری معاملات الگوریتمی من است (مقاله اول را مشاهده کنید). در مقاله اول ، ما بحث کردیم که تجارت الگوریتمی چیست و یک نشانگر فنی سهام متوسط حرکت ساده (SMA) و نحوه استفاده از آن در پایتون برای تجارت سهام را آموخته است. در این مقاله ، ما قصد داریم یک نشانگر فنی جدید Bollinger Bands و نحوه استفاده از آن برای ایجاد استراتژی های معاملاتی در پایتون را بیاموزیم. کمربندهای ایمنی خود را برای یک سواری فوق العاده جمع کنید!
قبل از آن ، فقط یادداشتی در مورد تجارت الگوریتمی چیست. تجارت الگوریتمی فرایند فعال کردن رایانه ها برای تجارت سهام تحت شرایط یا قوانین خاص است. هنگامی که شرط داده شده برآورده شود ، تجارت به طور خودکار انجام می شود. همچنین ، این شرایط چیزی نیست جز استراتژی های معاملاتی که توسط بازرگانان انسانی به رایانه ها داده می شود.
قبل از ادامه کار ، اگر می خواهید استراتژی های معاملاتی خود را بدون هیچ گونه برنامه نویسی پشت سر بگذارید ، راه حلی برای آن وجود دارد. این backtestzone است. این یک بستر برای پشتوانه هر تعداد استراتژی معاملاتی در انواع مختلف دارایی های قابل تجارت به صورت رایگان و بدون برنامه نویسی است. می توانید بلافاصله با استفاده از پیوند در اینجا از ابزار استفاده کنید: https://www. backtestzone. com/
گروههای بولینگر
قبل از پرش برای کاوش در گروههای بولینگر ، ضروری است بدانید که میانگین متحرک ساده (SMA) چیست. میانگین حرکت ساده چیزی نیست جز میانگین قیمت سهام با توجه به مدت زمان مشخصی. اکنون ، گروههای بولینگر خطوط روند ترسیم شده در بالا و زیر SMA سهام داده شده در یک سطح انحراف استاندارد خاص هستند. برای درک بهتر گروههای بولینگر ، نگاهی به نمودار زیر بیندازید که نمایانگر باند های بولینگر سهام تسلا است که با SMA 20 محاسبه می شود
نوارهای بولینجر برای رعایت نوسانات یک سهام معین در طی یک دوره زمانی بسیار عالی هستند. نوسانات یک سهام مشاهده می شود که وقتی فضا یا فاصله بین باند فوقانی و تحتانی کمتر باشد ، پایین تر است. به طور مشابه ، هنگامی که فضا یا فاصله بین باند فوقانی و پایین بیشتر است ، سهام از نوسانات بالاتری برخوردار است. در حین مشاهده نمودار ، می توانید یک خط روند به نام "Middle BB 20" را مشاهده کنید که چیزی جز SMA 20 سهام تسلا نیست. فرمول محاسبه هر دو باند بالا و پایین تر از سهام به شرح زیر است:
under_bb = سهام SMA + SMA انحراف استاندارد * 2پایین _bb = سهام SMA - انحراف استاندارد SMA * 2
اکنون که ما درک می کنیم که گروه های بولینگر چیست ، بنابراین اجازه دهید برخی از شهود را در مورد استراتژی معاملاتی که می خواهیم با استفاده از گروههای بولینگر بسازیم ، به دست آوریم.
درباره استراتژی معاملاتی: ما قصد داریم یک استراتژی اساسی تجارت را با استفاده از شاخص Bollinger Bands اجرا کنیم که اگر قیمت سهام روز گذشته بیشتر از باند پایین روز گذشته باشد و قیمت سهام فعلی کمتر از آن باشد ، سیگنال خرید را شلیک می کند. گروه پایین روز جاری. به همین ترتیب ، اگر قیمت سهام روز گذشته کمتر از باند فوقانی روز گذشته باشد و قیمت سهام فعلی از گروه فوقانی روز جاری بیشتر باشد ، این استراتژی سیگنال فروش را نشان می دهد. استراتژی تجارت گروههای Bollinger ما را می توان به شرح زیر نشان داد:
IF PREV_STOCK>prev_lowerbb & cur_stockخرید کردناگر prev_stockCUR_UPPER_BB =>فروش
اکنون که ما درک استراتژی تجارت گروههای بولینگر خود داریم. بنابراین ، بیایید پیش برویم تا آن را در پایتون بسازیم و پیاده سازی کنیم.
اجرای در پایتون
ما قصد داریم استراتژی معاملاتی را که قبلاً در پایتون در مورد آن صحبت کردیم ، پیاده سازی کنیم تا ببینیم که در دنیای واقعی چقدر خوب کار می کند.
واردات بسته ها
قبل از کدگذاری استراتژی تجارت ما ، وارد کردن بسته های مورد نیاز به محیط پایتون ما ضروری است. بسته های اصلی برای دستکاری داده ها ، matplotlib برای اهداف ترسیم و NUMPY برای محاسبات قرار می گیرند. بسته های اضافی ریاضی برای کارکردهای ریاضی ، درخواست برای کشیدن داده های سهام از API و TermColor برای سفارشی سازی قلم خواهد بود.
اجرای پایتون:
توضیح کد: ابتدا ما تابعی به نام "get_historic_data" را تعریف می کنیم که به عنوان پارامتر یک سهام سهام ("نماد") را می گیرد. در داخل عملکرد ، ما کلید API و URL را در متغیرهای مربوطه آنها ذخیره می کنیم و سپس با استفاده از روش "دریافت" ارائه شده توسط بسته درخواست ، ما داده ها را با فرمت JSON استخراج می کنیم. در مرحله بعد ، ما برخی از کارهای دستکاری داده ها را برای تمیز کردن و استفاده از داده ها انجام می دهیم. سرانجام ، ما در حال بازگشت DataFrame هستیم. پس از پایان کار ، ما آن را صدا می کنیم و داده ها را در متغیر "TSLA" ذخیره می کنیم. اکنون ، بیایید مقادیر باند بولینگر را از داده های استخراج شده محاسبه کنیم.
محاسبه باند بولینگر
این مرحله بیشتر به دو بخش تقسیم می شود. قسمت اول محاسبه مقادیر SMA و بخش دوم محاسبه باند های بولینگر است.
محاسبه مقادیر SMA: در این قسمت ، ما قصد داریم مقادیر SMA تسلا را با تعداد دوره ها به عنوان 20 محاسبه کنیم.
توضیح کد: اولا ، ما تابعی به نام "SMA" را تعریف می کنیم که قیمت سهام ("داده") و تعداد دوره ها ("پنجره") را به عنوان پارامترها می گیرد. در داخل عملکرد ، ما از عملکرد "نورد" ارائه شده توسط بسته PANDAS برای محاسبه SMA برای تعداد مشخص دوره ها استفاده می کنیم. ما مقادیر محاسبه شده را در متغیر "SMA" ذخیره می کنیم و آن را برگردانیم. در مرحله بعد ، ما این عملکرد را فراخوانی می کنیم و مقادیر SMA را با تعداد دوره ها به عنوان 20 محاسبه می کنیم. اکنون ، اجازه دهید باند های بولینگر را محاسبه کنیم.
محاسبه باندهای بولینگر: در این بخش ، ما قصد داریم با استفاده از مقادیر SMA که قبلاً ایجاد کرده ایم ، مقادیر باند بولینگر تسلا را محاسبه کنیم.
توضیح کد: اولا ، ما تابعی به نام "BB" را تعریف می کنیم که قیمت سهام ("داده") ، مقادیر SMA ("SMA") و تعداد دوره ها را به عنوان پارامترها ("پنجره") می گیرد. در داخل عملکرد ، ما از عملکرد "Rolling" و "STD" برای محاسبه انحراف استاندارد داده های سهام داده شده استفاده می کنیم و مقادیر انحراف استاندارد محاسبه شده را در متغیر "STD" ذخیره می کنیم. در مرحله بعد ، ما با استفاده از فرمول های مربوطه ، مقادیر باند بولینگر را محاسبه می کنیم و در آخر ، مقادیر محاسبه شده را برمی گردانیم. ما در حال ذخیره مقادیر Bollinger Bands در DataFrame "TSLA" ما با استفاده از عملکرد ایجاد شده "BB" هستیم.
ترسیم مقادیر باندهای بولینگر
در این مرحله ، ما می خواهیم مقادیر باندهای بولینگر محاسبه شده را ترسیم کنیم تا بیشتر از آنها حس کنیم.
اجرای پایتون:
توضیح کد: با استفاده از عملکرد "طرح" که توسط بسته Matplotlib ارائه شده است ، ما مقادیر باند بولینگر را به همراه قیمت های "نزدیک" تسلا ترسیم کرده ایم. حالا بیایید نمودار را رعایت کنیم. خط آبی روشن نشان دهنده "نزدیک" قیمت تسلا است و خط سیاه نقطه ای نمایانگر نوارهای تحتانی و فوقانی است. به طور مشابه ، خط نقطه خاکستری نشان دهنده باند میانی یا مقادیر SMA 20 تسلا است. همچنین می توانیم مشاهده کنیم که فضاهای بین باندهای فوقانی و تحتانی در زمان های مختلف باریک تر یا گسترده تر می شوند که نشان دهنده نوسانات سهام است (گسترده تر == نوسانات بالا و برعکس).
ایجاد استراتژی تجارت
در این مرحله ، ما قصد داریم استراتژی تجاری Bollinger Bands را در پایتون اجرا کنیم.
اجرای پایتون:
توضیح کد: ما در حال ترسیم مقادیر گروههای بولینگر به همراه سیگنال های خرید و فروش تولید شده توسط استراتژی تجارت هستیم. ما می توانیم مشاهده کنیم که هر زمان که قیمت نزدیک سهام (خط آبی روشن) زیر باند پایین (خط سیاه رنگ پایین) ، یک سیگنال خرید به رنگ سبز ترسیم می شود ، به همین ترتیب ، هر زمان که قیمت نزدیک سهام از بالای باند بالایی عبور می کند (قسمت بالایی سیاهخط) ، یک سیگنال فروش به رنگ قرمز ترسیم شده است.
اکنون ، با استفاده از سیگنال های معاملاتی ، اجازه دهید موقعیت خود را در سهام ایجاد کنیم.
ایجاد موقعیت ما
در این مرحله ، ما قصد داریم لیستی را ایجاد کنیم که اگر سهام را در اختیار نداریم یا سهام خود را نگه نداریم ، 1 را نشان می دهد.
اجرای پایتون:
توضیح کد: اول ، ما یک لیست خالی به نام "موقعیت" ایجاد می کنیم. ما در حال عبور از دو حلقه برای ما هستیم ، یکی این است که مقادیر لیست "موقعیت" را تولید کنیم تا فقط با طول لیست "سیگنال" مطابقت داشته باشد. حلقه دیگر موردی است که ما برای تولید مقادیر موقعیت واقعی از آن استفاده می کنیم. در داخل حلقه دوم ، ما در مورد مقادیر لیست "سیگنال" تکرار می شویم و مقادیر لیست "موقعیت" در مورد اینکه چه شرایط راضی می شود ، ضمیمه می شوند. اگر سهام خود را نگه داریم یا اگر سهام خود را نداشته باشیم یا سهام خود را نداریم ، مقدار موقعیت 1 باقی مانده است. سرانجام ، ما در حال انجام برخی از دستکاری های داده برای ترکیب همه لیست های ایجاد شده در یک DataFrame هستیم.
از خروجی که نشان داده می شود ، می بینیم که از ردیف 318-320 ، موقعیت ما در سهام 1 باقی مانده است (از آنجا که هیچ تغییری در سیگنال باند بولینجر ایجاد نشده است) اما موقعیت ما به طور ناگهانی به 0 تبدیل شد که سهام را فروختیمهنگامی که سیگنال معاملاتی Bollinger Bands یک سیگنال فروش را نشان می دهد (-1).
اکنون زمان آن رسیده است که برخی از مراحل پشتی را اجرا کنیم!
پشتی
قبل از حرکت ، ضروری است بدانید که پشتی چیست. Backtesting فرایندی است که می بینیم استراتژی معاملاتی ما در داده های سهام داده شده چگونه انجام داده است. در مورد ما ، ما قصد داریم یک فرآیند پشتی را برای استراتژی معاملاتی گروههای بولینجر از طریق داده های سهام تسلا اجرا کنیم.
اجرای پایتون:
خروجی:
سود حاصل از استراتژی BB با سرمایه گذاری 100K دلار در TSLA: 18426. 42درصد سود استراتژی BB: 18 ٪
توضیح کد: اول ، ما با استفاده از عملکرد "تفاوت" ارائه شده توسط بسته Numpy ، بازده سهام تسلا را محاسبه می کنیم و آن را به عنوان یک dataframe در متغیر "TSLA_RET" ذخیره کرده ایم. در مرحله بعد ، ما برای محاسبه بازده هایی که از استراتژی تجارت گروههای بولینگر به دست آوردیم ، یک حلقه را برای تکرار مقادیر متغیر "TSLA_RET" می گذرانیم ، و این مقادیر بازده به لیست "BB_STRATEGETY_RET" اختصاص می یابد. در مرحله بعد ، ما لیست "bb_strategy_ret" را به یک dataframe تبدیل می کنیم و آن را در متغیر "bb_strategy_ret_df" ذخیره می کنیم.
مرحله بعدی روند پشتی می آید. ما می خواهیم با سرمایه گذاری صد هزار دلار در استراتژی تجارت خود ، استراتژی خود را پشت سر بگذاریم. بنابراین ابتدا ، ما میزان سرمایه گذاری را در متغیر "سرمایه گذاری_ ولت" ذخیره می کنیم. پس از آن ، ما تعداد سهام تسلا را که می توانیم با استفاده از مبلغ سرمایه گذاری خریداری کنیم ، محاسبه می کنیم. می توانید توجه داشته باشید که من از عملکرد "کف" ارائه شده توسط بسته ریاضی استفاده کرده ام ، زیرا ، ضمن تقسیم مبلغ سرمایه گذاری با قیمت بسته شدن سهام تسلا ، خروجی را با اعداد اعشاری از بین می برد. تعداد سهام باید یک عدد صحیح باشد اما تعداد اعشاری نیست. با استفاده از عملکرد "کف" ، می توانیم اعشار را برش دهیم. به یاد داشته باشید که عملکرد "کف" پیچیده تر از عملکرد "دور" است. سپس ، ما برای یافتن بازده سرمایه گذاری و به دنبال آن برخی از وظایف دستکاری داده ها ، یک حلقه را می گذرانیم.
سرانجام ، ما با سرمایه گذاری صد هزار نفر در استراتژی تجارت خود ، بازده کل را که بدست آورده ایم چاپ می کنیم و مشخص می شود که ما در یک سال سود تقریبی هجده هزار و پانصد دلار کسب کرده ایم. این بد نیست! اکنون ، بیایید بازده خود را با SPY ETF (ETF طراحی شده برای ردیابی شاخص بازار سهام S& P 500) مقایسه کنیم.
مقایسه ETF جاسوسی
این مرحله اختیاری است اما بسیار توصیه می شود زیرا می توانیم ایده ای از عملکرد استراتژی تجارت ما در برابر معیار (ETF جاسوسی) داشته باشیم. در این مرحله ، ما قصد داریم داده های SPY ETF را با استفاده از عملکرد "get_historic_data" که ما ایجاد کردیم استخراج کنیم و بازده هایی را که از جاسوسی ETF دریافت می کنیم با استراتژی Bollinger Bands خود در TESLA بازگردانیم.
اجرای پایتون:
خروجی:
سود معیار با سرمایه گذاری 100K دلار: 13270. 5درصد سود معیار: 13 ٪سود استراتژی BB 5 ٪ بیشتر از سود معیار است
توضیح کد: کد استفاده شده در این مرحله تقریباً مشابه کد مورد استفاده در مرحله بک تست قبلی است، اما به جای سرمایه گذاری در تسلا، با اجرای نکردن هیچ استراتژی معاملاتی در SPY ETF سرمایه گذاری می کنیم. از خروجی، می توانیم ببینیم که استراتژی معاملاتی Bollinger Bands ما 5% از SPY ETF بهتر عمل کرده است. عالیه!
نتیجه
در این مقاله یک اندیکاتور فنی سهام جدید که باندهای بولینگر است و راه های پیاده سازی و بک تست استراتژی معاملاتی باندهای بولینگر در پایتون را یاد گرفتیم. استراتژی معاملاتی که در این مقاله پیاده سازی کردیم، یک استراتژی اساسی است، اما استراتژی های معاملاتی زیادی بر اساس باندهای بولینگر وجود دارد که باید اعمال شوند. اعتقاد بر این است که باندهای بولینگر برای معاملات الگوریتمی چندان خوب نیستند، اما با استراتژی معاملاتی مناسب می توانند موثر باشند. همچنین چندین راه برای بهبود این مقاله وجود دارد که عبارتند از:
- انتخاب سهام: در این مقاله، ما به طور تصادفی تسلا را انتخاب کردیم، اما در دنیای واقعی تصمیم عاقلانه ای نیست. در عوض، الگوریتم های یادگیری ماشینی می توانند برای انتخاب سهام قابل معامله مناسب استفاده شوند. این مرحله بخش واقعاً مهمی از معاملات الگوریتمی در دنیای واقعی است و در صورت انتخاب تصادفی سهام، نتایج فاجعه بار خواهد بود.
- بهبود استراتژی: همانطور که قبلاً گفتم، استراتژی معاملاتی که ما در این مقاله استفاده کردیم، یک استراتژی سطح ابتدایی است و زمانی که در دنیای واقعی اعمال شود، عملکرد استثنایی ندارد. بنابراین، به شدت توصیه می شود که استراتژی های Bollinger Bands بیشتری را کشف کرده و آنها را در پایتون پیاده سازی کنید.
خودشه! اگر فراموش کردید هر یک از قسمت های کدنویسی را دنبال کنید، نگران نباشید! من کد منبع کامل این مقاله را در پایان ارائه کرده ام. امیدواریم از این مقاله ایده ای در مورد باندهای بولینگر گرفته باشید.
کد کامل:
فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید
برچسب :
نویسنده : آرش اصل زاد
بازدید : <-PostHit->
تاريخ : دوشنبه
16 مرداد
1402 ساعت: 22:18