Sonlandırma Sebebi Kodları

Sonlandırma sebebi kodlarına UninitializeReason() fonksiyonu ile dönüş yapılır. Muhtemel dönüş değerleri şunlardır:

Sabit

Değer

Açıklama

REASON_PROGRAM

0

Uzman Danışmanın kendi işleminiExpertRemove() fonksiyon çağrısıyla sonlandırmış

REASON_REMOVE

1

Program çizelgeden silinmiş

REASON_RECOMPILE

2

Program yeniden derlenmiş

REASON_CHARTCHANGE

3

Sembol veya çizelge periyodu değişmiş

REASON_CHARTCLOSE

4

Çizelge kapatılmış

REASON_PARAMETERS

5

Giriş parametreleri kullanıcı tarafından değiştirilmiş

REASON_ACCOUNT

6

Yeni bir hesap aktive edilmiş veya hesap ayarlarındaki bir değişiklik nedeniyle alım-satım sunucusuna yeniden bağlanılmış

REASON_TEMPLATE

7

Yeni bir şablon uygulanmış

REASON_INITFAILED

8

Bu değer, OnInit() işleyicisinin sıfır olmayan bir değere dönüş yaptığı anlamına gelir

REASON_CLOSE

9

Terminal kapatılmış

Sonlandırma sebebi kodu, aynı zamanda öntanımlı OnDeinit(const int reason) fonksiyonuna da parametre olarak geçirilir.

Örnek:

//+------------------------------------------------------------------+
//| Metin açıklamasını al                                            |
//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
  {
   string text="";
//---
   switch(reasonCode)
     {
      case REASON_ACCOUNT:
         text="Hesap değiştirildi";break;
      case REASON_CHARTCHANGE:
         text="Sembol veya zaman-aralığı değiştirildi";break;
      case REASON_CHARTCLOSE:
         text="Çizelge kapatıldı";break;
      case REASON_PARAMETERS:
         text="Giriş parametresi değiştirildi";break;
      case REASON_RECOMPILE:
         text="Program "+__FILE__+" yeniden derlendi";break;
      case REASON_REMOVE:
         text="Program "+__FILE__+" çizelgeden kaldırıldı";break;
      case REASON_TEMPLATE:
         text="Yeni şablon, çizelgeye uygulandı";break;
      default:text="Diğer bir neden";
     }
//---
   return text;
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Sonlandırma sebebi kodunu almanın ilk yolu
   Print(__FUNCTION__,"_Sonlandırma sebebi kodu = ",reason);
//--- Sonlandırma sebebi kodunu almanın ikinci yolu
   Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
  }