Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bana göre tam olarak öyle, sadece işlevler aracılığıyla uygulanır.
anladım. kodunuzda, MK'de olduğu gibi - OrderCheck ve OrderSend arasında, kullanıcı tarafından bir hata işleme katmanı vardır.
Bana göre tam olarak öyle, sadece işlevler aracılığıyla uygulanır.
OrderCheck, OrderSend içinde örtük ve zorunlu olarak kontrol edilir.
Yani sipariş yanlış doldurulursa, yanıt sunucuya gönderilmeden hemen geri dönecektir.
Bakalım kılavuz bu konuda ne diyor:
İlk seçim: işlevin, çeklerle ilgili bir kelime değil, ticaret işlemlerini gerçekleştirmeye yönelik olduğunu görüyoruz.
Çekler var diyorsam doğrudur.
Tek bir uygulama bile terminali sıkı kontroller olmadan terk etmez.
İkinci seçim: Kontrollerin sunucu üzerinde yapıldığını görüyoruz ve isteği sunucuya göndermeden önce kontrol etmek için geliştiriciler OrderCheck() işlevini kullanmanızı tavsiye ediyor. Ve yine, OrderSend() fonksiyonunun herhangi bir kontrol gerçekleştirdiğine dair bir kelime yok.
Özellikle tüccarların siparişin doğru bir şekilde doldurulup doldurulmadığını önceden öğrenme ve uygun önlemleri alma fırsatına sahip olmalarını öneririz.
Kim ister - önceden kontrol edebilir. İstemiyorsanız, yine de onun için kontrol edeceğiz ve benzer cevaplar vereceğiz.
Talebi göndermeden önce kontrolden bahsedildiği tek yer "Yapıların temel kontrolünün başarılı olması durumunda (kontrol işaretçileri) ...". Ancak hata istek yapısının işaretçilerini kontrol etmek ve alan değerlerini kontrol etmek aynı şey değildir. Ve geliştiricilerin OrderCheck() işlevini kullanma önerisi, OrderSend()'in sunucuya bir istek göndermeden önce gerçek hata denetimi gerçekleştirmediğinin dolaylı kanıtıdır. Aksi takdirde, neden "tereyağı yağı": önce OrderSend() kontrolleri ve ardından aynı kontrolün OrderCheck() kullanılarak tekrar yapılması gerekiyor?
Bu nedenle, kesin cevap, kontrolün yalnızca sunucuda gerçekleştirildiği dizinden gelir!
Sunucuya yapılan hatalı veya aşırı istek akışını kimse kaçırmaz.
Bunu anlamak için temel mantık yeterlidir. Belgeleri genişletelim.
sende yok tüm hatalar iş mantığı tarafından ele alınır.
Sahibim. İş mantığı, iş mantığıyla ilgili olayları (örneğin, sipariş verme hatası) işler, ancak geri kalan her şey (örneğin, sunucu yanıt gecikmesi), kesinlikle herhangi bir Uzman Danışmanın uygulanabileceği evrensel bir şablon tarafından işlenir. .
Ancak MT5, dönüş kodları + eşzamansızlık işleme açısından çok daha zordur.
Bahsettiğimiz şey bu, daha önce de benzer şekilde yazdığım gibi ve bu konuda sıfır bilgi var. Ve MK yıllardır mümkün olan her şekilde kendisini onun hükmünden ayırmaya çalışıyor. Bunun hakkında yazdım - bir ürün, bir tahliyeye yol açan anların olduğu bayiler için faydalıdır, yani. MQ için bu, satışları artıran bir faktördür. Ne yazık ki, yoldaşların değil rakiplerin (biz ve MQ) olduğu bir pazardayız.
Bir paketleyiciden imkansızı istiyorsun. Standart kitaplık iş mantığı değildir. Bu, terminalin işlevleri "üzerinde" bir sarıcıdır. Şeker dolgusu üzerine sarıcı.
O zaman böyle bir yapısal tasarımda çok az anlam var.
Yazdır işlevi gibi, boş disk alanını garanti edemez. Ve günlük hataları. Bunu yapmak için, diğer işlevlerin hata işlemesini kullanmanız gerekir ve bunlar durumlara özeldir.
Doğru paketleyici bile her şeyi garanti edemez, ancak birçok ilgili işlev bunu garanti edebilir.
Zaten belirli hakkında tekrar tekrar yazdı. MQ hazır bir çözüm sağlayamıyorsa, en azından hataların ele alınması ve kodların döndürülmesi için bir kılavuz yapmalarına izin verin. Mümkün olan her şekilde kilidi açıldı. Dördünün belgelerinde, bu kısmen mevcuttu (örneğin, böyle bir durumda 30 saniye bekleyin), kısmen kullanıcılar belgelenmemiş durumların işlenmesini deneyimlerinden belirledi. 5 için bir şey yok. Ve eğer öyleyse, kimse kullanmayacak.
Eh, MQ bu şekilde cevap verirse, çünkü yeni oluşturulan ticaret altyapısı temelde buna izin vermiyor, o zaman ne diyebilirim - bu, inanılmaz bir yığın başka pervaz olduğu göz önüne alındığında, tüm MT5 projesinin tam bir başarısızlığıdır.
İsterseniz, her bir iade kodunu inceleyebilir ve olası ana durumlara bakabilirsiniz.
Bunu sizin gibi MQL5 konusunda deneyimli bir kişiyle yapmayı çok isterim, zaman ve gerekliliğin müsait olmasını bekleyelim. Tanrıya şükür, birçok planda çok daha uygun olan 4 tane daha var.
-Alexey- :
hazır bir çözüm, en azından hataları ve dönüş kodlarını ele almak için bir kılavuz
hangi kod işleme sorunlarına neden olur?
kod
tanımlayıcı
Tanım
10004
TİCARET_RETCODE_REQUOTE
yeniden alıntı yap
10006
TİCARET_RETCODE_REJECT
Talep reddedildi
10007
TRADE_RETCODE_CANCEL
Tacir tarafından iptal edilen talep
10008
TRADE_RETCODE_PLACED
sipariş verildi
10009
TRADE_RETCODE_DONE
Başvuru tamamlandı
10010
TRADE_RETCODE_DONE_PARTIAL
Başvuru kısmen tamamlandı
10011
TİCARET_RETCODE_ERROR
İstek işleme hatası
10012
TRADE_RETCODE_TIMEOUT
Zaman aşımı nedeniyle istek iptal edildi
10013
TRADE_RETCODE_INVALID
Geçersiz istek
10014
TRADE_RETCODE_INVALID_VOLUME
İstekte yanlış hacim
10015
TRADE_RETCODE_INVALID_PRICE
Talepte yanlış fiyat
10016
TRADE_RETCODE_INVALID_STOPS
İstekte yanlış duraklar
10017
TRADE_RETCODE_TRADE_DISABLED
ticaret yasak
10018
TRADE_RETCODE_MARKET_CLOSED
piyasa kapalı
10019
TRADE_RETCODE_NO_MONEY
İsteği yerine getirmek için yeterli para yok
10020
TRADE_RETCODE_PRICE_CHANGED
Fiyatlar değişti
10021
TRADE_RETCODE_PRICE_OFF
İsteği işlemek için teklif yok
10022
TRADE_RETCODE_INVALID_EXPIRATION
İstekte geçersiz sipariş son kullanma tarihi
10023
TRADE_RETCODE_ORDER_CHANGED
Sipariş durumu değişti
10024
TRADE_RETCODE_TOO_MANY_REQUESTS
Çok sık istekler
10025
TRADE_RETCODE_NO_CHANGES
İstekte değişiklik yok
10026
TRADE_RETCODE_SERVER_DISABLES_AT
Otomatik ticaret sunucu tarafından yasaklanmıştır
10027
TRADE_RETCODE_CLIENT_DISABLES_AT
Otomatik ticaret, müşteri terminali tarafından yasaklanmıştır
10028
TRADE_RETCODE_LOCKED
İstek işlenmek üzere engellendi
10029
TİCARET_RETCODE_FROZEN
Sipariş veya pozisyon donduruldu
10030
TRADE_RETCODE_INVALID_FILL
Bakiyeye göre desteklenmeyen bir emir yürütme türü belirtildi
10031
TRADE_RETCODE_CONNECTION
Ticaret sunucusuna bağlantı yok
10032
TRADE_RETCODE_ONLY_REAL
İşleme yalnızca gerçek hesaplar için izin verilir
10033
TRADE_RETCODE_LIMIT_ORDERS
Bekleyen emir sayısı sınırına ulaşıldı
10034
TRADE_RETCODE_LIMIT_VOLUME
Bu sembol için emir ve pozisyon hacmi sınırına ulaşıldı
Örneğin 10004. Ne yapılacağı nerede yazıyor? Ve dördüncü belgelerde en azından bir şey vardı:
Можно без задержки обновить данные при помощи функции RefreshRates и повторить попытку. Если ошибка не исчезает, необходимо прекратить все попытки торговых операций и изменить логику программы.
hangi kod işleme sorunlarına neden olur?
10006 (hangi nedenle reddedildi, diğer kodlarda belirtilmeyen başka hangi nedenler olabilir?)
10011, 10013, 10028
10006 (hangi nedenle reddedildi, diğer kodlarda belirtilmeyen başka hangi nedenler olabilir?)
10011, 10013, 10028
Meslektaşlar, zaten gerçeği aramaktan bıktı. Konu benim ihtiyacım olana benziyor, bu yüzden buraya yazıyorum, yardım istiyorum!
Anında yürütme ile bir emir veririm, her tıkta kilitlenirken, fiyatı kontrol ederim ve mümkünse onu izlerim. Ama nedense her zaman 10013 hatası dönüyor.Olası tüm forumlara baktım ve ilk sıradaki hemen hemen tüm satırları ekledim (açıklama bu tür bir eylem için yalnızca bir sembol, eylem ve sl ve tp'nin yeterli olduğunu söylese de) . Hiçbir şey yardımcı olmaz! İşte kod.