آیا ترکیب ADX و RSI یک استراتژی تجاری سودآور بهتر ایجاد می کند؟

  • 2021-03-6

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

در این مقاله ، ما قصد داریم از دو شاخص فنی معروف که میانگین شاخص جهت دار (ADX) هستند ، و شاخص قدرت نسبی (RSI) برای ساختن یک استراتژی معاملاتی و آزمایش آن بر روی داده های بازار واقعی با استفاده از پایتون تا استفاده کنیم. ببینید که آیا این سود قابل توجهی می کند یا خیر. بدون آزار و اذیت بیشتر ، اجازه دهید وارد مقاله شویم!

قبل از ادامه کار ، اگر می خواهید استراتژی های معاملاتی خود را بدون هیچ گونه برنامه نویسی پشت سر بگذارید ، راه حلی برای آن وجود دارد. این backtestzone است. این یک بستر برای حمایت از هر تعداد استراتژی معاملاتی در انواع مختلف دارایی های قابل تجارت به صورت رایگان و بدون برنامه نویسی است. می توانید بلافاصله با استفاده از پیوند در اینجا از ابزار استفاده کنید: https://www. backtestzone. com/

شاخص جهت متوسط (ADX)

ADX یک شاخص فنی است که به طور گسترده در اندازه گیری قدرت روند بازار مورد استفاده قرار می گیرد. اکنون ، ADX جهت این روند را اندازه گیری نمی کند ، خواه صعودی باشد و چه نزولی ، بلکه فقط نشان می دهد که این روند چقدر قوی است. بنابراین ، برای شناسایی جهت روند ، ADX با یک شاخص جهت مثبت (+DI) و یک شاخص جهت منفی (-DI) ترکیب می شود. همانطور که از نام آن پیداست ، +DI روند صعودی یا مثبت بازار را اندازه گیری می کند ، به طور مشابه ، -DI روند نزولی یا منفی بازار را اندازه گیری می کند. مقادیر همه مؤلفه ها بین 0 تا 100 محدود می شوند ، از این رو به عنوان نوسان ساز عمل می کنند. تنظیم سنتی ADX 14 به عنوان دوره بازگشت است.

برای محاسبه مقادیر ADX با 14 به عنوان دوره برگشت ، ابتدا حرکت مثبت (+DM) و جهت منفی (-DM) تعیین می شود.+DM با یافتن تفاوت بین جریان زیاد و بالاتر از حد قبلی محاسبه می شود و به طور مشابه ، -DM با پیدا کردن تفاوت بین کم و جریان قبلی محاسبه می شود. می تواند به شرح زیر باشد:

سپس ، ATR با 14 به عنوان دوره بازگشت محاسبه می شود. اکنون ، با استفاده از حرکت جهت محاسبه شده و مقادیر ATR ، شاخص جهت مثبت (+DI) و شاخص جهت منفی (-DI) محاسبه می شود. برای تعیین مقادیر +DI ، مقدار دریافت شده با استفاده از میانگین متحرک نمایی (EMA) حرکت جهت مثبت ( +DM) با 14 به عنوان دوره بازگشت به عنوان ATR که قبلاً محاسبه شده 14 روزه تقسیم می شود و سپس ضرب می شود. 100. همین امر در مورد تعیی ن-DI نیز صدق می کند اما به جای گرفتن EMA 14 روزه +DM ، حرکت جهت منفی (-DM) در نظر گرفته می شود. فرمول محاسبه هر دو +DI و-DI را می توان به شرح زیر نشان داد:

مرحله بعدی استفاده از + DI و-DI برای محاسبه شاخص جهت است. می توان آن را با تقسیم مقدار مطلق تفاوت بین + di و-di با مقدار مطلق کل + di و-Di ضرب شده توسط 100 تعیین کرد. فرمول محاسبه شاخص جهت می تواند به شرح زیر باشد:

مرحله آخر محاسبه خود ADX با استفاده از مقادیر شاخص جهت دار تعیین شده است. ADX با ضرب مقدار شاخص جهت قبلی با 13 (دوره برگش ت-1) و اضافه کردن آن با شاخص جهت محاسبه می شود ، سپس توسط 100 ضرب می شود. فرمول برای محاسبه مقادیر ADX می تواند به شرح زیر باشد:

