EA طلای MT4 در آخر هفته لاگ ندارد؛ آیا متوقف شده است؟ ابتدا报价 و رویدادهای زمانی را تفکیک کنید
OnTick به报价 جدید نماد نمودار وابسته است و OnTimer نیاز به اشتراک برنامه دارد. بر اساس ورودی رویداد، محل لاگ و سوابق راهاندازی مجدد بررسی کنید و از عدم خروجی در تعطیلی بازار برای تشخیص مستقیم خرابی استفاده نکنید.
نویسنده: توماس|عملیات MT4|۱۴ نوامبر ۲۰۲۶
خلاصه: در آخر هفته ترمینال را باز میکنید، رابط EA هنوز هست اما مدت طولانی لاگ جدیدی ندارد؛ این پدیده بهتنهایی برای تشخیص قفل شدن برنامه کافی نیست. ابتدا باید مشخص کنید برنامه با چه رویدادی فعال میشود، آیا واقعاً در آن ورودی لاگ چاپ میکند، و سپس وضعیت ترمینال را بررسی کنید. این مقاله برنامه را با سفارش واقعی آزمایش نمیکند و نمودار جریان را بهعنوان اثبات تستشدن هیچ EA نمیداند.
بدون报价 جدید، رویداد报价 ممکن است رخ ندهد
مستندات رسمی MQL4 شرکت MetaQuotes توضیح میدهد که فقط وقتی نماد نمودار متصل به EA报价 جدید دریافت کند، رویداد NewTick مربوطه ایجاد شده و تابع پردازش OnTick که درست اعلان شده فراخوانی میشود. اگر برنامه بررسی و لاگ را همه در این ورودی نوشته باشد، در بازهای که报价 جدید نیست ممکن است سابقه اجرای جدیدی وجود نداشته باشد.
این به معنای آن نیست که همه EAها باید منتظر报价 باشند. برنامه میتواند از ورودیهایی مانند تایمر یا رویدادهای نمودار نیز استفاده کند. بنابراین نمیتوان با دیدن «آخر هفته» همه سکوتها را یکسان تفسیر کرد، و نباید پدیده بهروزرسانی نماد دیگر را مدرکی دانست که نمودار فعلی طلا حتماً报价 دریافت میکند.
ابتدا تشخیص دهید برنامه منتظر کدام رویداد است

