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
Belki PositionTotal() gereklidir?
Ve eğer OrdersTotal() 'a şu anda kaç sipariş verildiğini sorarsam, pozisyonun bununla ne ilgisi var?
OnTrade()'de bu bilgiyi ne talep ediyorum, emrin var olduğu an hiçbir şekilde atlanamıyor.
Ama aslında, bu anın bir şekilde kaçırıldığı ortaya çıkıyor ve henüz düzen olmadığında veya artık olmadığında istekler geçiyor.
Ancak OnTrade()'de olduğu an hiçbir şekilde yakalanmaz veya OrdersTotal()'ın bir varyantı olarak utanmadan yalan söyler.
Kodun çarpıklığı hakkında herhangi bir şikayet olmaması için, komut dosyasını bir danışman olarak revize ettiğim MetaQuote kodu burada.
OnTrade() işlevi eklendi ve komut dosyası kodu OnInit()'e taşındı.
Tek bir baskı, sipariş olduğuna dair bir mesaj göstermedi.
Bunu yalnızca MetaTrader 5'teki İşlem Olayları makalesinde cevaplayabilirim:
Заключение
MetaTrader 5 alım satım ve analitik platformundaki tüm işlemler asenkron olarak gerçekleştirilir ve alım satım hesabındaki tüm değişikliklerle ilgili mesajlar birbirinden bağımsız olarak gönderilir. Bu nedenle, "Tek istek - Tek işlem olayı" kuralına göre tek bir olayı takip etmeye çalışmamalısınız. Trade olayının gelmesiyle tam olarak neyin değiştiğini belirlemeniz gerekiyorsa, OnTrade işleyicisinin her çağrısında, tüm anlaşmaları, pozisyonları ve siparişleri analiz etmeniz ve bunları ortaya çıkmadan önceki durumla karşılaştırmanız gerekir.Bunu yalnızca MetaTrader 5'teki İşlem Olayları makalesinde cevaplayabilirim:
Bu, yakalamaya çalıştığınız siparişin önceden HistoryOrdersTotal kullanılarak aranmış olması gerektiği anlamına gelir.Aslında bu makale ve rehberlik. Şu sorunun cevabının en altına inmek istiyorum: Bir ticaret olayı nasıl olur da emrin verildiği ancak henüz uygulanmadığı anı atlar?
İşlem olayları, aşağıdaki durumlarda sunucu tarafından oluşturulur:
OrderTotal() öğesinin hatalı olduğundan şüpheleniyorum. Ama bunu bu işlevsellikle kanıtlayamam.
Her ne kadar bir seçenek olarak, OrderTotal'ın () verileri düşündüğüm yerde (yani sunucuda değil) aldığını reddetmiyorum.
Aslında bu makale ve rehberli. Şu sorunun cevabının en altına inmek istiyorum: Bir ticaret olayı nasıl olur da emrin verildiği ancak henüz uygulanmadığı anı kaçırır?
Sadece Ticaret etkinliği geldiğinde, sipariş zaten verilmiş ve zaten yürütülmüştür. Dolayısıyla aktif olanlar arasında değil, tarihe geçti bile.
Evet, evet, düşüncelerim bu cevabın etrafında yüzüyor.
Bu şekilde cevap veririm, sipariş verildiği anda, sunucu bir "ticaret" olayı oluşturur ve terminale gönderir, terminal aldığında, koddasipariş sayısı ile ilgili bir istek yapılır, ancak bu istek sunucuya ulaştığında, sunucu bu siparişi zaten yürütmüştür.
Başka bir açıklamam yok.
İşlem olayları, aşağıdaki durumlarda sunucu tarafından oluşturulur:
OrderTotal() öğesinin hatalı olduğundan şüpheleniyorum . Ama bunu bu işlevsellikle kanıtlayamam.
Hem aktif bekleyen emirleri hem de aktif emirler listesine pozisyon açmak için emirleri dahil ettiğinizi doğru anladım mı?
Ne anlama geliyor?
... bu mesaj "Uzmanlar" sekmesinde görünür. Bu bir hata değil, bir uyarıdır. Ne hakkında uyarı?
"Hata"dan bahsetmiyorum. Bir uyarı olsun. Versiyonumu zaten bir örnekle ifade ettim. Burada başka bir tartışmaya bakın (dize sızıntıları hakkında - sayfanın sonuna kadar okuyun): https://www.mql5.com/en/forum/1111/page345#comment_54616
Durumunuzun ayrıntılarıyla birlikte SD ile iletişime geçmeniz gerekebilir.
Bir "yanlış anlama" buldum.
Derleyici neden ikinci değişkenin tanımını beğenmiyor b ?
Ve genel olarak, böyle bir durum nasıl çözülür?