MQL5'te birlikte öğrenme ve yazma - sayfa 17

 
Yedelkin :

Sleep() işlevi hakkında soru . Bu işlevi bir Expert Advisor'da kullanmanın yalnızca bu Expert Advisor'ın yürütülmesini askıya aldığını ve işlemci (çekirdek) kaynaklarını bu çekirdeğin görev listesinden sonraki görevlere aktardığını doğru anlıyor muyum? Başka bir deyişle, Sleep() işlevinin Expert Advisor'ın işlendiği iş parçacığını yavaşlatmadığı, ancak mevcut Expert Advisor ile belirli bir çekirdek tarafından alınan diğer programlar arasında bir geçiş olarak çalıştığı doğru mu?

Anladığım kadarıyla, Sleep(0)'ı ayarlarsanız geçiş yapar ve Sleep(milisaniye) ise, belirtilen milisaniye sayısı boyunca uzmanın yürütülmesi durdurulur.

Aynı zamanda, anladığım kadarıyla, her Expert Advisor bağımsız bir iş parçacığıdır, bu iş parçacıklarının her biri CPU zamanı talep eder (referansa göre, iş parçacığı durumu her 100 milisaniyede bir kontrol edilir).

Böylece, bir iş parçacığı aktif değilse, hangi nedenle olursa olsun, fikir, işlemci süresinin başka bir iş parçacığına aktarılması ve iş parçacığının "uykuya karar verdi" durumunun 100 milisaniye sonra kontrol edilmesidir.

not

Çekirdeklerin iş parçacıkları arasında dağılımı ile ilgili olarak, bu geliştiricilere kalmıştır.

 
Yedelkin :

Sleep() işlevi hakkında soru . Bu işlevi bir Expert Advisor'da kullanmanın yalnızca bu Expert Advisor'ın yürütülmesini askıya aldığını ve işlemci (çekirdek) kaynaklarını bu çekirdeğin görev listesinden sonraki görevlere aktardığını doğru anlıyor muyum? Başka bir deyişle, Sleep() işlevinin Expert Advisor'ın işlendiği iş parçacığını yavaşlatmadığı, ancak mevcut Expert Advisor ile belirli bir çekirdek tarafından alınan diğer programlar arasında bir geçiş olarak çalıştığı doğru mu?

Her uzman kendi iş parçacığında yürütülür. Sleep() bu iş parçacığını yavaşlatır. Çekirdeklere bağlanma yoktur (afinite maskesi).
 
Yedelkin :

MqlTradeResult yapısı hakkında soru. İçinde zaman alanını bulamadım - başarılı temel istek doğrulama zamanı (veya buna benzer bir şey) MqlTradeResult yapısına ek bir zaman alanı ekleme sorusunun gündeme gelip gelmediğini hatırlayan var mı? Aniden tarihe geçerse, bekleyen bir emrin çıkarılması gerekiyordu.

belirsiz istek. Eğer sipariş açılırsa açılış saatini kendi içinde saklayacaktır. Neden sunucu yanıt süresine ihtiyacınız var?
 
sergeev :
belirsiz istek. Eğer sipariş açılırsa açılış saatini kendi içinde saklayacaktır. Neden sunucu yanıt süresine ihtiyacınız var?

Siparişin akıbeti biletle takip ediliyor değil mi? Aynı zamanda, OrderSend() işlevi tarafından bir biletin döndürülmesi, bir ticaret işleminin başarılı bir şekilde yürütülmesini henüz garanti etmez. Programın mantığına göre biletimin tarihi emirler arasında görünüp görünmediğini ve yerleştirildikten sonra hangi işlemlerin yapıldığını kontrol etmem yeterli. Bunu yapmak için tarihin minimum boyutunu tarihsel önbelleğe yüklemek istiyorum - yani. sunucunun ilk isteğe yanıt verdiği andan itibaren, artık yok. Açık bir siparişin özellikleriyle çalışmanıza gerek yoktur - bunlar gereksiz kod parçaları olacaktır. Sipariş bile açılmayabilir. Bu nedenle, HistorySelect() işlevini kullanarak yakın geçmişin en uygun boyutunu (miktarını) yüklemek için sunucu yanıt süresi gerekir. "Tarihten bir emir çıkarmak" hakkında bu kadar anlaşılır mı?

Anladığım kadarıyla , MqlTradeResult yapısına ek bir zaman alanı ekleme sorusu henüz gündeme gelmedi.

 

Sleep() 'i, EA'nın iş parçacığı gecikmesinin diğer programların yürütülmesini etkilemeyecek şekilde anladım. TEŞEKKÜR.

 

Uyku() hakkında başka bir soru. Not, " Göstergeler bir arabirim iş parçacığında çalıştığı ve onu yavaşlatmaması gerektiği için Sleep() işlevi özel göstergelerden çağrılamaz " diyor. Forumu okudum, ancak aşağıdakileri anlamadım: "göstergelerden çağrılamaz" ifadesi mi - önceden ayarlanmış bir yasak mı yoksa programcıya bir öneri mi?

 
Yedelkin :

Siparişin akıbeti biletle takip ediliyor değil mi? Aynı zamanda, OrderSend() işlevi tarafından bir biletin döndürülmesi, bir ticaret işleminin başarılı bir şekilde yürütülmesini henüz garanti etmez.

ahem .... sipariş göndermekle ilgili ders kitabına bakmalısın.
 
Yedelkin :

Uyku() hakkında başka bir soru. Not, " Göstergeler bir arabirim iş parçacığında çalıştığı ve onu yavaşlatmaması gerektiği için Sleep() işlevi özel göstergelerden çağrılamaz " diyor. Forumu okudum, ancak aşağıdakileri anlamadım: "göstergelerden çağrılamaz" ifadesi mi - önceden ayarlanmış bir yasak mı yoksa programcıya bir öneri mi?

yasaklamak
 
sergeev :
ahem .... sipariş göndermekle ilgili ders kitabına bakmalısın.

Eh, anlamını anladınız. Size titizlikle söylüyorum, hafızadan kontrol edebilirsiniz: OrderSend() işlevi bir boole değeri döndürür. Bu durumda istek başarılı bir şekilde doğrulanırsa sipariş bileti MqlResult yapısının değişkenine yazılır. Kendim için buna "sipariş bileti işlevini iade etme" diyorum. İşte kaynağa bir bağlantı: " OrderSend() işleviyle bir satın alma talebi gönderirken, istek başarıyla doğrulandığında oluşturulan sipariş biletini hemen öğrenebilirsiniz ."

"Yasak" hakkındaki cevap için - teşekkürler, anlıyorum.

 
Yedelkin :

Eh, anlamını anladınız.

Ne yazık ki, hala alamadım.

nedense dönüş yapısında bir "zaman" alanına ihtiyacınız var. Görünen sırada zamanı kullanın. Bu, küçük bir geçmişi kontrol etmek için yeterlidir.

Neden: