جلسه هفدهم – چک کردن خطاها

در جلسه هفدهم از آموزش دوره اسکریپت نویسی،  با چک کردن خطاها  در زبان برنامه نویسی MQL آشنا خواهید شد.

به دلیل اینکه همیشه شرایط ایده آل نیست که پوزیشن مورد نظر ما با موفقیت باز شود و یا با موفقیت select و یا modify شود و ممکن است خطایی در حین انجام عملیات رخ داده باشد باید خروجی توابع را چک کنیم تا از خطای به وجود آمده مطلع شویم .

خروجی تابع ()OrderSend : خروجی این تابع از نوع int می باشد و اگر این تابع موفق شود که پوزیشن را باز کند مقدار ticket_number از پوزیشن باز شده را بر می گرداند و اگر موفق نشود که پوزیشنی را باز کند مقدار 1- بر می گرداند. برای اینکه دلیل خطا را متوجه شویم می توانیم از تابع ()GetLastError استفاده کنیم. به عنوان مثال:

int error_code = 0;
if (!OrderSend(…))
{
  error_code = GetLastError();
  Print ("Could not open  order due to", error_code);
}

نکته : در متا ادیتور در پوشه include یک هدر فایل با عنوان StdLibErr قرار داده شده است که کد خطا ها با توضیحات مربوطه در این هدر فایل قرار داده شده است.

برای اینکه علاوه بر کد خطا ، توضیحات خطا را برای تریدر نمایش بدهیم از هدر فایل stdlib.mqh در فولدر include استفاده می کنیم.  و داخل این هدر فایل یک تابع با عنوان ErrorDescription تعریف شده است  که کد خطا را به عنوان ورودی دریافت کرده و توضیحات آن خطا را بر می گرداند و برای استفاده از این تابع باید هدر فایل stdlib را در برنامه فراخوانی (include) کنیم.  به عنوان مثال :


Print ("Could not open  order due to ", error_code , ErrorDescription(error_code));

خروجی تابع  ()OrderSelect : خروجی این تابع از نوع bool  می باشد و اگر این تابع موفق شود که پوزیشن را select کند مقدار true  و در غیر اینصورت مقدار false بر می گرداند. برای اینکه دلیل خطا را متوجه شویم می توانیم از تابع ()GetLastError استفاده کنیم.  به عنوان مثال :

int error_code = 0;
if (!OrderSelect(ticket , SELECT_BY_TICKET))
{
  error_code = GetLastError();
  Print (“Could not open  order due to “, error_code , ErrorDescription(error_code));
}

خروجی تابع  ()OrderModify : خروجی این تابع از نوع bool  می باشد و اگر این تابع موفق شود که پوزیشن را modify کند مقدار true  و در غیر اینصورت مقدار false بر می گرداند. برای اینکه دلیل خطا را متوجه شویم می توانیم از تابع ()GetLastError استفاده کنیم .  به عنوان مثال :

int error_code = 0;
if (!OrderModify(…))
{
  error_code = GetLastError();
  Print ("Could not Modify order due to",error_code,ErrorDescription(error_code));
}

دیدگاهتان را بنویسید

You have to agree to the comment policy.