EA'm çift giriş yapıyor - sayfa 10

 
angevoyageur : Ne demek istediğini anladığımdan emin değilim. Bu başlıkta bahsettiğimiz bu sorun, kötü bir kodlamadan değil, mql5'teki kötü bir tasarımdan kaynaklanıyor (bu benim görüşüm, ya da belki de sadece bir hata mı?). "Birden fazla ticaret dizisi" ile ne demek istiyorsunuz?

Geri döndüm ve kötü tasarım olarak kabul ettiğiniz şeyi yeniden okudum.

Old-mt4 içinde bu sınıf mevcut değildir. İçinde Başarılı_Siparişleri kontrol etmenin normal yöntemi Ticket#==(-1) && GetLastError()'dur. Siparişinizin geçerli bir bilet# ve GLE=0 döndürdüğü bir durum hiç görmedim. Ancak bir sonraki onay işaretinde, OrdersTotal() öğeniz hala 0 döndürür.

Şimdi, mql5 belgelerinin tamamını incelemediğimi unutmayın. Ancak, PositionSelect_Information'ın daha sonra güncellenmediğini söylerse. Ve birisi giriş mantığını değerlendirmek için PositionSelect'i kullanıyor. Daha sonra bu kişi OrderSend Mantığı'ndan çıkmadan önce PositionSelect_Information'ın güncellenmesini beklemelidir.

İplik konusu için... Emir göndermek için birden fazla iş parçacığına karşı tek dişliden bahsediyordum. Aynı anda açılan eşzamanlı siparişlerde olduğu gibi. Burada alakalı olabilir veya olmayabilir.

 
Ubzen :

Geri döndüm ve kötü tasarım olarak kabul ettiğiniz şeyi yeniden okudum.

Old-mt4 içinde bu sınıf mevcut değildir. İçinde Başarılı_Siparişleri kontrol etmenin normal yöntemi Ticket#==(-1) && GetLastError()'dur. Siparişinizin geçerli bir bilet# ve GLE=0 döndürdüğü bir durum hiç görmedim. Ancak bir sonraki onay işaretinde, OrdersTotal() öğeniz hala 0 döndürür.

Şimdi, mql5 belgelerinin tamamını incelemediğimi unutmayın. Ancak, PositionSelect_Information'ın daha sonra güncellenmediğini söylerse. Ve birisi giriş mantığını değerlendirmek için PositionSelect'i kullanıyor. Daha sonra bu kişi OrderSend Mantığı'ndan çıkmadan önce PositionSelect_Information'ın güncellenmesini beklemelidir.

İplik konusu için... Emir göndermek için birden fazla iş parçacığına karşı tek dişliden bahsediyordum. Aynı anda açılan eşzamanlı siparişlerde olduğu gibi. Burada alakalı olabilir veya olmayabilir.

PositionSelect ile ilgili belgeler "daha sonra güncellenmez" hakkında hiçbir şey söylemez. Sadece PositionSelect doğru olsa bile, bir Pozisyonla ilgili bilgiler güncelliğini yitirebilir, bu da buradaki sorununuzla ilgili değil.

Aptalca bir şey söylememek için piyasa açıldığında bazı testler yapmak için zaman ayıracağım , daha sonra daha eksiksiz cevap.

 
angevoyageur :

PositionSelect ile ilgili belgeler "daha sonra güncellenmez" hakkında hiçbir şey söylemez. Sadece PositionSelect doğru olsa bile, bir Pozisyonla ilgili bilgiler güncelliğini yitirebilir, bu da buradaki sorununuzla ilgili değil.

Aptalca bir şey söylememek için piyasa açıldığında bazı testler yapmak için zaman ayıracağım , daha sonra daha eksiksiz cevap.

K..... ve btw, belge hiçbir şey söylemiyorsa, o zaman size tamamen katılıyorum.

Service_Desk'e en sonunda soracağımız soru şudur: "Trade.PositionOpen()==true iken Position_Information'ı neden güncelleyemiyorsunuz?"

Muhtemelen bizim için iyi bir cevapları olacak .

 
angevoyageur :

Hayır. Ben sadece bunu düşünüyordum... İlgili tüm kişilerin bu konu hakkında ServiceDesk'e bir bilet yazması muhtemelen faydalı olacaktır. Ancak MQ'nun bu tasarımı değiştirmeye istekli olup olmadığı konusunda çok şüpheliyim. Ama deneyebiliriz.

İnsanlar ServiceDesk'e yazabilir ve bileti# burada bildirebilir. Benimki

Hatalar , MetaTrader 5 MQL , , Başlangıç: 2013.12.23 19:08 , #916435


Servis masasına da bilgi verdim, #933192 | 2014.01.19 14:44

 

