Müşteri Terminali Olayları

Init #

Programların (bir Uzman Danışmanın veya özel göstergenin) müşteri terminaline yüklenmesinin hemen ardından global değişkenlerin başlatılma sürecine geçilir ve Inıt olayı, - eğer mevcutsa - OnInit() içinde işlenmesi için gönderilir. Bu olay, bir finansal enstrümanda ve/veya bir çizelgede değişiklik olduğunda, program MetaEditor'de yeniden derlendiğinde, giriş parametreleri Uzman Danışmanın veya göstergenin başlangıç penceresinden değiştirildiğinde de oluşturulur. Uzman Danışmanlar hesap değişimi yapıldığında da başlatılırlar. Init olayı scriptler için oluşturulmaz.

Deinit #

Global değişkenlerin sonlandırılmasından ve programın (Uzman Danışmanın veya özel göstergenin) kaldırılmasından sonra, müşteri terminali Deinit olayını programa gönderir. Deinit olayı ayrıca, müşteri terminali veya bir çizelge kapatıldığında, sembol ve/veya zaman aralığı değiştirilmeden önce, programın başarıyla yeniden derlenmesi durumunda, giriş parametrelerinin değiştirilmesi durumunda ve hesap değiştirildiğinde de oluşturulur.

Sonlandırma sebebi, OnDeinit() fonksiyonuna geçirilen bir parametre ile alınabilir. OnDeinit() fonksiyonunun çalışma süresi 2.5 saniye ile sınırlandırılmıştır. Fonksiyon bu süre içinde tamamlanmazsa, zorla sonlandırılır. Deinit olayı, scriptlerde oluşturulmaz.

Start

Start, bir komut dosyasını veya hizmeti yükledikten sonra başlatmak için özel bir olaydır. OnStart fonksiyonu tarafından yönetilir. Start olayı Uzman Danışmanlara ve özel göstergelere iletilmez.

NewTick #

NewTick olayı, yeni fiyat teklifleri geldiğinde oluşturulur, Uzman Danışmanlara yerleştirilen OnTick() fonksiyonu ile işlenir. OnTick fonksiyonu bir önceki fiyatı işlerken yeni bir fiyatın alınması durumunda, yeni fiyat, Uzman Danışman tarafından göz ardı edilir; söz konusu olay için bir kuyruk oluşturulmaz.

OnTick() fonksiyonunun işlemi tamamlanana kadar tüm yeni fiyatlar gözardı edilir. Sonrasında ise, fonksiyon sadece yeni bir fiyat gelirse çalışır. NewTick olayı, otomatik alım-satım iznine bakılmaksızın oluşturulur ("Otomatik alım-satıma izin ver/engelle" düğmesi). Otomatik alım-satımın engellenmesi, Uzman Danışmanın çalışması sırasında alım-satım isteği göndermesine izin verilmediği anlamına gelir.

Uygun düğmeye basılarak Otomatik alım-satımın engellenmesi, OnTick() fonksiyonunun mevcut çalışmasını durdurmaz.

Calculate #

Calculate olayı, Inıt olayının hemen ardından fiyat verisinde herhangi bir değişik olduğunda oluşturulur. OnCalculate fonksiyonu ile işlenir.

Timer #

Timer olayı, EventSetTimer fonksiyonu ile zamanlayıcıyı devreye sokan Uzman danışman için, müşteri terminali tarafından periyodik olarak oluşturulur. Bu fonksiyon genellikle OnInit içerisinde çağrılır. Timer olayı, OnTimer fonksiyonu ile işlenir. Uzman Danışman işleminin tamamlanmasının ardından, zamanlayıcının EventKillTimer fonksiyonu ile yok edilmesi gerekir, bu fonksiyon genellikle OnDeinit fonksiyonu içerisinde çağrılır.

Trade #

Trade olayı, bir alım-satım işleminin sunucu üzerinde tamamlanmasıyla oluşturulur. Trade olayı OnTrade() fonksiyonu ile, şu alım-satım işlemleri için işlenir:

  • bir bekleyen emrin gönderilmesi, değiştirilmesi veya silinmesi;
  • zaman-aşımı veya yetersiz bakiye nedeniyle bir bekleyen emrin sonlandırılması;
  • Bir bekleyen emrin aktif hale getirilmesi;
  • bir pozisyonun (tamamının veya bir kısmının) açılması, eklenmesi veya kapatılması;
  • Açık bir pozisyonun değiştirilmesi (durdurma noktalarının değiştirilmesi – Stop Loss ve/veya Take Profit).

