استراتژی متقاطع Aroon Backtest در Elasticsearch

  • 2022-03-3

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

مشابه RSI و تصادفی ، نشانگر آرون نیز نوسان ساز است. مقدار آن بین 0 تا 100 است. با این حال ، مقدار آن به طور مستقیم به قیمت بستگی ندارد. در عوض ، محاسبه براساس فاصله حاصل از جدیدترین قیمت بالا و جدیدترین قیمت پایین است. نوسان قیمت های بالا و پایین به نوعی داده تبدیل می شود ، یعنی تفاوت بین دو مسافت عادی. Aroonup به عنوان مسافت از بالاترین قیمت در دوره های N تعریف شده است. Aroondown به عنوان مسافت از کمترین قیمت در دوره های N تعریف شده است. معادله را می توان به شرح زیر بازنویسی کرد ، جایی که MMAXP N+1،1 و MMINP N+1،1 تعداد دوره ها از حداکثر قیمت و حداقل قیمت در پنجره در حال حرکت N+1 هستند. مطابق با عملکرد حرکت Elasticsearch ، باید داده های 1 را به سمت راست تغییر دهد تا داده های فعلی را درج کند. معمولاً 25 دوره برای دوره n استفاده می شود.

نوسان ساز آرون به عنوان تفاوت بین این دو مسافت عادی تعریف شده است.

استراتژی متقاطع آرون را می توان به عنوان انتشار سیگنال خرید در هنگام تغییر Aroonos از منفی به صفر یا مثبت تعریف کرد زیرا این نشان دهنده یک کراس اوور صعودی است. می توان آن را به عنوان Aroonup که از بالای Aroondown عبور می کند ، تعبیر کرد. هنگامی که aroonos از مثبت به صفر یا منفی تغییر می کند ، سیگنال فروش را ساطع می کند زیرا این نشان دهنده یک متقاطع نزولی است. برای مقادیر دیگر ، صبور باشید و منتظر سیگنال باشید. استفاده از نمودارها برای مشاهده تغییرات در مقادیر بسیار ساده تر است. در این مقاله ، ما سعی می کنیم از صندوق های مبادله ای بدون کمیسیون (ETFS) استفاده کنیم و به عنوان یک ابزار تجزیه و تحلیل بر روی Elasticsearch تمرکز کنیم. مثال زیر به طور تصادفی "ETF بین المللی بین المللی وفاداری" را انتخاب می کند. نماد تیک آن FDEV است. 10 ETF دیگر به طور تصادفی انتخاب می شوند و نتایج نهایی بعداً نشان داده می شود. داده ها از محدوده زمانی بین 2021-02-01 و 2021-05-31 ارائه شده توسط IEX ، مبادله سرمایه گذاران انتخاب شده است. در نمودار زیر ، خط Aroonup و خط Aroondown همراه با قیمت بسته شدن روزانه ترسیم می شوند. در منحنی قیمت روزانه ، قیمت ها با سیگنال های فروش به رنگ قرمز مشخص می شوند و قیمت ها با سیگنال های خرید به رنگ آبی مشخص می شوند.

نمودار زیر اسیلاتور آروون با قیمت بسته شدن روزانه.

در اینجا ، ما یک استراتژی متقاطع ساده آررون را ارائه می دهیم و از Elasticsearch برای نشان دادن جزئیات اجرای استفاده می کنیم.

◆ با فرض اینکه محدود به خرید و نگه داشتن 1 سهم در یک زمان محدود شده است ، تا زمانی که سهم نگهدارنده به فروش نرسد ، هیچ معامله ای رخ نمی دهد.◆ هنگام عبور از Aroonup بالاتر از Aroondown ، 1 سهم را بخرید.◆ 1 سهم را بفروشید وقتی Aroondown از زیر Aroonup عبور می کند.◆ در پایان دوره آزمایش ، یک سهم نگهدارنده با قیمت فعلی کاهش می یابد.

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

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

برای جمع آوری اسناد با نماد FDEV و تاریخ بین 2021-02-01 و 2021-05-31 از یک پرس و جو "BOOL" با یک بند "باید" استفاده کنید. با توجه به محاسبه 25 دوره برای پنجره در حال حرکت ، داده های اضافی برای 1. 5 ماه تنظیم می شود (از 12-12-1520 تا 2021-01-31).

ارزش نزدیک صندوق را استخراج کنید

از یک جمع "date_histogram" به نام backtest_aroons استفاده کنید ، با پارامتر "فیلد" به عنوان "تاریخ" و پارامتر "فاصله" به عنوان "1D" برای استخراج قیمت صندوق هر روز. پس از آن ، یک جمع "سطل_ لیست" ، به نام SD Daily ، به دنبال انتخاب سطل با تعداد اسناد خود بیشتر از صفر برای فیلتر کردن سطل های خالی (روزهای غیر تدارک) انتخاب می شود.

قیمت بسته شدن روزانه را بازیابی کنید

تاریخ سطل را استخراج کنید

به دلیل داده های اضافی ، عملیات بعدی باید بعداً بخش خارج از حد را فیلتر کنند. جمع "حداقل" به نام "Datest" به دست آوردن تاریخ سطل است. در سرور Elasticsearch ، قسمت Date در زمان EPOCH ذخیره می شود. واحد زمانی میلی ثانیه است و منطقه زمانی UTC است.

دو تجمع "Moving_FN" به نام MMAXP و MMINP استفاده می شود ، با پارامتر "Buckets_Path" به عنوان روزانه و پنجره پارامتر به عنوان 26 (برای 25 دوره لازم است). پارامتر "Shift" روی 1 تنظیم شده است تا جدیدترین داده ها را شامل شود."MMAXP" از یک اسکریپت برای حلقه در پنجره در حال حرکت استفاده می کند تا فاصله بین روز معاملاتی فعلی و روز را با حداکثر قیمت بسته شدن روزانه در پنجره پیدا کند."MMINP" می تواند به همان روش انجام شود.