ADX نمی تواند همانطور که هست استفاده شود اما باید با یک میانگین متحرک سفارشی که توسط بنیانگذار این شاخص ، خود ولز وایلدر ایجاد شده است ، صاف شود. این کل فرآیند محاسبه مقادیر ADX است. اکنون ، نمودار را تجزیه و تحلیل می کنیم که قیمت سهام اپل به همراه خواندن ADX 14 آن ترسیم شده است.

نمودار فوق به دو صفحه تقسیم می شود: پانل فوقانی با قیمت بسته شدن اپل و پانل پایین با اجزای ADX. در کنار اجزای ، یک خط متراکم خاکستری ترسیم شده است که چیزی نیست جز آستانه ADX که در سطح 35 ترسیم شده است. همانطور که قبلاً گفتم ، ADX جهت روند را ردیابی نمی کند بلکه در عوض ، قدرت و آنچندین بار در نمودار دیده می شود که در آن خط ADX افزایش می یابد وقتی بازار روند قوی (یا بالا یا پایین) را نشان می دهد و وقتی بازار محدود به ادغام می شود ، کاهش می یابد. این همان مورد با هر دو خط شاخص جهت نیز هست. ما می توانیم ببینیم که وقتی بازار یک صعود محکم را نشان می دهد و در طی یک روند نزولی و برعکس برای خ ط-DI کاهش می یابد ، خط +di افزایش می یابد.

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

شاخص قدرت نسبی (RSI)

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

در سال 1978 توسط J. Welles Wilder (بنیانگذار ADX نیز) تأسیس و توسعه یافته است ، شاخص قدرت نسبی یک نوسان ساز حرکت است که توسط معامله گران استفاده می شود تا مشخص شود که آیا بازار در وضعیت بیش از حد یا بیش از حد است. قبل از حرکت ، بیایید بررسی کنیم که بیش از حد و بیش از حد است. هنگامی که یک دارایی دائماً توسط معامله گران خریداری می شود و آن را به یک روند بسیار صعودی منتقل می کند و به ادغام می پردازد ، بازار در وضعیت بیش از حد در نظر گرفته می شود. به همین ترتیب ، هنگامی که یک دارایی دائماً توسط معامله گران حرکت می کند که آن را به یک روند نزولی منتقل می کنند و تمایل به عقب نشینی دارند ، یک بازار در وضعیت فراوان در نظر گرفته می شود.

به عنوان یک نوسان ساز ، مقادیر RSI بین 0 تا 100 محدود شده است. روش سنتی برای ارزیابی وضعیت بازار با استفاده از شاخص قدرت نسبی این است که یک خواندن RSI از 70 یا بالاتر ، وضعیت بیش از حد و به همین ترتیب ، خواندن RSI را نشان می دهد30 یا پایین تر نشان دهنده بازار در وضعیت Oversold است. این بیش از حد و بیش از حد می تواند در مورد اینکه کدام سهام یا دارایی را انتخاب می کنید تنظیم شود. به عنوان مثال ، برخی از دارایی ها ممکن است خوانش RSI ثابت از 80 و 20 داشته باشند. بنابراین در این حالت ، می توانید سطح بیش از حد و بیش از حد را به ترتیب 80 و 20 تعیین کنید. تنظیم استاندارد RSI 14 به عنوان دوره بازگشت است.

RSI ممکن است از نظر تفسیر ارزش بیشتر شبیه به اسیلاتور Stochastic به نظر برسد، اما نحوه محاسبه آن کاملاً متفاوت است. سه مرحله در محاسبه RSI وجود دارد.

  • محاسبه میانگین متحرک نمایی (EMA) سود و زیان یک دارایی: کلمه ای در مورد میانگین متحرک نمایی. EMA نوعی میانگین متحرک (MA) است که به طور خودکار وزن بیشتری (چیزی جز اهمیت) به آخرین نقطه داده و وزن کمتری را به نقاط داده در گذشته های دور اختصاص می دهد. در این مرحله ابتدا بازده دارایی را محاسبه کرده و سود را از زیان جدا می کنیم. با استفاده از این مقادیر جدا شده، دو EMA برای تعداد مشخصی از دوره ها محاسبه می شوند.
  • محاسبه قدرت نسبی یک دارایی: قدرت نسبی یک دارایی با تقسیم میانگین متحرک نمایی سود یک دارایی از میانگین متحرک نمایی از دست دادن دارایی برای تعداد معینی از دوره ها تعیین می شود. می توان آن را به صورت ریاضی به صورت زیر نشان داد:
  • محاسبه مقادیر RSI: در این مرحله با استفاده از مقادیر Relative Strength که در مرحله قبل محاسبه کردیم، RSI را محاسبه خواهیم کرد. برای محاسبه مقادیر RSI یک دارایی معین برای تعداد معینی از دوره ها، فرمولی وجود دارد که باید از آن پیروی کنیم:

