در فرآیند ایجاد هر راه حل جدی برنامه ، توسعه دهنده با این واقعیت روبرو است که برنامه وی می تواند شامل همه خطاهای ممکن و غیرممکن باشد. خطاها در مرحله توسعه باعث ایجاد مشکل زیادی می شود ، منجر به عدم اطمینان از راه حل می شود و اگر این یک ربات تجاری باشد ، می تواند نتیجه منفی را در سپرده شما نشان دهد. بگذارید متداول ترین خطاها ، منشأ آنها و روش های تشخیص و پردازش برنامه خطاها را تجزیه و تحلیل کنیم. در فرآیند توسعه و استفاده از یک مشاور متخصص برای ترمینال مشتری Metatrader 4 خطاهای زیر می تواند رخ دهد:
- نحو - آنها را می توان در مرحله تدوین یافت و توسط برنامه نویس به راحتی قابل رفع است.
- منطقی - آنها با کامپایلر تشخیص داده نمی شوند. مثالها عبارتند از: آشفتگی با نام متغیرها ، تماس های عملکرد اشتباه ، عملکرد داده های انواع مختلف و غیره.
- الگوریتمی - آنها در صورت عدم قرار دادن براکت ها به درستی ، در صورت بروز ظروف سرباز یا مسافر با بیانیه های شعبه و غیره اتفاق می افتند.
- بحرانی - این خطاهای غیرممکن است ، شما باید برای برانگیختن آنها تلاش کنید. در هنگام کار با DLL ، آنها اغلب کمتر اتفاق می افتند.
- تجارت - این خطاهایی است که هنگام کار با سفارشات رخ می دهد. چنین نوع خطاهایی یک نقطه مناقصه برای روبات های تجاری است.
اول از همه ما به شما توصیه می کنیم مستندات مربوط به خطاهای اجرای را مطالعه کنید. پس از انجام این روش ، می توانید بعداً زمان زیادی را صرفه جویی کنید. خطاهای ناشی از عملیات معاملاتی در اینجا شرح داده شده است.
خطاهای نحوی
خطاهای این نوع توسط اشتباهات اپراتورها ، متغیرها ، تماس های مختلف توابع ایجاد می شود. در حین تدوین ، کد برنامه بررسی می شود و تمام خطاهای نحوی در پنجره "ابزار" متائیتور نمایش داده می شود. در حقیقت تقریباً همه خطاها شناسایی شده و توسط برنامه نویس قابل رفع هستند.
استثناء یک آشفتگی با براکت ها است ، هنگامی که براکت اشتباه/بسته شده در مرحله تدوین تشخیص داده می شود ، اما قرار دادن خطا به روشی اشتباه نمایش داده می شود. سپس باید کد را دو برابر کنید تا بتوانید خطای بصری را پیدا کنید ، متأسفانه می تواند ناموفق باشد. رویکرد دوم خاموش کردن پیاپی بلوک های کد با استفاده از نظرات است. در این حالت اگر پس از اظهار نظر در مورد بلوک جدید خطا از بین برود ، بدیهی است که در این بلوک اظهار نظر قرار می گیرد. این منطقه به طرز چشمگیری در منطقه جستجو باریک می شود و به پیدا کردن سریع قرار دادن اشتباه براکت ها کمک می کند.
خطاهای منطقی ، الگوریتمی و بحرانی
رایج ترین خطاهای این نوع ، ظروف سرباز یا مسافر در نام ها و انواع متغیرها و همچنین خطاهای الگوریتمی در شاخه های مشاور متخصص است. به عنوان مثال ، اجازه دهید این کد را مطالعه کنیم:
چه چیزی اکنون می توانیم ببینیم؟متغیر منطقی "برخی" ، که برای کل برنامه معمول است و یک شاخص مهم برای باز کردن موقعیت است ، به طور تصادفی پایین تر تنظیم شد. این می تواند منجر به افتتاح اشتباه نظم و در نتیجه ضرر شود. می توانید نام های زیادی را برای متغیرها تنظیم کنید! اما به دلایلی این نام ها به طور تصادفی در برنامه های بزرگ تکرار می شوند و منجر به مشکل ذکر شده در بالا می شود.
این نوع خطا هنگامی رخ می دهد که متغیرها مخلوط شوند یا بیان یک نوع به بیان نوع دیگری اختصاص یابد. به عنوان مثال ، در این خط
ما در تلاش هستیم تا بیان مقدار نوع "دوتایی" را به متغیر نوع "int" اختصاص دهیم ، که منجر به مقدار صفر می شود. و ما در حال محاسبه سطح TakeProfit هستیم! این نوع خطا منجر به تجارت اشتباه می شود.
خطای الگوریتمی در شاخه های مشاور خبره به این معنی است که براکت ها مطابق با الگوریتم قرار نمی گیرند ، یا پوشش اشتباه "اگر" اپراتورها توسط اپراتورهای "دیگر" اتفاق می افتد. در نتیجه ما مشاور متخصص داریم ، که این کار را انجام می دهد. مطابق با الزام فنی کار نکنید.
برخی از خطاها می توانند آنقدر غیرقابل تصور باشند ، که می توانید چندین ساعت را صرف "مراقبه روی کد" کنید تا آنها را پیدا کنید. متأسفانه ، برخلاف محیط برای زبانهای خانواده C ++ ، امکان ردیابی مقادیر متغیرها در متائیتور وجود ندارد. بنابراین تنها راه ردیابی خطاها از طریق خروجی پیام ها توسط عملکرد چاپ () است.
عملکرد getLasterror () کد خطا را برمی گرداند. آخرین مقدار برای بررسی هر مکان بالقوه آسیب پذیر برنامه توصیه می شود. با استفاده از کد خطا می توانید به راحتی توضیحات آن را در مستندات پیدا کنید و برای برخی از خطاها حتی می توانید روش های درمانی را نیز پیدا کنید.
باید بگوییم که خطاهای ذکر شده در بالا احتمالاً قبل از استفاده از حساب نسخه ی نمایشی در مرحله آزمایش تشخیص داده می شوند ، بنابراین ضررهای ناشی از آنها غیرممکن است.
ویژگی اصلی خطاهای مهم این است که هنگام بروز آنها ، اجرای برنامه بلافاصله متوقف می شود. بدون کمتر ، کد خطا در متغیر از پیش تعریف شده "last_error" بدون تغییر باقی می ماند. این امکان را به ما می دهد تا کد خطایی را که عملکرد GetLasterror () را یاد می گیریم ، یاد بگیریم.
خطاهای تجاری
این خطاها اغلب منجر به ضرر و عدم قابلیت مشاور متخصص در نسخه ی نمایشی و علاوه بر این ، در حساب های واقعی می شود. آنها هنگام کار با ارسال و اصلاح سفارشات ، به عبارت دیگر ، در حالی که تعامل با سرور تجارت است ، اتفاق می افتد.
پردازش ساده مانند این:
کمکی نخواهد کردما اطمینان حاصل کردیم که سفارش به سرور ارسال نشده و کد خطا را یاد گرفته است. پس از آن چه؟اگر یک مشاور متخصص سودآوری داشته باشیم ، ورودی مهمی را از دست دادیم.
نوع با حلقه بی پایان:
کمی کمک می کند. سفارش احتمالاً به سرور خواهد رسید. اما ما می توانیم با برخی از مشکلات روبرو شویم:
- کارگزار درخواست های مکرر را دوست ندارد.
- این خطا می تواند کشنده باشد ، در این حالت درخواست به هر حال به سرور نمی رسد.
- مشاور خبره برای مدت طولانی پاسخ نخواهد داد.
- سرور ممکن است درخواست های معاملاتی را به هیچ وجه قبول نکند - این می تواند یک آخر هفته ، تعطیلات ، کار تعمیر و نگهداری و غیره باشد.
تقریباً هر خطایی بی نظیر است و به درمان خاص خود نیاز دارد. بنابراین اجازه دهید در مورد نوع با اپراتور سوئیچ بحث کنیم و هر خطا را کم و بیش به صورت جداگانه پرورش دهیم. خطای استاندارد شماره 146 - "جریان تجارت شلوغ است" ، با استفاده از semaphore تحقق یافته در کتابخانه tradeContext. mqh پردازش می شود. شما می توانید کتابخانه و توضیحات دقیق آن را در این مقاله پیدا کنید.
این نسخه از ربات تجارت در یک حلقه بی پایان کار می کند. تقاضای آن زمانی اتفاق می افتد که مشاور خبره چند منظوره مقیاس ایجاد شود. الگوریتم بهره برداری از EA موارد زیر است:
- سیگنال را از GetAction بلوک تحلیلی () دریافت کنید.
- معامله لازم را در معامله توابع () و نزدیک () انجام دهید.
- در صورت عدم موفقیت جدی ، به نقطه 1 برگردید.
پس از گرفتن سیگنال (خرید ، فروش ، بستن) از بلوک تجزیه و تحلیل مشاور متخصص ، جریان معاملاتی را مسدود می کند (مقاله را بخوانید) و سعی می کند معامله را انجام دهد ، پس از آن برای چند ثانیه مکث می کند و جریان معاملاتی را آزاد می کندEAS دیگرمشاور خبره سعی می کند سفارش را بیش از زمان "شمارش" ارسال کند. این کافی است که سفارش برای عبور از بازار ناپایدار که در آن می توانید نیازهای خود را دریافت کنید ، کافی باشد. اگر در حین ارسال سفارش یک خطای جدی رخ داده باشد ، مشاور خبره عملکرد را متوقف می کند. در صورت بروز هرگونه مشکلی ، یک پیام خطا در پوشه "مشاوران خبره" ظاهر می شود. مشاور خبره در صورتی که خطا مهم نباشد ، به کار خود ادامه خواهد داد.
خطاها در روش ErrorBlock () مطابق با طرح زیر پردازش می شوند: این روش کد خطا را دریافت می کند و یک الگوریتم کوتاه از پردازش آن را ارائه می دهد. برای بیشتر خطاها فقط یک پیام در سیاهه است. اگر خطا جدی باشد ، شاخص های تجارت و تغییر Noopen. اگر این یک خرابی اتصال باشد ، پردازش وضعیت کمی پیچیده تر است. این روبات سعی می کند با توالی دوره ای از پیش تعریف شده شصت بار به سرور برسد. اگر به سرور نرسید ، به احتمال زیاد مشکلات جدی دارد و باید مدتی تجارت خود را متوقف کنید. بسته به تأثیر خطا در تجارت ، الگوریتم پردازش معانی مختلفی را برمی گرداند:
- 0 - بدون خطایی ؛
- 1 - خطا با نوسانات بازار همراه است ، می توانید بار دیگر سفارش را ارسال کنید.
- 2 - هنگام ارسال این سفارش ، یک خطای جدی رخ داد ، مدتی موقعیت های باز را متوقف کنید.
- 3 - شکست جدی EA ، عدم موفقیت در اتصال - تجارت را متوقف کنید تا روشن شدن شرایط.
نتیجه
نحو ، الگوریتمی و خطاهای منطقی هنگامی اتفاق می افتد که توجه زیادی به کدگذاری الگوریتم نکنید. این خطاها با بررسی دقیق و تأیید مقادیر متغیرهای موجود در سیاهه برطرف می شوند. آنها را می توان در مرحله تدوین و آزمایش مشاور متخصص تشخیص داد. چنین خطاهایی برای مدت طولانی وجود ندارد ، آنها معمولاً قبل از استفاده از حساب نسخه ی نمایشی برطرف می شوند.
هنگام ارسال سفارشات به سرور ، خطاهای معاملاتی رخ می دهد. آنها با معاملات واقعی مرتبط هستند که در آن می توانید نیازها ، لغزش ، مبارزه با فروشندگان را با مقیاس بندی و خرابی تجهیزات پیدا کنید. چنین خطاهایی را نمی توان پیش بینی کرد ، اما آنها می توانند و باید پردازش شوند. شما باید بسته به منطق مشاور خبره ، فراوانی معاملات و اصلاح سفارشات ، هر هفته آنها را به صورت جداگانه پردازش کنید.
اشتباهاتی که در حین بهره برداری مشاور خبره رخ می دهد ، نیاز به پردازش دارد. این یک کار بی اهمیت نیست. این بستگی به پیچیدگی EA و ویژگی های آن دارد. در مقاله می توانید الگوی مثال زدنی از مشاور خبره را که این کار را انجام می دهد ، پیدا کنید. برای ایجاد سیستم معاملاتی ایمن تر و ایمن تر زمان زیادی می برد. اما زمان صرف شده برای توسعه سیستم معاملاتی خودکار بدون دردسر چندین بار با امنیت سپرده و خواب آرام شما پاداش می گیرد.
خبرهای فارکس...
ما را در سایت خبرهای فارکس دنبال می کنید
برچسب :
نویسنده : شهره لرستانی
بازدید : <-PostHit->
تاريخ : جمعه
9 تير
1402 ساعت: 14:45