با استفاده از شاخص ها

  • 2021-12-12

از شاخص ها می توان در دو مکان از سکو استفاده کرد:

در داخل شاخص های دیگر

شاخص ها در عمل

شاخص ها همیشه در طول __init__ در استراتژی فوری می شوند

مقادیر نشانگر (یا مقادیر حاصل از آن) در مرحله بعدی استفاده و بررسی می شود

یک بدیهیات مهم برای در نظر گرفتن وجود دارد:

  • هر شاخص (یا مقدار آن مشتق شده) اعلام شده در طول __init__ قبل از فراخوانی بعدی محاسبه می شود.

بیایید به دنبال اختلافات حالت عمل باشیم.

__init__ در مقابل بعدی

همه چیز به شرح زیر است:

هر عملیاتی که شامل اشیاء خطوط در طول __init__ باشد ، یک شیء دیگر ایجاد می کند

هر عملیاتی که شامل اشیاء خطوط در طول بعدی باشد ، انواع معمولی پایتون مانند شناورها و بول ها را بازده می دهد.

در طول __init__

نمونه ای از عملیات در طول __init__:

متغیر HILO_DIFF مرجع یک شیء خطوطی است که قبل از تماس بعدی از قبل محاسبه می شود و با استفاده از نماد آرایه استاندارد قابل دسترسی است []

بدیهی است که برای هر نوار داده ها تفاوت بین بالا و پایین را دارد.

این همچنین هنگام مخلوط کردن خطوط ساده (مانند موارد موجود در خود تغذیه داده) و موارد پیچیده مانند شاخص ها کار می کند:

اکنون close_sma_diff حاوی یک شیء خط است.

با استفاده از اپراتورهای منطقی:

اکنون شیء خطوط تولید شده حاوی مجموعه ای از بول ها خواهد بود.

در طول بعدی

مثال یک عملیات (اپراتور منطقی):

با استفاده از آرایه معادل (نماد مبتنی بر شاخص 0):

در این حالت CLOSE_OVER_SMA یک بولن را به دست می آورد که نتیجه مقایسه دو مقدار نقطه شناور است ، آنهایی که توسط اپراتور [0] که به self. data. close و self. sma اعمال شده است ، بازگردانده می شود.

__init__ vs Next چرا

ساده سازی منطق (و با سهولت استفاده) کلید اصلی است. محاسبات و بیشتر منطق مرتبط را می توان در طول __init__ نگه داشتن منطق عملیاتی واقعی در طی بعدی اعلام کرد.

در واقع یک مزیت جانبی وجود دارد: سرعت (به دلیل محاسبه پیش بینی شده در ابتدا)

یک مثال کامل که سیگنال خرید را در طول __init__ ایجاد می کند:

پایتون و اپراتور نمی توانند نادیده بگیرند و این سکو را وادار به تعریف خود و. همین مورد در مورد سازه های دیگر مانند یا و در صورتی نیز صدق می کند

باید بدیهی باشد که رویکرد "اعلانی" در طول __init__ نفخ بعدی (جایی که کار استراتژی واقعی اتفاق می افتد) را به حداقل می رساند.

(فراموش نکنید که یک عامل سرعت نیز وجود دارد)

هنگامی که منطق واقعاً پیچیده می شود و چندین عمل را درگیر می کند ، معمولاً بسیار بهتر است که آن را در داخل یک شاخص قرار دهید.

برخی از یادداشت ها

در مثال بالا دو چیز وجود دارد که در مقایسه با سایر سیستم عامل ها در Backtrader ساده شده اند:

شاخص های اعلام شده نه پارامتر والدین (مانند استراتژی ایجاد شده در آنها ایجاد می شوند و نه از روش/عملکرد "ثبت" نامیده می شوند.

و علیرغم آن ، این استراتژی محاسبه شاخص ها و هر خط خطی را که به دلیل عملیات تولید می شود ، لگد می زند (مانند SMA - EMA)

ExponentialMovinga Anyvening بدون خود در حال فوری است.

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

توطئه نشانگر

اول و مهمتر:

شاخص های اعلام شده به طور خودکار ترسیم می شوند (اگر cerebro. plot خوانده شود)

lines objects from operations DO NOT GET plotted (like close_over_sma = self.data.close >self. sma)

یک LinePlotterIndicator کمکی وجود دارد که در صورت تمایل با رویکرد زیر چنین عملیاتی را ترسیم می کند:

پارامتر نام نام را به خطی که توسط این نشانگر برگزار می شود ، می دهد.

توطئه کنترل

در طول تهیه یک شاخص می توان اعلامیه Plotinfo را اضافه کرد. این می تواند یک تاپ از Tuples (2 عنصر) ، یک DICT یا یک سفارش دهنده باشد. به نظر می رسد:

به این مقدار می توان بعداً (و در صورت لزوم) به این مقدار دسترسی پیدا کرد (در صورت لزوم):

مقدار حتی می تواند در حین لحظه تنظیم شود:

subplot = true به (در پشت صحنه) متغیر عضو متغیر plotinfo برای شاخص منتقل می شود.

Plotinfo پارامترهای زیر را برای کنترل رفتار ترسیم ارائه می دهد:

طرح (پیش فرض: درست)

این که شاخص باید ترسیم شود یا نه

Subplot (پیش فرض: درست)

آیا می توان نشانگر را در یک پنجره متفاوت ترسیم کرد. برای شاخص هایی مانند میانگین حرکت ، پیش فرض به FALSE تغییر می یابد

PlotName را برای نمایش در طرح تنظیم می کند. مقدار خالی به این معنی است که از نام متعارف شاخص (کلاس . __ نام __) استفاده می شود. این محدودیت هایی دارد زیرا شناسه های پایتون نمی توانند به عنوان مثال اپراتورهای حسابی از آن استفاده کنند.

شاخصی مانند DI+ به شرح زیر اعلام می شود:

ساخت طرح "بهتر"

Plotabove (پیش فرض: نادرست)

شاخص ها معمولاً در زیر داده هایی که روی آنها کار کرده اند ، ترسیم می شوند (آنهایی که دارای زیرمجموعه = صحیح هستند). تنظیم این مورد در True باعث می شود که نشانگر بالاتر از داده ها ترسیم شود.

PlinelLabels (پیش فرض: نادرست)

منظور از "شاخص ها" در "شاخص ها" است. اگر کسی از Simplemovingaine از RSI محاسبه کند ، نقشه معمولاً نام "SimplemovingaVery" را برای خط ترسیم شده مربوطه نشان می دهد. این نام "شاخص" است و خط واقعی ترسیم نشده است.

این رفتار پیش فرض معقول است زیرا کاربر معمولاً می خواهد ببیند که یک SimpleMovingaine با استفاده از RSI ایجاد شده است.

اگر مقدار روی درست تنظیم شده باشد ، نام واقعی خط در داخل Simplemovinga Avevery استفاده خواهد شد.

Plotymargin (پیش فرض: 0. 0)

Amount of margin to leave at the top and bottom of the indicator ( 0.15 ->15 ٪). گاهی

برای کنترل کنه های مقیاس y کشیده استفاده می شود

اگر لیست خالی منتقل شود ، "y کنه" به طور خودکار محاسبه می شود. برای چیزی شبیه به تصادفی ممکن است منطقی باشد که این استانداردها را بر روی استانداردهای شناخته شده Idustry مانند: [20. 0 ، 50. 0 ، 80. 0] تنظیم کنید.

برخی از شاخص ها پارامترهایی مانند فوقانی و پایین باند را ارائه می دهند که در واقع برای دستکاری کنه های Y استفاده می شوند

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

اگر لیست خالی منتقل شود ، هیچ خط افقی ترسیم نمی شود.

برای چیزی شبیه به یک تصادفی ممکن است منطقی باشد که خطوطی را برای استانداردهای شناخته شده Idustry مانند: [20. 0 ، 80. 0] ترسیم کنید

برخی از شاخص ها پارامترهایی مانند فوقانی و پایین باند را ارائه می دهند که در واقع برای دستکاری خطوط افقی استفاده می شوند

برای کنترل همزمان با استفاده از یک پارامتر واحد برای کنترل همزمان استفاده می شود.

plotforce (پیش فرض: نادرست)

اگر به دلایلی اعتقاد دارید که یک شاخص باید در حال ترسیم باشد و نقشه برداری نمی شود ... این را به عنوان آخرین راه حل تنظیم کنید.

ثبت دیدگاه

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