چرا دو EA طلا ممکن است یک سفارش را مدیریت کنند؟ بررسی شماره جادویی MT4
با یک مثال حساب آزمایشی توضیح میدهیم که EA چگونه سفارشها را بر اساس نماد و شماره جادویی فیلتر میکند و پس از تغییر شماره چگونه از رها شدن پوزیشنهای قدیمی و خارج شدن آنها از مدیریت جلوگیری کنیم.
نویسنده: توماس|کاربرد عملی MT4|۱۰ نوامبر ۲۰۲۶
خلاصه: وقتی دو مجموعه EA طلا روی یک حساب MT4 نصب میشوند، اگر از شرایط یکسان برای شناسایی سفارش استفاده کنند، ممکن است همزمان حد ضرر یک سفارش را تغییر دهند. در عیبیابی ابتدا نماد و شماره جادویی روی سفارش را بررسی کنید، سپس ببینید کد عملاً بر اساس چه شرایطی فیلتر میکند. شمارهها و سفارشهای زیر همگی فرضی و آموزشی هستند.
شماره جادویی کجا ثبت میشود
تابع OrderSend در MQL4 از ارسال پارامتر magic پشتیبانی میکند. پس از انتخاب موفق یک سفارش، OrderMagicNumber میتواند شناسه آن سفارش را بخواند. این شناسه میتواند مبنای دستهبندی برای برنامه فراهم کند. اینکه کدام سفارشها تغییر داده یا بسته میشوند همچنان به منطق فیلتر و اجرای خود EA بستگی دارد. اگر برنامه هنگام پیمایش سفارشهای حساب فقط نماد را بررسی کند، دو EA طلا حتی با شماره جادویی متفاوت ممکن است همان دسته سفارش را پردازش کنند.

در تصویر فرض شده استراتژی A و B بهترتیب از ۱۰۱ و ۲۰۲ استفاده میکنند. A سفارشهای استخر معاملات را یکییکی انتخاب میکند، ابتدا نماد واقعی و سپس شناسه را بررسی میکند. تنها وقتی هر دو مورد مطابقت داشتند، سفارش به منطق بعدی برای بررسی نوع سفارش و اقدامهای مجاز سپرده میشود. در صورت شکست در انتخاب سفارش باید از آن عبور کرده و خطا ثبت شود. پیش از هر تغییر بهتر است سفارش هدف دوباره انتخاب شود تا از استفاده از دادههای قدیمی که قبلاً در برنامه کپی شدهاند جلوگیری شود.
تأیید در سه مرحله با حساب آزمایشی
مرحله اول، نسخه، پارامترهای ورودی، تایمفریم چارت و نام کامل نماد طلا در بروکر را برای هر دو مجموعه EA ثبت کنید. نام طلا در حسابهای مختلف ممکن است پسوند داشته باشد. هنگام استقرار چند نمونه روی یک نماد نیز باید روشن کنید که آیا آنها مستقل مدیریت میشوند یا طبق طراحی سفارشها را مشترکاً مدیریت میکنند.
مرحله دوم، در حساب آزمایشی اجازه دهید هر مجموعه EA یک سفارش آزمایشی قابل شناسایی ایجاد کند و همزمان یک سفارش آزمایشی که باید کنار گذاشته شود آماده کنید. در گزارشها حداقل شماره سفارش، نماد، شماره جادویی و اقدامی که برنامه قصد اجرای آن را دارد ثبت شود. سپس یک اقدام مدیریتی کنترلشده را فعال کنید، مثلاً تلاش برای تغییر سفارش آزمایشی خود استراتژی A و بررسی اینکه آیا سفارش استراتژی B مقدار اولیه خود را حفظ میکند. بهتر است سفارشهای معلق و پوزیشنهای اجراشده جداگانه بررسی شوند، زیرا استخر معاملات میتواند هر دو نوع را همزمان شامل شود و قواعد پردازش واقعی معمولاً متفاوت است.
مرحله سوم، پس از راهاندازی مجدد ترمینال یا بارگذاری مجدد EA یک بار دیگر بررسی کنید. اگر برنامه فقط فهرست سفارشهای ایجادشده در همین اجرا را به خاطر بسپارد، رفتار پس از راهاندازی مجدد ممکن است تغییر کند. بررسی کنید که آیا سفارشها را دوباره بر اساس شرایط تعیینشده شناسایی میکند و آیا در نبود سفارش مطابق، اقدام غیرمنتظرهای رخ میدهد. شماره فقط به جداسازی کمک میکند؛ اگر بررسی ریسک کل در سطح حساب بهطور عمدی همه پوزیشنها را میخواند، باید جدا از اختیار واقعی تغییر سفارش ثبت شود.
پیش از تغییر شماره، ابتدا سفارشهای قدیمی را رسیدگی کنید
فرض کنید استراتژی A قبلاً با ۱۰۱ پوزیشن باز کرده و اکنون به ۳۰۳ تغییر کرده است. تغییر پارامترهای ورودی معمولاً فقط بر مقادیری که کد در ادامه استفاده میکند اثر میگذارد و شناسه سفارشهای قدیمی بهطور خودکار همراه با تنظیمات چارت منتقل نمیشود. اگر شرایط مدیریت فقط با ۳۰۳ مطابقت کند، سفارشهای قبلی ۱۰۱ ممکن است نادیده گرفته شوند. پیش از تغییر باید سفارشهای قدیمی و روش پردازش موردنظر فهرست شوند و سپس راهاندازی مجدد و تحویل در محیط آزمایشی تأیید شود. اگر نسخه EA قابل بررسی نیست یا گزارشها منطق فیلتر را روشن نمیکنند، تغییرات مدیریت خودکار را موقتاً متوقف کنید و ترتیب خروج پوزیشنهای موجود را بررسی کنید. موفقیت در آزمایش فقط نشاندهنده سناریوی آزمونشده است؛ تغییرات واقعی قیمت، رد سفارش توسط سرور و لغزش همچنان باید جداگانه ارزیابی شوند.