TradeTransaction #

Alım-satım hesabı üzerinde bazı kesin işlemler gerçekleştirildiği zaman hesabın durumu değişir. Bu eylemler şunları kapsamaktadır:

  • OrderSend ve OrderSendAsync fonksiyonları kullanılarak herhangi bir MQL5 uygulamasından yapılan alım-satım istekleri ve bunların ilerideki kullanımları;
  • Terminalin grafiksel arayüzü ile yapılan alım satım istekleri ve bunların ilerideki kullanımları;
  • Sunucu üzerindeki bekleyen emir ve durdurma emri aktivasyonu;
  • İşlemlerin alım-satım sunucusu tarafından gerçekleştirilmesi.

Yukarıda sayılanlar eylemlerin sonucunda şu alım-satım faaliyetleri gerçekleşir:

  • alım-satım isteğinin işlenmesi;
  • açık emirlerin değişimi;
  • emir geçmişinin değişimi;
  • işlem geçmişinin değişimi;
  • pozisyonların değişimi.

Örneğin, bir alım emri gönderildiğinde, önce işlenir, hesap için uygun bir alım emri oluşturulur, gerçekleştirilir ve açık emir listesinden çıkarılır, sonra emir geçmişine eklenir, uygun bir işlem geçmişe eklenir ve yeni pozisyon açılır. Tüm bu eylemler alım-satım faaliyetidir. Böyle bir faaliyetin terminale ulaşımı ise TradeTransaction olayıdır. Bu olay OnTradeTransaction fonksiyonu ile işlenir.

Tester #

Tester olayı, Uzman Danışmanın tarihsel veriyle sınanmasının ardından oluşturulur. Olay OnTester() fonksiyonu ile işlenir.

TesterInit #

TesterInit olayı, strateji sınayıcıda optimizasyonun başlamasıyla, ilk optimizasyon geçişinden hemen önce oluşturulur. TesterInit olayı OnTesterInit() fonksiyonu ile işlenir.

TesterPass #

TesterPass olayı, yeni bir veri çerçevesi alındığında oluşur. TesterPass olayı OnTesterPass() fonksiyonu ile işlenir.

TesterDeinit #

The TesterDeinit olayı, strateji sınayıcıda Uzman Danışman optimizasyonunun bitmesinin ardından oluşturulur. TesterDeinit olayı, OnTesterDeinit() fonksiyonu ile işlenir.

ChartEvent #

ChartEvent olayı müşteri terminali tarafından, kullanıcının çizelge üzerinde çalışması durumunda oluşturulur:

  • klavye tuşuna basılması, çizelge penceresinin yakınlaştırılması;
  • grafiksel nesne oluşturulması
  • grafiksel nesnenin silinmesi
  • çizelgedeki bir grafiksel nesnenin tıklanması
  • grafiksel nesnenin fare ile taşıması
  • LabelEdit içindeki metin düzenleme işleminin bitmesi.

Ayrıca, EventChartCustom fonksiyonunu kullanarak herhangi bir MQL5 programından bir Uzman Danışmana gönderilebilecek, bir ChartEvent özel (kullanıcı) olayı da mevcuttur. Bu olay OnChartEvent fonksiyonu ile işlenir.

BookEvent #

BookEvent olayı Piyasa Derinliğindeki bir değişimin ardından müşteri terminali tarafından oluşturulur; OnBookEvent fonksiyonu ile işlenir. Belirtilen sembol için BookEvent olayını oluşturmak amacıyla, sembol, MarketBookAdd fonksiyonu kullanılarak bu olaya abone edilmelidir.

Belirtilen sembolün BookEvent aboneliğini sonlandırmak için, MarketBookRelease fonksiyonunun çağrılması gerekir. BookEvent olayı yayın-tipi bir olaydır - yani sadece bir Uzman Danışmanın olaya abone edilmesi yeterlidir, OnBookEvent işleyicisine sahip tüm diğer Uzman Danışmanlar da bu yayını alacaktır. Bu nedenle, işleyiciye parametre olarak geçirilen sembol isminin analiz edilmesi gerekir.

Ayrıca Bakınız

Olay işleyiciler, Programın çalışması