این مقاله توضیح می دهد که چگونه برنامه نویسی شی گرا را می توان برای ایجاد چند بازه زمانی و پانل های چند ارز برای متاتریدر 5 استفاده می شود. هدف اصلی ساخت یک پنل جهانی است که می تواند برای نمایش انواع مختلف داده ها مانند قیمت ها و تغییرات قیمت و مقادیر نشانگر یا شرایط خرید/فروش سفارشی بدون نیاز به تغییر کد خود پنل مورد استفاده قرار گیرد. در این روش بسیار کمی برنامه نویسی لازم برای سفارشی کردن پانل به هیچ وجه ما نیاز خواهد بود.
راه حلی که توصیف خواهم کرد در دو حالت کار می کند:
- حالت چند بازه زمانی-اجازه می دهد تا برای دیدن محتویات جدول محاسبه شده بر روی نماد فعلی, اما در زمانبندی های مختلف;
- حالت چند ارز-اجازه می دهد تا برای دیدن محتویات جدول محاسبه شده در بازه زمانی فعلی, اما در کاراکتر های مختلف.
تصاویر زیر پانل را در این دو حالت نشان می دهد.
اولین مورد در حالت چند بازه زمانی کار می کند و داده های زیر را نمایش می دهد:
- قیمت فعلی;
- تغییر قیمت نوار فعلی;
- تغییر قیمت نوار فعلی به عنوان یک درصد;
- تغییر قیمت نوار فعلی به عنوان یک فلش (بالا / پایین);
- مقدار شاخص(14);
- مقدار شاخص(10);
- Custom condition: SMA(20) >قیمت فعلی.
شکل 1. حالت چند بازه زمانی
دوم در حالت چند ارز کار می کند و نشان می دهد:
- قیمت فعلی;
- تغییر قیمت نوار فعلی;
- تغییر قیمت نوار فعلی به عنوان یک درصد;
- تغییر قیمت نوار فعلی به عنوان یک پیکان;
- مقدار شاخص(10);
- مقدار شاخص(14);
- Custom condition: SMA(20) >قیمت فعلی.
شکل 2. حالت چند ارز
1. پیادهسازی
نمودار کلاس زیر طراحی پیاده سازی پانل را توصیف می کند.
شکل 3. نمودار کلاس پانل
اجازه دهید عناصر نمودار را توصیف کنم:
- تابلو فرش . کلاس هسته پانل. وظیفه ترسیم پانل و مدیریت اجزای خود را بر عهده دارد.
- جاسوس. این شاخصی است که وظیفه جاسوسی بر روی نمادهای دیگر (ابزارها) را بر عهده دارد. هر عامل ایجاد شده و به یک نماد متفاوت ارسال می شود. عامل هنگام ورود یک تیک جدید به نمودار نماد به یک رویداد محاسبه واکنش نشان می دهد و نمودار را ارسال می کند رویداد _ رویداد سفارشی برای اطلاع دادن به شی قابل تنظیم که باید به روز شود. کل ایده پشت این رویکرد بر اساس مقاله "اجرای حالت چند ارزی در متاتریدر 5"است. شما می توانید تمام مشخصات فنی وجود دارد.
- کلاغ . کلاس پایه برای همه شاخص ها و شرایط مورد استفاده برای ایجاد پانل. با گسترش این کلاس می توان تمام اجزای لازم پانل را ایجاد کرد.
- حراجی . کلاس ساده گسترش کلاغ, استفاده شده است که برای نمایش قیمت پیشنهاد فعلی.
- تغییر شکل . کلاس گسترش کلاغ, مورد استفاده برای نمایش تغییر قیمت نوار فعلی است. این می تواند تغییرات قیمت نشان می دهد, درصد تغییرات و یا فلش.
- چروک . کلاس گسترش کلاغ, مورد استفاده برای نمایش مقدار شاخص نرخ بهره فعلی.
- CPriceMARow . Class extending CRow, showing a custom condition: SMA >قیمت فعلی.
کلاسهای سیبل و کلاغ و همچنین نشانگر جاسوسی قسمتهای اصلی پانل هستند. از جمله این موارد می توان به موارد زیر اشاره کرد. کلاس کلاغ به گونه ای طراحی شده است که توسط بسیاری از کلاس های جدید تمدید می شود تا به نتیجه دلخواه برسید. چهار کلاس مشتق شده فقط نمونه های ساده ای از کارهایی هستند که می توان انجام داد و چگونه.
2. جاسوسی
ما با شاخص جاسوسی شروع خواهیم کرد. این است که تنها در حالت چند ارز استفاده می شود و لازم است به درستی به روز رسانی پانل, زمانی که یک تیک جدید می رسد در نمودار دیگر. من در مورد این مفهوم زیاد توضیح نمی دهم. در مقاله "اجرای حالت چند ارزی در متاتریدر 5"شرح داده شده است.
شاخص جاسوسی قابل اجرا بر روی نمودار نماد مشخص شده و دو رویداد می فرستد: رویداد اولیه و رویداد تیک جدید. هر دو رویداد از نوع نمودار _ سفارشی هستند. برای رسیدگی به این رویدادها باید از یک استفاده کنیمچارت رویداد(. ) کنترل کننده (بعدا در مقاله نشان داده خواهد شد).
بیایید نگاهی به کد جاسوسی داشته باشیم:
این کاملا ساده است. تنها کاری که انجام می دهد دریافت تیک های جدید و ارسال چارت استرویدادهای سفارشی.
3. سیتابل
سیبل کلاس اصلی پانل است. این اطلاعات مربوط به تنظیمات پانل را ذخیره می کند و اجزای خود را مدیریت می کند. این به روز رسانی (دوباره ترسیم) پانل, در صورت لزوم.
بیایید به اعلامیه سیبل نگاه کنیم:
همانطور که می بینید, تمام اجزای پانل (ردیف) به عنوان یک لیست از اشاره گر کلاغ ذخیره می شود, بنابراین هر مولفه که ما می خواهیم برای اضافه کردن به پانل به گسترش کلاس کلاغ. کلاغ می تواند به عنوان یک قرارداد بین پانل و اجزای خود دیده می شود. سیتابل هیچ کدی برای محاسبه سلول های خود ندارد. این وظیفه کلاسهای گسترش کلاغ است. سیبل فقط ساختاری برای نگه داشتن اجزای کلاغ و ترسیم مجدد در صورت لزوم است.
بیایید از طریق روش های سیلندر برویم. کلاس دارای دو سازنده است. اولین مورد برای حالت چند بازه زمانی استفاده می شود و بسیار ساده است. ما فقط باید مجموعه ای از فریم های زمانی را که می خواهیم نمایش دهیم عرضه کنیم.
سازنده دوم برای حالت چند ارز استفاده می شود و مجموعه ای از نمادها (ابزار) را می گیرد. این یکی جاسوسان را نیز می فرستد. این یک به یک به نمودارهای مناسب متصل می شود.
روش اولیه لیستی از ردیف ها را ایجاد می کند (به عنوان یک شی کلیست - لیست لیستی پویا از انواع کوبی است) و مقادیر پیش فرض را برای متغیرهای داخلی قابل تنظیم تنظیم می کند (قلم, اندازه قلم, رنگ, ابعاد سلول و فاصله از گوشه نمودار بالا سمت راست).
مخرب نسبتا ساده است. لیست ردیف ها را حذف می کند و تمام اشیای نمودار (برچسب ها) ایجاد شده توسط پانل را حذف می کند.
روش افزودنی سطر جدید به لیست ردیف. توجه داشته باشید که لیست ردیف یک شی کلیست است که به طور خودکار تغییر اندازه می دهد. این روش همچنین روش ورودی را برای هر شی کلاغ اضافه شده فراخوانی می کند. لازم است به جسم اجازه دهیم متغیرهای داخلی خود را به درستی مقداردهی اولیه کند. به عنوان مثال ممکن است از تماس ورودی برای ایجاد دسته های نشانگر یا فایل استفاده کند.
روش به روز رسانی کمی پیچیده تر است. برای ترسیم مجدد پانل استفاده می شود.
اساسا از سه قسمت تشکیل شده است که عبارتند از:
- رسم ستون اول (نام ردیف ها)
- ترسیم ردیف اول (نام بازه های زمانی یا نمادها بسته به حالت انتخاب شده)
- ترسیم سلولهای داخلی (مقادیر اجزا)
شایان ذکر است که ما از هر مولفه می خواهیم ارزش خود را بر اساس نماد و بازه زمانی عرضه شده محاسبه کند. ما همچنین اجازه کامپوننت تصمیم می گیرید, چه فونت و رنگ باید استفاده شود.
روش کشیدن برچسب برای ترسیم برچسب های متنی در سلول مشخص شده پانل استفاده می شود. اولا, چک اگر یک برچسب برای این سلول در حال حاضر وجود دارد. در غیر اینصورت یک مورد جدید ایجاد می شود.
سپس, این مجموعه تمام خواص برچسب لازم و متن خود را.
روش های دیگر در اینجا معرفی نمی شوند زیرا بسیار ساده و کم اهمیت هستند. کد کامل را می توانید در پایین مقاله بارگیری کنید.
4. گسترش کلاغ
کلاغ یک کلاس پایه برای تمام اجزای است که می تواند توسط پانل استفاده شود.
بیایید به کد کلاس کلاغ نگاه کنیم:
این موضوع را گسترش می دهد زیرا فقط کوبی ها را می توان در یک ساختار کلیست ذخیره کرد. این پنج روش دارد که تقریبا خالی است. به عبارت دقیق تر اکثر این ها فقط مقادیر پیش فرض را برمی گردانند. این روش ها طراحی شده اند که هنگام گسترش کلاغ نادیده گرفته شوند. لازم نیست همه را نادیده بگیریم فقط کسانی را که می خواهیم.
به عنوان مثال اجازه دهید ایجاد ساده ترین مولفه پانل ممکن است - در حال حاضر پیشنهاد قیمت مولفه. می تواند در حالت چند ارزی برای نمایش قیمت های فعلی ابزارهای مختلف استفاده شود.
برای رسیدن به این هدف ما یک ایجاد می کنیمکلاس قیمت, که به نظر می رسد این است:
روش هایی که ما در اینجا برای نادیده گرفتن انتخاب کردیم ارزش گذاری و نامگذاری است. گیتنام به سادگی نام این سطر را برمی گرداند که در ستون اول پانل نمایش داده می شود. ارزش افزوده جدیدترین علامت را روی نماد مشخص شده دریافت می کند و جدیدترین قیمت پیشنهاد را برمی گرداند. این تمام چیزی است که ما نیاز داریم.
این کاملا ساده بود. بیایید کاری متفاوت انجام دهیم. اکنون یک کامپوننت می سازیم که مقدار فعلی را نشان می دهد.
کد مشابه کد قبلی است:
ما در اینجا چند روش جدید داریم. سازنده اجازه می دهد تا دوره را به عنوان یک متغیر عضو عرضه و ذخیره کند. از روش اینیت برای ایجاد دستگیره های نشانگر اندیکاتور استفاده می شود. این دسته ها در دسته های [] ذخیره می شوند. این روش مقدار نهایی را از بافر کپی کرده و برمی گرداند. روش گتاندل خصوصی برای یافتن دسته نشانگر مناسب در دسته ها استفاده می شود [] مجموعه. نام خود توضیحی است.
همانطور که میبینیم ساخت اجزای پنل بسیار ساده است. به همین ترتیب می توانیم تقریبا برای هر شرایط سفارشی اجزای سازنده ایجاد کنیم. لازم نیست مقدار شاخص باشد. در زیر من در حال حاضر یک شرط سفارشی بر اساس محمدرضا. این بررسی می کند که قیمت فعلی بالاتر از میانگین متحرک است و بله یا خیر را نشان می دهد.
کد دیگر است, به دلیل میانگین متحرک دارای سه پارامتر: دوره, تغییر و نوع. گیت نام کمی پیچیده تر است زیرا نام را بر اساس نوع کارشناسی ارشد و دوره ایجاد می کند. ارزش گذاری تقریبا به همان روشی است که در مورد کرسیو کار می کند اما به جای بازگرداندن مقدار نشانگر برمی گردد بله اگر قیمت بالاتر از میانگین متحرک باشد یا نه اگر زیر باشد.
مثال اخیر کمی پیچیده تر است. این کلاس تغییر قیمت نوار فعلی است که تغییر قیمت نوار فعلی را نشان می دهد. در سه حالت کار می کند:
- نمایش فلش (سبز یا قرمز پایین);
- نمایش تغییر قیمت به عنوان یک مقدار (سبز یا قرمز);
- نمایش تغییر قیمت به صورت درصد (سبز یا قرمز).
کد به شرح زیر است:
سازنده دارای دو پارامتر است. یکی از اولین تصمیم می گیرد برای نشان دادن فلش. اگر درست باشد پارامتر دوم کنار گذاشته می شود. پارامتر دوم تصمیم می گیرد که درصد تغییرات را نشان دهد یا فقط تغییرات قیمت را نشان دهد.
برای این کلاس تصمیم گرفتم چهار روش کلاغ را نادیده بگیرم: نام, ارزش شنیدن, رنگ و گت فونت. نام ساده ترین است و فقط نام را برمی گرداند. گت فونت استفاده می شود, زیرا این امکان را برای نمایش فلش و یا شخصیت های دیگر از بال فونت می دهد. گت رنگ با افزایش قیمت رنگ لیمویی و هنگام سقوط قرمز برمی گرداند. رنگ سفید وقتی در جای خود بماند یا در صورت بروز خطا برگردانده شود. قیمت باز و بسته شدن نوار نهایی را محاسبه می کند و مابه التفاوت را برمی گرداند. در حالت فلش کدهای کاراکتر بالها از فلش های بالا و پایین را برمی گرداند.
5. نحوه استفاده از کل چیز
به منظور استفاده از پانل ما نیاز به ایجاد یک شاخص جدید. بیایید اسمش را بگذاریم جدول نمونه.
رویدادهایی که باید رسیدگی کنیم عبارتند از:
ما همچنین نیاز به یک اشاره گر به شی سیلور, که به صورت پویا در اونینیت ایجاد خواهد شد(). اول از همه باید تصمیم بگیریم که از کدام حالت استفاده خواهیم کرد (چند بازه زمانی یا چند ارزی). نمونه کد زیر نشان می دهد حالت چند ارز, اما دونده که برای حالت چند بازه زمانی مورد نیاز است نیز در اینجا در نظرات. برای حالت چند ارزی باید مجموعه ای از نمادها را ایجاد کرده و به سازنده سیبل منتقل کنیم. برای حالت چند زمانبندی ما مجموعه ای از زمانبندی ها را ایجاد می کنیم و به سازنده دوم سیلندر منتقل می کنیم.
سپس باید تمام اجزای لازم را ایجاد کرده و با استفاده از روش افزودنی به پنل اضافه کنیم. در صورت تمایل, پارامترهای پانل ممکن است تنظیم. خب بالاخره, ما نیاز به رسم پانل برای اولین بار, بنابراین ما پاسخ به روز رسانی در پایان اونینیت(). دراین روش ساده است. تنها کاری که انجام می دهد حذف شی سیتابل است که باعث می شود تخریب کننده سیتابل فراخوانی شود.
محاسبه (. ) و درچارت رویدادی(. ) یکسان هستند. فقط روش بروزرسانی را می نامند. رویدادی (. ) فقط لازم است اگر پانل در حالت چند ارز کار کند. در این حالت رویدادهای مطرح شده توسط جاسوسان را مدیریت می کند. در حالت چند بازه زمانی تنها درحساب (. ) مورد نیاز است, چرا که ما باید برای نظارت بر تنها نماد نمودار فعلی است.
پس از اتصال این شاخص به نمودار, شروع به به روز رسانی و ما در نهایت می توانید ببینید که پانل کار.
6. نصب و راه اندازی
همه پرونده ها باید کامپایل شوند. جاسوسی و نمونه جداول شاخص هستند و باید به پایانه کپی شده_داده_پوشه\میلی لیتر 5\شاخص. فایل های باقیمانده شامل فایل ها هستند و باید در داخل پوشه ترمینال _ داده ها قرار بگیرند. 5\شامل. برای اجرای پانل, ضمیمه شاخص جدول نمونه به هر نمودار. بدون نیاز به ضمیمه جاسوسی وجود دارد.
نتیجه گیری
مقاله پیاده سازی شی گرا از چند بازه زمانی و پانل چند ارز برای متاتریدر فراهم می کند 5. این نشان می دهد که چگونه برای رسیدن به یک طراحی, است که به راحتی قابل توسعه و اجازه می دهد تا برای ساخت پانل های سفارشی با کمی تلاش.
تمام کدهای موجود در این مقاله را می توانید در زیر بارگیری کنید.
هشدار: کلیه حقوق این مواد توسط متاکوتس محفوظ است. کپی کردن و یا تجدید چاپ از این مواد در تمام یا بخشی ممنوع است.