این کل فرآیند محاسبه RSI است. مانند نحوه تجزیه و تحلیل نمودار ADX برای ایجاد درک کاملی از اندیکاتور، برای RSI نیز همین کار را انجام خواهیم داد.

نمودار فوق به دو پنل تفکیک شده است: پنل بالا با قیمت بسته شدن اپل و پنل پایین با مقادیر محاسبه شده RSI 14 اپل. هنگام تجزیه و تحلیل پنل ترسیم شده با مقادیر RSI، می توان دریافت که روند و حرکت مقادیر محاسبه شده همانند قیمت بسته شدن اپل است. بنابراین، می توانیم در نظر بگیریم که RSI یک نشانگر جهت دار است. برخی از اندیکاتورها غیر جهت دار هستند به این معنی که حرکت آنها با حرکت واقعی سهام نسبت معکوس دارد و این گاهی اوقات می تواند معامله گران را گیج کند و درک آن نیز سخت باشد.

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

استراتژی تجارت

اکنون که برخی از شهودات اساسی را در هر دو نشانگر ADX و RSI ایجاد کرده ایم. بیایید استراتژی معاملاتی را که در این مقاله پیاده سازی کنیم، مورد بحث قرار دهیم. استراتژی کاملا منحصر به فرد خواهد بود. اگر قرائت ADX فعلی بالای 35 باشد، قرائت RSI فعلی زیر 50 باشد و +DI فعلی کمتر ا ز-DI فعلی باشد، ما طولانی می‌شویم (سهام را می‌خریم). به طور مشابه، اگر قرائت ADX فعلی بالای 35 باشد، قرائت RSI فعلی بالای 50 باشد و جریان +DI بیشتر ا ز-DI فعلی باشد، کوتاه می‌شویم (سهام را می‌فروشیم). استراتژی ما اساساً ترکیبی از یک استراتژی متعارف ADX معکوس و استراتژی متقاطع خط RSI با برخی تغییرات جزئی است. استراتژی را می توان به صورت زیر نشان داد:

خودشه! این بخش تئوری ما را به پایان می‌رساند و اجازه دهید به بخش برنامه‌نویسی برویم، جایی که از پایتون برای ساختن اندیکاتورها از ابتدا استفاده می‌کنیم، استراتژی معاملاتی مورد بحث را ایجاد می‌کنیم، استراتژی را روی داده‌های سهام اپل آزمایش می‌کنیم و در نهایت نتایج را با نتایج SPY ETF مقایسه می‌کنیم.. بیایید کمی کدنویسی کنیم! قبل از حرکت، یادداشتی در مورد سلب مسئولیت: هدف این مقاله تنها آموزش افراد است و باید به عنوان یک بخش اطلاعاتی در نظر گرفته شود، اما نه به عنوان توصیه سرمایه گذاری.

پیاده سازی در پایتون

بخش کد نویسی به مراحل مختلف به شرح زیر طبقه بندی می شود:

ما از ترتیب ذکر شده در لیست بالا پیروی می کنیم و کمربندهای ایمنی شما را بسته می کنیم تا هر قسمت کدگذاری بعدی را دنبال کنیم.

مرحله 1: واردات بسته ها

وارد کردن بسته های مورد نیاز به محیط پایتون یک مرحله غیرقابل پرش است. بسته های اولیه Panda ها برای کار با داده ها، NumPy برای کار با آرایه ها و توابع پیچیده، Matplotlib برای اهداف رسم و درخواست برای برقراری تماس های API هستند. بسته‌های ثانویه ریاضی برای توابع ریاضی و Termcolor برای سفارشی‌سازی فونت (اختیاری) خواهند بود.

پیاده سازی پایتون:

اکنون که تمام بسته های مورد نیاز را به پایتون خود وارد کرده ایم. بیایید داده های تاریخی اپل را با نقطه پایانی API دوازده داده جمع آوری کنیم.

مرحله 2: استخراج داده های سهام از دوازده داده