MQ aslında bunu bir zaman aşımı işlevine sahip olacak şekilde kolayca yeniden tasarlayabilir mi?

Cevap yok gibi, o zaman bir hata alacağız, bunun gibi bir şey mi?

 
doshur :

MQ aslında bunu bir zaman aşımı işlevine sahip olacak şekilde kolayca yeniden tasarlayabilir mi?

Cevap yok gibi bir hata alacağız, bunun gibi bir şey mi?


Tam tersini yaptılar. mql5 oluşturulduğunda , PositionSelect gibi bir işlev için bir zaman aşımı parametresi vardı .

Ancak daha sonra kaldırırlar, burada 9. maddeye bakın https://www.mql5.com/en/forum/53/page5#comment_14479

 

Kötü bir tasarımın argümanlarına katılıyorum, ancak bence MQL5 ile ilgili ana sorun, başarılı bir Forex tabanlı kodu borsalarda olduğu gibi çalışacak şekilde uyarlamaktı (gerçekten harika bir şey).

Örneğin birçok borsa standart olarak FIX protokolünü kullanıyor ve benim için bu iletişim protokolünün herhangi bir koda veya mimariye uyarlanması kolay değil.

Her neyse, MQ adamlarının bir zaman sorunu yaşadıklarına ve MQL5'i sıfırdan değil, MQL4'e dayalı olarak oluşturmaları gerektiğine inanıyorum. O yıl şampiyonanın daha fazla zamanları olduğu için askıya alındığını hatırlıyorum.

Bu nedenle, belki de bu konu, gelecekteki MQL6 ve sıfırdan gerçekten yeni bir mimari için, özellikle işlem esnekliği ve herhangi bir pazarda çalışmak için agnostik çözümlerle ilgili olarak harika bir tavsiye olabilir.

 
doshur :

MQ aslında bunu bir zaman aşımı işlevine sahip olacak şekilde kolayca yeniden tasarlayabilir mi?

Cevap yok gibi, o zaman bir hata alacağız, bunun gibi bir şey mi?

Geleneksel olarak, TimeOut, siparişin bir pozisyon olmayacağı anlamına gelmez. Uzun bir süre beklemeniz gerekecek .. bunun bir pozisyon olup olmadığını kontrol etmek ... ve emrin yerine getirilmemesi durumunda ticareti askıya almak zorunda kalacaksınız.

Bence MQ, bunun bir programcı hatası olduğu konusunda Figelli'nin tarafını tutacaktır. Çünkü trade.PositionOpen'ın üzerine inşa edildiği işlevler , başka şeyleri kontrol etmeniz gerektiğini açıkça belirtir.


****** (Kişisel Ajanda ekleme ... bu noktada okumayı bırakabilirsiniz) ********

Yeni programcıları mql_forum'da onlara yardım ederken İşlev ve Dönüş Değerleri hakkında aramamamın nedeni budur. Her zaman aşağıdakileri yapın demenin bir anlamı yok.

if( OrderSend()<0 ) { Print( GetLastError() ); }

Bunun otomatik bir tüccar olduğu varsayılıyor ... uzakta olabilirsiniz ... ve Print() ne işe yarıyor?

Aklımda, Error_Handling ve Error_Reporting 2_çok farklı canavarlar. Bir Hatayı İşlemenin uygun yollarını açıklamaya çalışmak sayfalar alabilir ve Tüccar için kaç kez yeniden denemeleri gerektiği veya ticareti sonlandırmaları gerekse bile çok kişiseldir.

**** Şimdi, bir acemi bir EA kodluyorsa ve Ticarette sorun yaşıyorsa... Yazdırılmaması gerektiğini söylemiyorum( GetLastError(); ) <- Bu açık olmalı. Ama eğer onlara her zaman Get_Error'ı söyleyeceksem, o zaman onlara her zaman Handle_Error'ı da söylemeliyim. *** Gündemin Sonu. ****

 
angevoyageur :


Tam tersini yaptılar. mql5 oluşturulduğunda , PositionSelect gibi bir işlev için bir zaman aşımı parametresi vardı .

Ancak daha sonra kaldırırlar, burada 9. maddeye bakın https://www.mql5.com/en/forum/53/page5#comment_14479

Onu canlandırmanın zamanı geldi mi?
 
doshur :
Onu canlandırmanın zamanı geldi mi?

Öyle düşünmüyorum. Senkronize bir ticaret talebi, tüm yönleriyle senkronize olmalıdır. Bu kadar basit.

Burada istek senkronizedir, ancak daha sonra asenkron şeyleri yönetmeniz gerekir. Ve bununla ilgili hiçbir şey belgelenmemiştir.