Aroonup ، Aroondown و Aroonoscillator را محاسبه کنید

از سه جمع "Bucket_script" استفاده می شود ، به نام Aroonup ، Aroondown و Aroonos."Arronup" از پارامتر "Buckets_Path" به عنوان MMAXP استفاده می کند و اسکریپت را مطابق معادله می نویسد. Aroondown می تواند به همان روش انجام شود. Aroonos تفاوت بین Aroonup و Aroondown است.

نوع متقاطع aroonoscillator را شناسایی کنید

الف) برای تعیین نوع متقاطع به داده های روز معاملاتی قبلی لازم است. با استفاده از پارامتر "Buckets_Path" ، از جمع "Moving_FN" با نام "Pre_aroonos" استفاده کنید ، مقدار "Aroonos" را مشخص می کند و پنجره پارامتر روی 1 تنظیم می شود.

ب) برای تعیین نوع متقاطع چه از خط aroonup در زیر یا بالاتر از خط "Aroondown" ، معیارهای زیر را برای جمع آوری "Aroonos_type" بررسی کنید. اگر این یک سیگنال فروش است ، "aroonos_type" را روی 1 تنظیم کنید. اگر این یک سیگنال خرید است ، آن را رو ی-1 تنظیم کنید. در غیر این صورت ، آن را روی 0 تنظیم کنید.

◆ aroonup در روز معاملاتی بالاتر از آرونداون عبور می کند

params. aroonos == 0 و params. pre_aroonos< 0

◆ aroonup در روز معاملاتی از زیر آرووند تاون عبور می کند

params.AroonOS == 0 and params.PRE_AroonOS > 0

◆ aroonup از زیر آرووند تاون بین دو روز معاملاتی عبور می کند

params.PRE_AroonOS >0 && params. aroonos< 0

◆ Aroonup از دو روز معاملاتی بالاتر از Aroondown عبور می کند

اسناد اضافی را برای خروجی فیلتر کنید

برای انتخاب سطل های صحیح از یک جمع "bucket_selector" به نام S_Date ، با پارامتر "Buckets_Path" استفاده کنید. معیارهای انتخاب آن سطل هایی هستند که تاریخ آن را در تاریخ یا بعد از 2021-02-01 (زمان دوره 1612137600000 در میلی ثانیه) دارند.

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

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

◆ دو پارامتر خط فرمان را بخوانید. یکی برای نماد انتخاب شده انتخاب شده است ، و دیگری برای نام پرونده حاوی استراتژی معاملاتی که در Elasticsearch REST API Body با استفاده از فرمت JSON نوشته شده است.◆ داده ها را از سرور Elasticsearch دریافت کنید.◆ داده های پاسخ را تجزیه کنید و سیگنال خرید و فروش را اصلاح کنید.◆ آمار Backtest را گزارش دهید.

عملکرد اصلی به شرح زیر نشان داده شده است:

در این مقاله ، فقط بخش کد برای پالایش سیگنال خرید و فروش نشان داده شده است. خوانندگان می توانند بیشتر به پروژه منبع باز در GitHub backtest_aroon مراجعه کنند. به منظور اطمینان از خرید و نگهداری یک سهم در یک زمان ، و قبل از فروش سهام نگهدارنده هیچ معامله ای رخ نمی دهد ، ما از متغیر Boolean "نگه دارید" برای اطمینان از این که معامله شرایط زیر را برآورده می کند ، استفاده می کنیم.◆ سیگنال خرید (مقدار برابر ب ا-1) وقتی که پرچم نگهدارنده کاذب است ، افتخار می شود ◆ یک سیگنال فروش (مقدار برابر با 1) در صورت صحیح بودن پرچم نگهدارنده افتخار می شود

عملکرد parse_data () در زیر نشان داده شده است. سرانجام ، آرایه معامله حاوی سیگنال معتبر خواهد بود.

برنامه پایتون آماری در مورد استراتژی معاملاتی از جمله "پیروزی" و "از دست دادن" کل معامله خرید و فروش ارائه می دهد. نتیجه زیر پس از اجرای FDEV است.

در جدول زیر تمام داده های آماری 11 ETF به طور تصادفی انتخاب شده با استفاده از استراتژی معاملات متقاطع آروون از 2021-02-01 تا 2021-05-31 جمع آوری شده است. نتایج نشان می دهد که عملکرد به همان اندازه که انتظار می رود خوب نیست زیرا جدیدتر از دو شاخص دیگر است. با این حال ، یک شاخص واحد برای تجارت بر اساس توصیه های اکثر معامله گران پیشنهاد نمی شود.

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

نکات: I. با تشکر از IEX (Svestors Exchange) که داده های ETF را ارائه می دهد و GitHub ذخیره سازی پروژه منبع باز را ارائه می دهد. II. این مقاله بر اساس یک تفکر فنی است و هیچ توصیه سرمایه گذاری ندارد. خوانندگان باید هنگام استفاده از آن مسئولیت های خود را بر عهده بگیرند. III. ممکن است هنوز در مقاله اشتباهاتی وجود داشته باشد و از خوانندگان می خواهم که من را اصلاح کنند. IV. آن دسته از خوانندگانی که علاقه مند هستند می توانند برای مهارت های اساسی Elasticsearch به کتاب تألیف نویسنده مراجعه کنند.«Advanced Elasticsearch 7. 0»، آگوست 2019، Packt، ISBN: 9781789957754.

برچسب ها

ثبت دیدگاه

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