در این مرحله، می‌خواهیم داده‌های سهام تاریخی اپل را با استفاده از یک نقطه پایانی API ارائه شده توسط twelvedata. com استخراج کنیم. قبل از آن، یک یادداشت در twelvedata. com: Twelve Data یکی از پیشروترین ارائه دهندگان داده بازار است که دارای مقدار زیادی از نقاط پایانی API برای همه انواع داده های بازار است. تعامل با API های ارائه شده توسط Twelve Data بسیار آسان است و یکی از بهترین اسناد را دارد. همچنین، مطمئن شوید که در twelvedata. com یک حساب کاربری دارید، تنها در این صورت، می‌توانید به کلید API خود (عنصر حیاتی برای استخراج داده‌ها با یک API) دسترسی پیدا کنید.

پیاده سازی پایتون:

خروجی:

توضیح کد: اولین کاری که انجام دادیم این بود که تابعی به نام «get_historical_data» تعریف کردیم که نماد سهام («نماد») و تاریخ شروع داده های تاریخی («start_date») را به عنوان پارامتر می گیرد. در داخل تابع، ما کلید API و URL را تعریف کرده و آنها را در متغیر مربوطه خود ذخیره می کنیم. سپس، داده‌های تاریخی را با فرمت JSON با استفاده از تابع «get» استخراج می‌کنیم و آن را در متغیر «raw_df» ذخیره می‌کنیم. پس از انجام برخی فرآیندها برای تمیز کردن و قالب‌بندی داده‌های خام JSON، آن‌ها را در قالب یک دیتافریم تمیز Pandas برمی‌گردانیم. در نهایت، ما تابع ایجاد شده را فراخوانی می کنیم تا داده های تاریخی اپل را از ابتدای سال 2010 جمع آوری کرده و در متغیر "aapl" ذخیره کنیم.

مرحله 3: محاسبه ADX

در این مرحله قصد داریم مقادیر ADX را با روشی که قبلا در مورد آن صحبت کردیم محاسبه کنیم.

پیاده سازی پایتون:

خروجی:

توضیح کد: ابتدا تابعی به نام "get_adx" تعریف می کنیم که داده های بالا ("بالا")، کم ("کم") و بسته ("close") سهام را به همراه دوره بازگشت ("lookback") به عنوان دریافت می کند. مولفه های.

در داخل عملکرد ، ما ابتدا به ترتیب در حال محاسبه و ذخیره + DM و-DM در "Plus_dm" و "Minus_DM" هستیم. سپس محاسبه ATR می آید که در ابتدا ما سه تفاوت را محاسبه می کنیم و یک متغیر "TR" را برای ذخیره بالاترین مقادیر در بین تفاوت های تعیین شده تعریف می کنیم ، بنابراین ، مقادیر ATR را در متغیر "ATR" محاسبه و ذخیره کردیم.

با استفاده از حرکات جهت دار محاسبه شده و مقادیر ATR ، ما + DI و-DI را محاسبه می کنیم و آنها را به ترتیب در متغیرهای "plus_di" و "minus_di" ذخیره می کنیم. با کمک فرمول قبلاً مورد بحث ، ما مقادیر شاخص جهت را محاسبه می کنیم و آنها را در متغیر "DX" ذخیره می کنیم و آن مقادیر را در فرمول ADX برای محاسبه مقادیر شاخص جهت دار استفاده می کنیم. سپس ، ما یک متغیر "adx_smooth" را برای ذخیره مقادیر صاف ADX تعریف کردیم. سرانجام ، ما در حال بازگشت و فراخواندن عملکرد برای به دست آوردن مقادیر + DI ، -DI و ADX اپل با 14 به عنوان دوره بازگشت هستیم.

مرحله 4: محاسبه RSI

در این مرحله ، ما می خواهیم مقادیر RSI را با 14 به عنوان دوره بازگشت با استفاده از فرمول RSI که قبلاً در مورد آن بحث کردیم محاسبه کنیم.

پیاده سازی پایتون:

خروجی:

توضیح کد: اولا ، ما تابعی به نام "GET_RSI" را تعریف می کنیم که قیمت بسته شدن سهام ("نزدیک") و دوره بازگشت ("نگاه برگشت") را به عنوان پارامترها می گیرد. در داخل عملکرد ، ما ابتدا با استفاده از عملکرد "تفاوت" که توسط بسته Pandas ارائه شده است ، بازده سهام را محاسبه می کنیم و آن را در متغیر "RET" ذخیره می کنیم. این عملکرد اساساً مقدار فعلی را از مقدار قبلی کم می کند. در مرحله بعد ، ما در حال انتقال یک حلقه برای متغیر "RET" هستیم تا سود حاصل از ضررها را تشخیص دهیم و آن مقادیر را به متغیر مربوطه ("بالا" یا "پایین") اضافه کنیم.

