Backtrader: نشانگر جریان پول Chaikin

ساخت وبلاگ

C Haikin M Oney F Low (CMF) یک نشانگر مبتنی بر حجم محبوب است. این توسط مارک چایکین ساخته شده است که از سال 1965 تحلیلگر ، معامله گر و کارآفرین در این صنعت بوده است. علاوه بر این ، وی از دهه 1980 در حال توسعه شاخص های تجارت است که در طی آن زمان او روی برخی از شاخص های مشهور کار می کرد (با این یکی از آنها یکی از آنهاست). اخیراً وی شرکت Chaikin Analytics را تأسیس کرده است که ابزارها و نرم افزارهای تحلیلی را ارائه می دهد.

نشانگر CMF مارک در TradingView به عنوان یک شاخص منبع باز در دسترس است. این بدان معنی است که ما می توانیم به آن کد نگاهی بیندازیم و از آن برای تهیه پورت برای Backtrader استفاده کنیم. با این حال ، قبل از ورود به کد ، بیایید نگاهی گذرا به نظریه پشت این شاخص و برخی از روشهای مشترک برای تفسیر آن بیندازیم.

جریان پول Chaikin

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

این شاخص دارای 3 مؤلفه اصلی است:

  • Multiplier: این مؤلفه اصلی است که به شاخص اجازه می دهد تا نوسان کند. محاسبه ای انجام می شود که منجر به یک مقدار منفی یا مثبت می شود که می تواند به عنوان ضرب استفاده شود. در اصل ، اگر مقدار نزدیک به اوج روز نزدیک باشد ، محاسبه مثبت خواهد بود. برعکس ، اگر مقدار نزدیک به پایین روز نزدیک باشد ، منفی خواهد بود.
  • حجم تنظیم شده: سپس حجم را به یک مقدار مثبت یا منفی تنظیم می کنیم (حجم * ضرب)
  • مقدار CMF: سرانجام ما یک دوره X از حجم تنظیم شده را می گیریم و آن را با همان دوره از حجم کل تقسیم می کنیم.

فرمول و محاسبه واقعی بعداً در کد مشاهده می شود اما برای کسانی که ترجیح می دهند کلاه ریاضی خود را بر روی آن قرار دهید ، در اینجا پیوندی به فرمول ریاضی وجود دارد: https://en. wikipedia. org/wiki/chaikin_analytics#chaikin_money_flowlow

با استفاده از جریان پول Chaikin

با توجه به اینکه این یک شاخص نوسان است ، ما در هنگام تفسیر مظنونین معمول را داریم. این موجود:

  • خط صفر: اگر شاخص بالاتر از صفر باشد ، نشان می دهد که خرید در بازار وجود دارد. اگر در زیر باشد ، ما یک تعصب فروش داریم.
  • افراط و تفریط: اگر مقدار CMF به سطح شدید برسد ، می تواند نشان دهنده وارونگی روند باشد. با این حال ، ما باید در تعریف شدید مراقب باشیم. با توجه به نحوه محاسبه شاخص ، هرچه مدت زمان نگاه شما استفاده می شود ، احتمال رسیدن به سطح شدید کمتری دارد. به عنوان مثال ، با نگاهی به مدت زمان 20 ، به 20 بسته متوالی نیاز دارید که در آن بالا با مقدار نزدیک برابر باشد تا به 1 برسد.

کد

خود . داده ها . ad = bt. if (bt. یا (bt. و (c == h ، c == l) ، h == l) ، 0 ، ((2 * c - l - h) / (h - l)) * v)

خود . خطوطmoney_flow = bt. شاخص ها . Sumn (داده های خود. AD ، دوره = خود. ص لن) / bt. شاخص ها . sumn (خود. داده ها. حجم ، دوره = خود. ص لن)

تفسیر کد

تمام اقدامات این شاخص در روش __init __ () موجود است. برای هرکسی که دانش اساسی در مورد Backtrader و Python داشته باشد ، اکثریت کد در __init () __ باید خود توضیح دهند. با این حال ، اگر شما یک مبتدی کامل هستید ، نترسید! ما در اینجا آموزش هایی را شروع کرده ایم:

دو حوزه که قبلاً تحت پوشش قرار نگرفته اند و ارزش اظهار نظر در مورد آنها را دارند ، فرهنگ لغت طرح ها و خط self. data. ad هستند.

طرح

فرهنگ لغت نقشه ها به ما امکان می دهد تا ظاهر و احساس خط ترسیم شده خود را مشخص کنیم. هر خط فرهنگ لغت خود را در درون خود دارد. اینگونه است که می توانیم پارامترهای مختلف را برای خطوط مختلف مشخص کنیم. Backtrader از Matplotlib برای ترسیم استفاده می کند و به همین ترتیب ما گاهی اوقات باید مستندات Matplotlib را ارجاع دهیم تا ببینیم چه گزینه ها/پارامترهایی برای ما در دسترس است. مستندات رسمی ذکر ویژه ای را ذکر می کند.

بیشتر گزینه های مشخص شده در نقشه ها قرار است هنگام ترسیم مستقیماً به Matplotlib منتقل شوند.

به عنوان مثال ، در اسناد رسمی Backtrader ما قطعه کد را داریم:

با این حال ، اگر این موضوع را مشاهده کرده اید و سعی می کنید یک پارامتر عرض را به جای نمودار نوار (با تغییر _method) در یک نمودار خط تنظیم کنید ، با مشکلات روبرو خواهید شد. بنابراین همیشه ایده خوبی است که اسناد matplot lib را بررسی کنید.

