تشخیص شروع یک میله یا شمع جدید در یک مشاور متخصص. – سایر – 15 مارس 2022

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

کد خبر : 179211
تاریخ انتشار : سه شنبه ۲۴ اسفند ۱۴۰۰ - ۱۴:۵۰
تشخیص شروع یک میله یا شمع جدید در یک مشاور متخصص.  – سایر – 15 مارس 2022


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

برای تشخیص این موضوع، باید زمان باز شدن آخرین نوار فعلی را کنترل کرد. هنگامی که تغییر می کند، نشان دهنده شروع یک نوار جدید است و می توان به آن واکنش نشان داد و رویداد را مدیریت کرد. کد نمونه زیر که با هر دو MQL4 و MQL5 سازگار است، یکی از این روش ها را نشان می دهد که چگونه می توان به آن دست یافت:


   void OnTick()
   {
      
         static datetime dtBarCurrent  = WRONG_VALUE;
                datetime dtBarPrevious = dtBarCurrent;
                         dtBarCurrent  = (datetime) SeriesInfoInteger(
                                          _Symbol, _Period, SERIES_LASTBAR_DATE );
                bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );
   
      
         if( bNewBarEvent )
         {
            
               
               if( dtBarPrevious == WRONG_VALUE )
               {
                  
               }
               else
               {
                  
               };
            
            
         }
         else
         {
            
         };
   
      
   };

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

همچنین مهم است که توجه داشته باشید، زمانی که EA برای اولین بار روی نمودار قرار می گیرد، کد بالا به گونه ای واکنش نشان می دهد که گویی نوار به تازگی باز شده است. اگر شرایط به گونه‌ای دیگر مدیریت شود، نیاز به رسیدگی ویژه دارد.

ویرایش: در ادامه به دلیل نظرات زیر توسط کاربر دیگری، جایگزینی برای استفاده از تابع SeriesInfoInteger() استفاده از تابع iTime() به جای آن است:

dtBarCurrent = iTime( _Symbol, _Period, 0 );



لینک منبع : هوشمند نیوز

آموزش مجازی مدیریت عالی حرفه ای کسب و کار Post DBA
+ مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه
آموزش مجازی مدیریت عالی و حرفه ای کسب و کار DBA
+ مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه
آموزش مجازی مدیریت کسب و کار MBA
+ مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه
ای کافی شاپ
مدیریت حرفه ای کافی شاپ
خبره
حقوقدان خبره
و حرفه ای
سرآشپز حرفه ای
آموزش مجازی تعمیرات موبایل
آموزش مجازی ICDL مهارت های رایانه کار درجه یک و دو
آموزش مجازی کارشناس معاملات املاک_ مشاور املاک

برچسب ها : ، ، ، ، ، ، ، ، ، ، ،

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