سپس ، ما با استفاده از عملکرد "EWM" ارائه شده توسط بسته Pandas ، میانگین های متحرک نمایی را برای "بالا" و "پایین" محاسبه می کنیم و آنها را به ترتیب در متغیر "up_ewm" و "down_ewm" ذخیره می کنیم. با استفاده از این EMA های محاسبه شده ، ما با پیروی از فرمولی که قبلاً در مورد آن بحث کردیم ، قدرت نسبی را تعیین می کنیم و آن را در متغیر "RS" ذخیره می کنیم.

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

مرحله 5: ایجاد استراتژی معاملاتی:

در این مرحله، می‌خواهیم استراتژی معاملاتی ترکیبی Average Directional Index و Relative Strength Index را در پایتون پیاده‌سازی کنیم.

پیاده سازی پایتون:

توضیح کد: ابتدا، ما تابعی به نام "adx_rsi_strategy" تعریف می کنیم که قیمت سهام ("قیمت")، قرائت ADX ("adx")، خواندن +DI ("pdi")، خواند ن-DI ("ndi") را می گیرد. و خوانش شاخص قدرت نسبی ('rsi') به عنوان پارامتر.

در داخل تابع، ما در حال ایجاد سه لیست خالی (buy_price، sell_price و adx_rsi_signal) هستیم که در آن مقادیر هنگام ایجاد استراتژی معاملاتی اضافه می‌شوند.

پس از آن، استراتژی معاملاتی را از طریق یک حلقه for اجرا می کنیم. در داخل حلقه for، ما در حال عبور از شرایط خاصی هستیم و در صورت برآورده شدن شرایط، مقادیر مربوطه به لیست های خالی اضافه می شود. اگر شرط خرید سهام برآورده شود، قیمت خرید به لیست "buy_price" اضافه می شود و ارزش سیگنال به عنوان 1 که نشان دهنده خرید سهام است، اضافه می شود. به همین ترتیب، اگر شرط فروش سهام برآورده شود، قیمت فروش به لیست «قیمت_فروش» اضافه می‌شود و ارزش سیگنال به صور ت-1 که نشان دهنده فروش سهام است، اضافه می‌شود. در نهایت، ما لیست های اضافه شده با مقادیر را برمی گردانیم. سپس، تابع ایجاد شده را فراخوانی می کنیم و مقادیر را در متغیرهای مربوطه ذخیره می کنیم.

مرحله 6: ایجاد موقعیت ما

در این مرحله، می‌خواهیم فهرستی ایجاد کنیم که اگر سهام را در اختیار داریم، عدد 1 را نشان می‌دهد یا اگر سهام را در اختیار نداریم، عدد 0 را نشان می‌دهد.

پیاده سازی پایتون:

خروجی:

توضیح کد: ابتدا یک لیست خالی به نام موقعیت ایجاد می کنیم. ما در حال ارسال دو حلقه for هستیم، یکی این است که مقادیری را برای لیست "موقعیت" تولید کنیم تا فقط با طول لیست "سیگنال" مطابقت داشته باشد. حلقه for دیگر حلقه ای است که برای تولید مقادیر موقعیت واقعی استفاده می کنیم.

در داخل حلقه for دوم، ما در حال تکرار روی مقادیر لیست سیگنال هستیم و مقادیر لیست موقعیت در مورد اینکه کدام شرط برآورده می شود اضافه می شود. اگر سهام را نگه داریم، ارزش موقعیت 1 باقی می ماند یا اگر سهام را فروختیم یا مالک آن نباشیم، 0 باقی می ماند. در نهایت، ما در حال انجام برخی دستکاری‌های داده‌ای هستیم تا همه لیست‌های ایجاد شده را در یک دیتافریم ترکیب کنیم.

از خروجی که نشان داده شده است ، می بینیم که در چهار ردیف اول موقعیت ما در سهام 1 باقی مانده است (از آنجا که هیچ تغییری در سیگنال معاملاتی وجود ندارد) اما موقعیت ما به طور ناگهانی به 0 تبدیل شد زیرا وقتی سهام را فروختیمسیگنال معاملاتی نشان دهنده یک سیگنال خرید (-1) است. موقعیت ما تا زمانی که برخی از تغییرات در سیگنال معاملاتی رخ دهد ، -1 باقی خواهد ماند. اکنون زمان آن رسیده است که برخی از فرآیندهای پشتی را اجرا کنیم!

مرحله 7: پشتی

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

