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

برای یک مشاور متخصص (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 + مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه | ![]() + مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه | ![]() + مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه |
![]() مدیریت حرفه ای کافی شاپ | ![]() حقوقدان خبره | ![]() سرآشپز حرفه ای |
![]() | ![]() آموزش مجازی ICDL مهارت های رایانه کار درجه یک و دو | ![]() |
- نظرات ارسال شده توسط شما، پس از تایید توسط مدیران سایت منتشر خواهد شد.
- نظراتی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
- نظراتی که به غیر از زبان فارسی یا غیر مرتبط با خبر باشد منتشر نخواهد شد.
ارسال نظر شما
مجموع نظرات : 0 در انتظار بررسی : 0 انتشار یافته : ۰