Olay yönetimi

MQL5 dili önceden tanımlanmış belirli olayların yönetilmesini sağlar. Bu olayları yönetmek için, bir MQL5 programında fonksiyonların tanımlanmış olması gerekmektedir: fonksiyon adı, dönüş tipi, (varsa) bir parametre kümesi ve tipleri, olay yönetimi fonksiyonunun açıklamasına tam anlamıyla uyumlu olmalıdır.

Müşteri terminali olay yöneticisi, bir olayı yöneten fonksiyonları tanımlamak için dönüş ve parametre tiplerini kullanır. Eğer belirli bir fonksiyon aşağıdaki açıklamalara uyumlu olmayan bir dönüş tipine ve bazı parametrelere sahipse, bu şekildeki bir fonksiyon bir olayı yönetmek için kullanılamaz.

Fonksiyon

Açıklama

OnStart

Fonksiyon, Start olayının skriptte ayarlanan bazı eylemleri gerçekleştirmek için oluştuğunda çağrılır.

OnInit

Fonksiyon, çalışan bir MQL5 programını başlatmak için Init olayı oluştuğunda göstergeler ve uzman danışmanlarda çağrılır.

OnDeinit

Fonksiyon, çalışan bir MQL5 programını sonlandırmak için Deinit olayı oluştuğunda göstergeler ve uzman danışmanlarda çağrılır.

OnTick

Fonksiyon, yeni bir fiyatı(tik) işlemek için NewTick olayı oluştuğunda uzman danışmanlarda çağrılır.

OnCalculate

Fonksiyon, fiyat bilgisinin değişimini işlemek için Calculate olayı oluştuğunda göstergelerde çağrılır.

OnTimer

Fonksiyon, Timer periyodik olayının terminal tarafından sabit zaman aralıklarında oluşturulmasıyla göstergeler ve uzman danışmanlarda çağrılır.

OnTrade

Fonksiyon, bir işlem sunucusu üzerinde bir alım-satım işleminin sonunda oluşturulan Trade olayı sırasında uzman danışmanlarda çağrılır.

OnTradeTransaction

Fonksiyon, bir işlem isteği gerçekleştirim sonuçlarını işlemek için TradeTransaction olayı oluştuğunda uzman danışmanlarda çağrılır.

OnBookEvent

Fonksiyon, piyasa derinliğindeki değişiklikleri işlemek için BookEvent olayı oluştuğunda uzman danışmanlarda çağrılır.

OnChartEvent

Fonksiyon, bir MQL5 programı veya bir kullanıcı tarafından yapılan grafik değişikliklerini işlemek için ChartEvent olayı oluştuğunda göstergelerde ve uzman danışmanlarda çağrılır.

OnTester

Fonksiyon, bir uzman danışmanın geçmiş veriler üzerinde test edilmesinden sonra gerekli eylemleri gerçekleştirmek için Tester olayı oluştuğunda uzman danışmanlarda çağrılır.

OnTesterInit

Fonksiyon, strateji sınayıcısında optimizasyondan önce gerekli eylemleri gerçekleştirmek için TesterInit olayı oluştuğunda uzman danışmanlarda çağrılır.

OnTesterDeinit

Fonksiyon, strateji sınayıcısında uzman danışman optimizasyonundan sonra TesterDeinit olayı oluştuğunda uzman danışmanlarda çağrılır.

OnTesterPass

Fonksiyon, strateji sınayıcısında uzman danışman optimizasyonu sırasında yeni bir veri çerçevesinin gelişini işlemek için TesterPass olayı oluştuğunda uzman danışmanlarda çağrılır.

Müşteri terminali gelen olayları ilişkili olan açık grafiklere gönderir. Ayrıca, olaylar grafikler tarafından (grafik olayları) yada MQL5 programları (özel olaylar) tarafından oluşturulabilir . Grafiksel objenin oluşumu/silinimi olaylarının meydana gelmesi CHART_EVENT_OBJECT_CREATE ve CHART_EVENT_OBJECT_DELETE grafik özelliklerin ayarlanması ile etkinleştirilebilir/devre dışı bırakılabilir. Her bir MQL5 uygulaması ve grafiği, yeni gelen tüm olayların yerleştiği kendisine ait olaylar sırasına(kuyruğuna) sahiptir.

Bir program sadece üzerinde çalışmakta olduğu grafikten olayları alır. Tüm olaylar alındıkları sıraya göre birbiri peşi sıra yönetilir. Eğer sıra zaten NewTick olayını içeriyorsa veya bu olay yönetilme aşamasındaysa, o zaman yeni NewTick olayı MQL5 uygulama sırasına eklenmez. Benzer şekilde, eğer ChartEvent zaten bir MQL5 programı sırası içerisinde veya bu gibi bir olay yönetiliyorsa, o zaman bu tip yeni bir olay sıraya yerleştirilmez. Zamanlayıcı(Timer) olayının yönetimi de aynı şekilde işlemden geçirilir – eğer Timer olayı zaten sırada veya yönetiliyorsa, yeni zamanlayıcı olayı sıraya konulmaz.

Olay sıraları sınırlı ancak yeterli bir boyuta sahiptir, bu nedenle sıra taşması doğru bir şekilde geliştirilmiş program için olası değildir. Sıra taştığında, yeni olaylar sıraya yerleştirilmeden atılır.

Olayları yönetmek için sonsuz döngüleri kullanmamanız şiddetle önerilir. Olası istisnalar tek bir Start olayını işleyen komut dosyalarıdır.

Kütüphaneler hiç bir olayı yönetmez.