پیاده سازی پایتون:

خروجی:

توضیح کد: اول ، ما بازده سهام اپل را با استفاده از عملکرد "Diff" ارائه شده توسط بسته NUMPY محاسبه می کنیم و ما آن را به عنوان یک DataFrame در متغیر "AAPL_RET" ذخیره کرده ایم. در مرحله بعد ، ما برای محاسبه بازده هایی که از استراتژی معاملات RVI به دست آورده ایم ، یک حلقه را برای تکرار مقادیر متغیر "AAPL_RET" می گذرانیم ، و این مقادیر بازده به لیست ‘ADX_RSI_STRAGETY_RET اضافه می شود. در مرحله بعد ، ما لیست "adx_rsi_strategy_ret" را به یک dataframe تبدیل می کنیم و آن را در متغیر "adx_rsi_strategy_ret_df" ذخیره می کنیم.

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

در نهایت، ما در حال چاپ کل بازدهی هستیم که با سرمایه گذاری صد هزار دلاری در استراتژی معاملاتی خود به دست آورده ایم و مشخص می شود که در حدود ده سال و نیم به سود تقریبی یک میلیون و پانصد هزار دلار رسیده ایم. درصد سود 1531 درصدعالیه! اکنون، بیایید بازده خود را با بازده SPY ETF (یک ETF طراحی شده برای ردیابی شاخص بورس S& P 500) مقایسه کنیم.

مرحله 8: مقایسه ETF SPY

این مرحله اختیاری است، اما به شدت توصیه می‌شود، زیرا می‌توانیم از عملکرد استراتژی معاملاتی ما در برابر معیار (SPY ETF) ایده بگیریم. در این مرحله، داده‌های SPY ETF را با استفاده از تابع «get_historical_data» که ایجاد کرده‌ایم استخراج می‌کنیم و بازدهی را که از ETF SPY دریافت می‌کنیم با بازده استراتژی تجاری خود در اپل مقایسه می‌کنیم.

شاید مشاهده کرده باشید که در تمام مقالات معاملات الگوریتمی من، نتایج استراتژی را نه با خود شاخص بازار S& P 500 بلکه با SPY ETF مقایسه کرده ام و این به این دلیل است که اکثر ارائه دهندگان داده سهام (مانند Twelve Data) این کار را انجام نمی دهند. داده های شاخص S& P 500 را ارائه می دهد. بنابراین، من چاره ای جز رفتن با ETF SPY ندارم. اگر خوش شانس هستید که داده های شاخص بازار S& P 500 را دریافت کنید، توصیه می شود به جای هر ETF از آن برای مقایسه استفاده کنید.

پیاده سازی پایتون:

خروجی:

توضیح کد: کد استفاده شده در این مرحله تقریباً مشابه کد مورد استفاده در مرحله بک تست قبلی است، اما به جای سرمایه گذاری در اپل، با اجرای نکردن هیچ استراتژی معاملاتی در SPY ETF سرمایه گذاری می کنیم. از خروجی، می‌توانیم ببینیم که استراتژی معاملاتی ما 1247% از ETF SPY بهتر عمل کرده است. این عالی است!

افکار نهایی!

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

بیایید اکنون در مورد بهبودها صحبت کنیم. در این مقاله فضاهای زیادی برای بهبود وجود دارد، اما مهمترین جنبه ارزیابی استراتژی معاملاتی با معیارها است. این یک گام مهم است که باید قبل از بردن استراتژی به بازار دنیای واقعی انجام شود، زیرا به ما کمک می‌کند عملکرد را با وضوح بیشتری درک کنیم و بینشی را به ما ارائه می‌دهد که فراتر از نمایش سودآوری است.

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

حمایت مالی: داده های تاریخی EOD یکی از رهبران بازار مالی APIS است که طیف گسترده ای از API ها را اعم از موارد اساسی مانند داده های بازار پایان روز گرفته تا API های بسیار قابل تنظیم مانند API News Financial و API Screener Screener ارائه می دهد. تمام API های آنها به گونه ای طراحی شده اند که در طبیعت قابل استفاده آسان باشد تا مبتدیان بتوانند بدون هیچ گونه موانعی با آنها همکاری کنند. من شخصاً از API های داده های تاریخی EOD استفاده کرده ام و از تجربه من ، API آنها برای آماتورها و همچنین متخصصان مناسب است و برای پروژه های جانبی و ساخت برنامه های سطح سازمانی استفاده می شود.

برچسب ها

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.