تصویر یک نمودار آموزشی原创 جریان است، نه行情 واقعی، و هیچ حساب معاملاتی واقعی را نشان نمیدهد. مسیر اول به报价 جدید نماد نمودار وابسته است؛ مسیر دوم به اشتراک موفق تایمر توسط برنامه. رویداد زمانی میتواند منطق بررسی را فعال کند، اما به معنای قابلیت انجام معامله در بازار فعلی نیست؛ برنامه همچنان باید شرایط معامله و اعتبار داده را بررسی کند.
توصیه رسمی این است که تایمر در زمان راهاندازی مشترک شود و در زمان حذف لغو شود. فقط نوشتن تابع OnTimer بدون اشتراک، ثابت نمیکند که بهصورت دورهای اجرا میشود. نام تابع، پارامترها و نوع بازگشتی نیز باید با الزامات پردازش رویداد مطابقت داشته باشد؛ هر خطای تایپی ممکن است باعث شود ورودی مورد انتظار فراخوانی نشود.
کاربر عادی چگونه گامبهگام بررسی کند
ابتدا حساب، سرور، نام نماد نمودار و وضعیت اتصال فعلی را بررسی کنید و مطمئن شوید ترمینال درست را میبینید. زمان آخرین报价 و زمان معاملاتی پلتفرم را ثبت کنید و از ساعت کامپیوتر بهجای زمان行情 سرور استفاده نکنید. تعطیلی معمول آخر هفته نیز به معنای یکسان بودن برنامه معاملاتی محصولات دیگر نیست؛ باید بر اساس اطلاعیه پلتفرم مشخص باشد.
سپس لاگهای مرتبط مانند Experts و Journal را ببینید و چند رکورد آخر راهاندازی، حذف یا خطا را ذخیره کنید. به فیلتر لاگ، تاریخ و اینکه ترمینال دیگری را بررسی نکردهاید توجه کنید. اگر EA فقط هنگام وقوع شرایط معامله چاپ کند، نبود رکورد جدید ممکن است فقط به معنای برآورده نشدن شرایط چاپ باشد و اثباتی بر اجرا نشدن برنامه نیست.
بعد بررسی کنید آیا توضیحات EA شامل بررسی دورهای، خروجی ضربان یا مکانیزم نگهداری آخر هفته است. بدون کد منبع، نسخه، پارامترها، نماد نمودار، زمان آخرین报价 و لاگ را به ارائهدهنده بدهید تا بررسی کند و فرض نکنید همه محصولات از یک ساختار رویداد استفاده میکنند.
با داشتن کد منبع ابتدا چه چیزی را تأیید کنیم
در محیط شبیهسازی، اعلان ورودیهایی مانند OnInit، OnTick و OnTimer و اشتراکهای لازم را بررسی کنید و با لاگ تشخیصی با فرکانس مناسب مسیر واقعی را تأیید کنید. لاگ میتواند نوع رویداد، نماد و زمان داده را ثبت کند تا فقط «عادی» نوشته نشود و زمینه قابل بازبینی وجود داشته باشد. رمز حساب یا سایر اعتبارنامهها را در خروجی تشخیصی ننویسید.
اجرای ترمینال، بارگذاری نمودار، فعالسازی رویداد و اجرای معامله لایههای متفاوتی هستند. خروجی مداوم تایمر نه تازگی行情 را ثابت میکند و نه ارسال قطعی سفارش را. وقتی رویداد报价 فعال نمیشود، بهطریق اولویتهای معاملاتی بازتر یا ارسال مکرر سفارش نباید زنده بودن برنامه را آزمایش کرد.
چرا تغییر مکرر تایمفریم ممکن است بررسی را مختل کند
مستندات رسمی توضیح میدهد که تغییر نماد یا تایمفریم نمودار و تغییر پارامترهای ورودی شامل حذف و راهاندازی مجدد است. تغییر مکرر ممکن است مشکل اصلی را با فرایند راهاندازی جدید بپوشاند و也可能 وضعیت بارگذاری مجدد برنامه را فعال کند. ابتدا لاگ و پارامترها را ذخیره کنید، سپس طبق توضیحات در محیط امن تأیید کنید، نه اینکه مدام EA را دوباره متصل کنید تا ببینید گاهی برمیگردد.
EAهای مختلف پیادهسازی متفاوتی برای بازیابی پوزیشن، ماندگاری متغیرها و محافظت از سفارش تکراری دارند. این مقاله ایمنی بارگذاری مجدد را تضمین نمیکند و توصیه نمیکند در حضور ریسک واقعی بدون آگاهی حذف یا راهاندازی مجدد کنید. هر عملیات نگهداری باید ابتدا مشخص کند پوزیشن توسط چه کسی مدیریت میشود.
چگونه تشخیص دهیم بررسی تمام شده است
اگر تأیید شد که نماد فعلی报价 جدید ندارد، منطق فقط در ورودی报价 است و شواهد خطای دیگری نیست، میتوان آن را بهعنوان انتظار برای行情 ثبت کرد نه اعلام اینکه برنامه تعمیر شده است. اگر ورودی زمانی باید اجرا میشد اما همچنان خروجی ندارد، بررسی اشتراک، نتیجه راهاندازی و خطاهای برنامه را ادامه دهید و همه چیز را با تعطیلی بازار توضیح ندهید.
پس از بازگشت报价 نیز ابتدا مهر زمانی و وضعیت را بررسی کنید و سپس تأیید کنید برنامه رویداد جدید را مطابق انتظار پردازش میکند. بازگشت رویداد اثبات برتری سوددهی استراتژی معاملاتی نیست و سفارشها همچنان در معرض اسپرد، لغزش و ریسک اجرا هستند. هدف بررسی یافتن این است که برنامه واقعاً در کدام لایه متوقف شده، نه بهدست آوردن پاسخ از طریق ریسک در حساب واقعی.