← Tüm videolar
MT5 API · 5:34

Kesintiler ve istek sınırları.

Terminali API kurtarsın, istemciyi siz yönetin.

Python örneğini indirin · PY ↓

Adım adım yazılı anlatım

  1. 0:00

    Kesintiler ve istek sınırları.

    Bu eğitimde MT5 kesintilerini ve istek sınırlarını ele alıyoruz: API'nin toparlanmasını beklemek, veri akışını yeniden kurmak ve okuma isteklerini güvenle tekrarlamak. Demo hesaptan alınmış gerçek yanıtları kullanıyoruz.

  2. 0:17

    Önce mevcut oturumu kontrol edin.

    mt5.mrpc.pro adresini açın. API anahtarını ve kayıtlı terminal id'sini saklayın. Kaydedilen ConnectState yanıtında Connected durumu ile isConnected, isAlive ve apiIsAlive alanları true görünüyor. Terminal sağlıklı. Tarayıcı bağlantısının kopması ya da tek bir isteğin başarısız olması, yeni terminal oluşturmanız gerektiği anlamına gelmez.

  3. 0:46

    Otomatik kurtarmanın tamamlanmasını bekleyin.

    MetaRPC terminal sağlığını izler ve uygun etkin oturumları aynı id ile otomatik olarak geri getirmeye çalışır. Uygulama etkilenen işlemleri duraklatmalı, Reconnect veya ConnectEx'i sürekli çağırmak yerine hizmete zaman tanımalıdır. Durumu aralıklarla kontrol edin, devam etmeden önce AccountSummary ile hesap erişimini doğrulayın. Kurtarma zaman alır; her başarısız çağrıdan hemen sonra bitmez.

  4. 1:19

    Hatanın nedenine göre hareket edin.

    Bilerek bağlantıyı kesme, süresi dolmuş oturum, askıya alma veya geçersiz kimlik bilgileri uygun müdahaleyi gerektirir. Nedeni okuyup kimlik bilgilerini güncelleyin ya da hesap sorununu çözün. Reconnect ve ConnectByToken açıkça başlatılan kurtarma araçlarıdır; her isteğin tekrar döngüsüne konmamalıdır. Uygun bir oturum hâlâ erişilemiyorsa işlemleri duraklatın ve destek ekibine hata kodunu ve zamanı iletin.

  5. 1:55

    Uygulamanın WebSocket bağlantısını kurun.

    Terminal bağlantısı ile uygulamanın WebSocket bağlantısı ayrıdır. Hesap okumaları yeniden çalışınca hatalı soketi kapatın ve kayıtlı id ile API anahtarını kullanarak OnSymbolTick'i açın. Sembol aboneliklerini geri yükleyin. Gerçek EURUSD mesajlarında bid, ask ve zaman damgaları bulunuyor. Yeni verilerin geldiğini doğrulayın ve yinelenen akışlar oluşturmayın. Sağlıklı bir akış açık kalabilir.

  6. 2:27

    Gerçek bir sınır yanıtını tanıyın.

    Bu gerçek AccountSummary ret yanıtı, sınırlandırılmış bir okuma testinde alındı. HTTP Status Code 200, API'nin yanıt verdiğini gösterir. Null olmayan error alanında TERMINAL_RATE_LIMIT_EXCEEDED vardır ve çağrının yapılmadığı belirtilir. Gözlenen sınır, terminali kullanan tüm istemciler için kayan bir dakikada üç yüz işlem dışı çağrıydı. Bu sayıyı koda sabitlemek yerine güncel sınırları kontrol edin.

  7. 3:01

    Sunucunun belirttiği süreyi bekleyin.

    Bu yanıtta error.properties içinde RetryAfterSeconds adlı anahtar-değer çifti ve 1 değeri bulunuyor. En az bir saniye bekleyin, küçük bir rastgele gecikme ekleyip okumayı tekrar deneyin. Aynı terminal kotasını kullanan diğer çalışanları da duraklatın. Yeniden reddedilirse yeni bekleme süresini uygulayın. HTTP Status Code 429 için Retry-After başlığına uyun.

  8. 3:33

    İsteklere kademeli devam edin.

    Bekleme sonrası gerçek okuma başarılı: HTTP Status Code 200, API hatası yok ve demo hesap verileri dönüyor. Birikmiş okuma isteklerini bir anda göndermeyin. Tekrarlanan bilgileri önbelleğe alın, çalışanların istek hızını birlikte yönetin ve canlı fiyatlar için OnSymbolTick kullanın. İstek sınırı beklemek için bir nedendir, terminali yeniden bağlamak için değil.

  9. 4:03

    Tekrar kurallarını açık ve sınırlı tutun.

    Python örneği yalnızca AccountSummary içindir. Geçerli bekleme süresi içeren açık sınır veya meşgul yanıtlarını rastgele gecikmeyle tekrarlar ve üç denemeden sonra durur. Diğer hatalar çağırana iletilir. Kimlik bilgilerini ortam değişkenlerinde saklayın. Kesintiler için ayrı ve sınırlı bir politika kullanın; okuma yardımcısını bağlantı komutlarına veya alım satım yöntemlerine uygulamayın.

  10. 4:35

    Önce belirsiz işlemin sonucunu öğrenin.

    Alım satım isteğinin yanıtı kaybolursa aracı kurum isteği zaten işlemiş olabilir. Otomatik kurtarma bu işlemin sonucunu söylemez. Erişim düzelince OpenedOrders ve DealsHistory'yi inceleyin. Varsa emir ve gerçekleşme biletlerini kullanın; sembol, yön, hacim ve zamanı karşılaştırın. Benzer işlemler karışabilir. Sonucu belirsiz isteği otomatik tekrar göndermek yerine beklemede tutun.

  11. 5:07

    Oturumu düzgün kapatın.

    Oturumu bilerek bitirirken abonelikleri durdurup Disconnect çağırın. Demo akışı durduruldu ve terminal kapatıldı; hiçbir alım satım değiştirilmedi. Unutmayın: uygun terminalleri MetaRPC kurtarır, istemci gerektiğinde soketini yeniler, sınırlarda bekler ve yeni işlemden önce belirsiz sonucu açıklığa kavuşturur.