bt. if () ، bt. and () و bt. or ()

در مرحله بعد ، ما به خط طولانی Self. data. ad می رویم. اگرچه در ابتدا کاملاً پیچیده به نظر می رسد ، اما می توانیم آن را به زبان انگلیسی ساده تجزیه کنیم:

self. data. ad = bt. if (bt. or (bt. and (c == h ، c == l) ، h == l) ، 0 ، ((2*c-l-h)/(h-l))*v)

اگر Close == High و Close == Low یا High == Low ، مقدار = 0 در غیر این صورت ، محاسبه ضرب را انجام دهید.

دلیل اینکه می تواند کمی دلهره آور به نظر برسد این است که ما نیاز به لانه کردن bt. and () / bt. or () در داخل عملکرد bt. if () داریم. ما این کار را انجام می دهیم زیرا نمی توانیم هنگام ایجاد خطوط داده جدید در طول __init__ ، از Pythons خود استفاده کنیم و یا اپراتورها. این یک محدودیت فنی است و بنابراین ، bt. if () و یک سری از اپراتورهای دیگر به عنوان راه حل ایجاد شده اند. برای اطلاعات بیشتر ، مستندات را در اینجا ببینید:

در نمودار

در آخر ، بیایید نشانگر را در برخی از داده ها اجرا کنیم تا ببینیم چگونه به نظر می رسد!

Chaikin Money Flow indicator shown on the chart

این پست را مفید می دانید؟

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

Backtest Rookies با ناشر شجاع ثبت شده است!

کاربران شجاع می توانند نکته ای را برای ما رها کنند.

از طرف دیگر ، با استفاده از این لینک ارجاع به شجاع از ما پشتیبانی کنید و ما خفاش دریافت خواهیم کرد!

لینک ارجاع

از محتوا و فکر مشترک شدن در TradingView لذت می برید؟قبل از ثبت نام از این سایت با کلیک روی پیوند ارجاع پشتیبانی کنید!

این را به اشتراک بگذارید:

مربوط

3 پاسخ

با تشکر از مقاله شما ،

با این حال ، هنگامی که من سعی می کنم با محاسبه اکسل همان را بررسی کنم اشتباه است.

به من اطلاع دهید که چگونه می توانم اکسل خود را برای شما ارسال کنم.

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

1. ضرب جریان پول = [(نزدیک - کم) - (زیاد - نزدیک)] /(بالا - پایین)

2. حجم جریان پول = میزان جریان پول چند برابر x حجم برای دوره

3. 20 دوره CMF = 20 دوره دوره جریان پول حجم جریان / 20 دوره دوره حجم

سلام آنیل ، ممنون که نگاهی عمیق به کد انداختید. همیشه خوب است که افراد موضوعات بالقوه را برجسته کنند.

با این حال ، من نتایج را دوبار بررسی کرده ام و می توانم تأیید کنم که صحیح است. وقتی درست می گویم ، منظورم این است که این یک بندر وفادار از شاخص TradingView است.

لطفا این تصویر را ببینیدمن برخی از چاپ های اشکال زدایی را اضافه کرده ام و مقادیر شاخص را با TradingView مقایسه کرده ام.

سلام ، ممنون از کد بسیار راهنما. این با مجموعه داده پیش فرض شما کار کرده است ، اما وقتی سعی کردم به داده های خودم اعمال کنم ، این خطا را کردم: Traceback (آخرین تماس آخرین): پرونده "D: /python/advisor-bitcoin/test/test. py" ، خط133 ، در Cerebro. run () پرونده "C: Users Duyvi AppData Local برنامه ها Python Python37 Lib Site-Packages Backtrader cerebrro. py" ، خط 1127 ، در Run Runstrat = Self. runstrategesies(iterstrat) پرونده "c: user duyvi appdata local برنامه ها python python37 site-packages backtrader cerebro. py" ، خط 1293 ، در runstrategies self. _runononce (runstrats) پرونده "پرونده" c: c: c: c: c: c: c: c: c: c: c: c: کاربران duyvi appdata local برنامه ها python python37 lib site-packages backtrader cerebro. py "، خط 1652 ، در _runonce strat. _once () پرونده" C: Users duyvi appdata local برنامه ها python python37 lib site-packages backtrader lineiterator. py "، خط 297 ، در _once indentator. _once () پرونده" c: user duyvi appdata local برنامه ها python python python37 lib site-packages backtrader lineiterator. py "، خط 297 ، در _once indentator. _once () پرونده" c: user duyvi appdata local برنامه ها python python37 lib site-packages backtrader linebuffer. py "، خط 631 ، in _once self. once (self. _minperiod ، self. buflen ()) پرونده" c: duyvi appdata local برنامه های محلی برنامه python python37 lib site-packages backtrader linebuffer. py "، خط 755 ، در یک بار self. _once_op (شروع ، پایان) پرونده" c: duyvi appdata local برنامه ها python python37 lib site-packages backtrader linebuffer. py "، خط 772 ، در _once_op dst [i] = op (srca [i] ، srcb [i]) ZerodivisionError: تقسیم شناور توسط صفر

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

برچسب : نویسنده : بهاءالدین خرمشاهی بازدید : <-PostHit-> تاريخ : يکشنبه 21 اسفند 1401 ساعت: 19:03