Mql4 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 35

 
fxsaber # :

Şimdi TÜM siparişleri BİR defada nasıl sıralayacağımı düşünüyorum.

X'ler bu tür inişler kritik sonuçlara yol açmayacak şekilde yazmaya çalışın.

Bir seçenek olarak - botları farklı hesaplara dağıtmak için. olasılık azalacak, ancak eksi çeşitlendirme ve hesap yönetiminin karmaşıklığı.

 
Andrei Trukhanovich # :

Bir seçenek olarak - botları farklı hesaplara dağıtmak için.

Ardından, örneğin gecikmelerin sona ermesini yasaklayın. Genel olarak, bir koltuk değneği.

Böyle üzücü bir özelliğe sahip temel bir gereklilik. Görünüşe göre, anlık görüntüler aracılığıyla bir şekilde yapmak.

 
fxsaber # :

Detaylı cevap için teşekkürler! Şimdi TÜM siparişleri BİR defada nasıl sıralayacağımı düşünüyorum.

ilk ve son siparişi (bilet) hatırlayabiliyor musunuz?

ve döngünün bitiminden sonra, ilk ve son siparişlerin saymadan önceki ile aynı biletlere sahip olduğunu kontrol edin.

   int n  = OrdersTotal ();
   
   if (n == 0 ) return ( 0.0 );
   else if (n == 1 && OrderSelect ( 0 , SELECT_BY_POS)) return (OrderLots());
   
   int t_last = OrderSelect (n - 1 , SELECT_BY_POS) ? OrderTicket() : - 1 ;
   int t_first = OrderSelect ( 0 , SELECT_BY_POS) ? OrderTicket() : - 1 ;


Not: mantıksal olarak, OrderSelect() böyle bir çarpışmadan sorumlu olmalıdır - sipariş tablosu değiştiyse false döndür, ancak forumda bir yerde birinin OrderSelect()'in yanı sıra işleyicilerin de false döndürdüğünü okuduğumu hatırlamıyorum bile OrderSelect() hatalarıyla da karşılaşmayın

 
Igor Makanu # :

ilk ve son siparişi (bilet) hatırlayabiliyor musunuz?

Bilet sırasının tam olarak ezberlenmesi olmadan, böyle bir çözüm başarısız olacaktır.

 
fxsaber # :

Bilet sırasının tam olarak ezberlenmesi olmadan, böyle bir çözüm başarısız olacaktır.

ve biletlerin tam olarak ezberlenmesi de başarısız olacaktır, çünkü döngü boyunca ilerlerken, halihazırda işlenmiş olan siparişlerin durumu değişebilir


Kesinlikle emin değilim, ancak döngüdeyken sıra kapanırsa, OrderTotal() değişecektir.

bir sipariş kapanır ve yenisi açılırsa, bilet değişir ve/veya OrderSelect(0) veya OrderSelect(OrderTotal()-1)


Ve sizce, eski "aşırı emirler" ve OrderTotal()'ın kendisinin kalması için hangi durum olabilir?

 
Igor Makanu # :

Ve sizce, eski "aşırı emirler" ve OrderTotal()'ın kendisinin kalması için hangi durum olabilir?

Büyük olasılıkla, OrdersTotal, sipariş tablosunu sallarken değişecektir.

Ve böylece ek bir pozisyon yaratarak limit emrini tamamlamak mümkündür.

 
Igor Makanu # :

ilk ve son siparişi (bilet) hatırlayabiliyor musunuz?

ilkini hatırlamak hiçbir şey yapmaz

 
fxsaber , işlev çağrısından ÖNCE ve SONRA var olan bir sırayı atlamasının teorik bir olasılığı var mı? Veya iki kez sayın.

Onlar. Bir sipariş silindiğinde veya numaralandırma sırasında göründüğünde indekslemeye ne olur?

Bir dizi bilet topluyorum ve onunla çalışıyorum.
Sipariş Toplamı, Bakiye veya Marj'da bir değişiklik olduysa, listeyi yeniden oluşturmanız gerekir.

yani, EA her zaman yalnızca kendi seçilmiş biletleriyle çalışır

 
Andrei Trukhanovich # :

ilkini hatırlamak hiçbir şey yapmaz

bunlar, mimarinin uygulanmasının belgelenmemiş ve gelecekte kimsenin garanti edemediği özelliklerdir ...

konuya göre, OrderTotal() ve OrdersHistoryTotal() öğelerini ve aşırı siparişlerin biletlerini hatırlayın

döngüdeki hesaplamalardan sonra bu değerler değiştiyse, o zaman işliyoruz


ancak evrensel ve güvenilir bir çözüm olamaz, buradaki görev sunucuda ne olacağını, verilerin ağ üzerinden nasıl teslim edildiğini ve terminaldeki komşu grafiklerde neler olduğunu tahmin etmektir))))


umut edilecek tek şey OrderSelect'in () hızıdır - eğer doğru hatırlıyorsam, saniyede bir milyondan fazla çağrı

 
fxsaber # :

Bilet sırasının tam olarak ezberlenmesi olmadan, böyle bir çözüm başarısız olacaktır.

Hatırlamak pahalı olmayabilir, ancak tam bir durumu izlemek pahalı olabilir. Öncekilere katılıyorum, rasyonellik ve öncelikler mantığıyla yükü azaltın.

İçinde yaşadığımız asenkron dünya, taleplerin sırasına verilen yanıtların sırasını garanti etmez ve genel olarak düzeni garanti etmez.
Neden: