در جلسه بیست و دوم از آموزش دوره اسکریپت نویسی، با نحوه delete کردن پوزیشن های pending با حلقه for در زبان برنامه نویسی MQL آشنا خواهید شد.
نکته : اگر نیاز داشته باشیم که زمانی که اسکریپت را روی چارت قرار می دهیم تمام پوزیشن هایی که از نوع pending هستند به صورت یکجا delete شوند از حلقه for استفاده می کنیم .
وقتی از حلقه for استفاده می کنیم، یکی یکی نوع پوزیشن های موجود را چک کرده و اگر از نوع pending بود delete خواهند شد. به عنوان مثال :
for(int i=0; i < OrdersTotal() ;i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { If (OrderType() > 1 ) int ticket = OrderTicket(); if( OrderDelete(ticket)) i--; else Print(GetLastError()) ; }}
نکته : اگر نیاز داشته باشیم که نماد مورد نظر را هم چک کنیم یعنی همه یorder های pending که روی نمادی که اسکریپت را روی آن قرار می دهیم حذف شود به صورت زیر عمل میکنیم:
for(int i=0; i < OrdersTotal() ;i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { If (OrderType() > 1 && OrderSymbol() == _Symbol) int ticket = OrderTicket(); if( OrderDelete(ticket)) i--; else Print(GetLastError()); }}
نکته : اگر خروجی تابع OrderType بیشتر از یک باشد بدین معنی است که نوع پوزیشن، pending می باشد .