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
uyku kullanırsam kene kaybeder miyim?
sonuçları ne olacak? benimle paylaşabilir mi?
uyku kullanırsam kene kaybeder miyim?
sonuçları ne olacak? benimle paylaşabilir mi?
Stratejinize bağlı. "Çifte işlem" ile ilgili bu sorun, yalnızca işlem kodunuz her bir işarette çalıştırıldığında ortaya çıkabileceğinden, muhtemelen işarete bağlı bir stratejiniz vardır. Bu nedenle, gecikmeniz (uyku) sırasında gelen keneleri kaybederseniz, sonucun ne olabileceğini değerlendirmek size kalmış.
Stratejinize bağlı. "Çifte işlem" ile ilgili bu sorun, yalnızca işlem kodunuz her bir işarette çalıştırıldığında ortaya çıkabileceğinden, muhtemelen işarete bağlı bir stratejiniz vardır. Bu nedenle, gecikmeniz (uyku) sırasında gelen keneleri kaybederseniz, sonucun ne olabileceğini değerlendirmek size kalmış.
Yani eğer 800 için uyursam
sonraki 800ms için keneleri kaybettiğim anlamına mı geliyor? Ticaretime girdikten sonra, EA'm hiçbir şey yapmıyor, sadece TP veya SL'ye kadar orada oturuyor veya çıkmak için zamanın gelmesini bekliyor.
Yani uyku kullanırsam stratejim tamam mı?
refreshrates() işlevini çağırmak keneleri geri alır mı?
Yani eğer 800 için uyursam
sonraki 800ms için keneleri kaybettiğim anlamına mı geliyor? Ticaretime girdikten sonra, EA'm hiçbir şey yapmıyor, sadece TP veya SL'ye kadar orada oturuyor veya çıkmak için zamanın gelmesini bekliyor.
Yani uyku kullanırsam stratejim tamam mı?
refreshrates() işlevini çağırmak keneleri geri alır mı?
doshur, keneler seni gevşetir, sen kaybedersin, geri dönüş makinesi yoktur.
https://www.mql5.com/en/docs/common/sleep adresindeki belgelerle ilgili olarak, işlev , geçerli Uzman Danışmanın veya komut dosyasının belirli bir aralıkta yürütülmesini askıya alır.
Bu nedenle, muhtemelen EA yalnızca bir iş parçacığı kullandığı için OnTimer olayları bile askıya alınacaktır.
Bu nedenle, sabit bir uyku kullanın Uyku kesin bir çözüm değildir, yalnızca "numeroloji"dir, yani gecikme değerinizden düşükse bir geçici çözümdür.
Ve bu nedenle, pozisyonu açtıktan sonra, PositionOpen uygulamasını iki kez kontrol etmek ve sadece Sleep()'ten daha iyi bir geçici çözüm olarak geri dönmek için PositionSelect'i bir döngü testi öneriyorum ve bu aynı zamanda sorunun nedenini de düzeltiyor ( angevoyageur testlerine göre).
Şimdi kullandığım şey bu. Figurelli tarafından sağlanan geçici çözümü daha zarif bir şekilde nereye kodlamalıyım?
Şimdi kullandığım şey bu. Figurelli tarafından sağlanan geçici çözümü daha zarif bir şekilde nereye kodlamalıyım?
Merhaba doshur, EA'larımdan birinde çift girişle ilgili sorunlar da yaşıyordum. Aslında bu sorunlar sadece ben yüksek likiditeye sahip varlıklarla işlem yaparken ortaya çıkıyordu. Eşzamansız modda gönderilecek siparişleri ayarladıktan sonra bile, EA "görünüşe göre" bir sunucu yanıtının PositionsTotal()'ı güncellemesi için çok uzun süre bekliyordu... bu arada, gelen diğer onay işaretleri ikinci bir sipariş göndermek için koşulları tetikliyordu... Portekiz forumunda burada paylaşmak istediğim bir geçici çözüm yayınladım.
Fikir basit:
Bu kodla ilgili tek sorun, siparişin sunucu tarafından kabul edilmemesidir, bu nedenle global değişkeni "sıfırlamanız" gerekir... Bunu kullanabilirsiniz:
Bu nedenle, gönderilen ilk siparişin bir hata vermesi durumunda, EA'nın başka bir sipariş gönderebilmesi için global değişken false olarak ayarlanır. Ancak şunu söylemeliyim ki bu kodu sadece hisse senedi ve vadeli işlemlerde test ettim forex piyasasında denemedim... :-(
Merhaba doshur, EA'larımdan birinde çift girişle ilgili sorunlar da yaşıyordum. Aslında, bu sorunlar sadece yüksek likiditeli varlıklarla işlem yaparken ortaya çıkıyordu. Eşzamansız modda gönderilecek siparişleri ayarladıktan sonra bile, EA "görünüşe göre" bir sunucu yanıtının PositionsTotal()'ı güncellemesi için çok uzun süre bekliyordu... bu arada, gelen diğer onay işaretleri ikinci bir sipariş göndermek için koşulları tetikliyordu... Portekiz forumunda burada paylaşmak istediğim bir geçici çözüm yayınladım.
Fikir basit:
Bu kodla ilgili tek sorun, siparişin sunucu tarafından kabul edilmemesidir, bu nedenle global değişkeni "sıfırlamanız" gerekir... Bunu kullanabilirsiniz:
Bu nedenle, gönderilen ilk siparişin bir hata vermesi durumunda, EA'nın başka bir sipariş gönderebilmesi için global değişken false olarak ayarlanır. Ancak şunu söylemeliyim ki bu kodu sadece hisse senedi ve vadeli işlemlerde test ettim forex piyasasında denemedim... :-(
Bu uygulanabilir görünüyor. Figürlü ve angevoyageur'un bu geçici çözüm hakkında herhangi bir yorumu olup olmadığını görelim ...
Malacarne tarafından önerilen bu çözüm (önereceğim bazı ayarlamalarla birlikte) harika, çünkü benim için bir geçici çözüm değil (Malacarne'in mütevazı bir şekilde ifade ettiği gibi), bu soruyu ele almanın zarif ve doğru bir yolu.
Benim düşünceme göre, orijinal çift giriş sorunu bir MT5 hatası değil, yardımda belirtildiği için bir kodlama hatasıdır:
" PositionOpen(...) yönteminin başarıyla tamamlanması, her zaman ticaret işleminin başarılı bir şekilde yürütülmesi anlamına gelmez . ResultRetcode() ve ResultDeal() tarafından döndürülen değeri kullanarak ticaret isteğinin (ticaret sunucusu dönüş kodu) sonucunu kontrol etmek gerekir. "
Bu nedenle, herhangi bir piyasa koşuluna daha dayanıklı olmak için bazı küçük değişiklikler öneriyorum:
1) Test PostionOpen() de orijinal kod olarak geri döner, örneğin:
2) 10010 - TRADE_RETCODE_DONE_PARTIAL gibi diğer ilgili gönderileri açabileceğiniz için, ResultRetcode()'un daha eksiksiz bir tedavisi - İsteğin yalnızca bir kısmı tamamlandı. Ayrıca, 10008 - TRADE_RETCODE_PLACED - Verilen sipariş benim için Başarılı değil, sadece 10009 - TRADE_RETCODE_DONE - İstek tamamlandı ve bunlar asenkron mesajlardır, dolayısıyla Malacarne kodunun ikinci kısmı anlaşma yapıldıktan sonra bu ve/veya d eal biletini dikkate alabilir, fazla.
Neyse bana öyle geliyor ki artık doğru yoldayız ve son noktayı koyduk.
Merhaba doshur, EA'larımdan birinde çift girişle ilgili sorunlar da yaşıyordum. Aslında, bu sorunlar sadece yüksek likiditeli varlıklarla işlem yaparken ortaya çıkıyordu. Eşzamansız modda gönderilecek siparişleri ayarladıktan sonra bile, EA "görünüşe göre" bir sunucu yanıtının PositionsTotal()'ı güncellemesi için çok uzun süre bekliyordu... bu arada, gelen diğer onay işaretleri ikinci bir sipariş göndermek için koşulları tetikliyordu... Portekiz forumunda burada paylaşmak istediğim bir geçici çözüm yayınladım.
Fikir basit:
Bu kodla ilgili tek sorun, siparişin sunucu tarafından kabul edilmemesidir, bu nedenle global değişkeni "sıfırlamanız" gerekir... Bunu kullanabilirsiniz:
Bu nedenle, gönderilen ilk siparişin bir hata vermesi durumunda, EA'nın başka bir sipariş gönderebilmesi için global değişken false olarak ayarlanır. Ancak şunu söylemeliyim ki bu kodu sadece hisse senedi ve vadeli işlemlerde test ettim forex piyasasında denemedim... :-(
Bu geçerli bir yaklaşımdır, ancak pozisyonunuz kapalıyken pozisyon_opened global değişkeninizi false olarak sıfırlamanız gerekir. Bunu nerede yapıyorsun?
Uygulamanız hakkında bazı ayrıntılar:
İşte değiştirilmiş kod ( Derlenmiş ancak test edilmemiştir ):
...
Benim düşünceme göre, orijinal çift giriş sorunu bir MT5 hatası değil, yardımda belirtildiği için bir kodlama hatasıdır:
" PositionOpen(...) yönteminin başarıyla tamamlanması, her zaman ticaret işleminin başarılı bir şekilde yürütülmesi anlamına gelmez . ResultRetcode() ve ResultDeal() tarafından döndürülen değeri kullanarak ticaret isteğinin (ticaret sunucusu dönüş kodu) sonucunu kontrol etmek gerekir. "
Bu konu ile alakalı olduğunu düşünmüyorum. Aldığımız sorun, bir talebin başarıyla doldurulması ve bir pozisyonun açılması durumundadır. Ancak bu pozisyon ticaret sunucusunda açılır, karşılaştığımız sorun, her zamanki gibi daha önemli bir gecikme olduğunda ve MT5 terminaline yeni bir tick işlendikten SONRA bu yeni pozisyondan haberdar edilir.
Bu şekilde tasarlandığı için bir bug değildir. AMA bence açıkça senkronize ve asenkron ticaret isteklerine izin veren bir platform için zayıf tasarlanmış. Burada senkron olması gereken bir istekten bahsediyoruz, ama aslında bu istek için sunucudan yanıt aldığınızda olduğu gibi (yukarıdaki kodda trade.ResultRetCode) hala MT5'i beklemek zorunda olduğumuz için gerçekten senkronize değil. işlem sonuçları hakkında bilgi sahibi olmak ve güncellenmek için platform. (Bu konu ile hepsini anladım).
Bu nedenle, herhangi bir piyasa koşuluna daha dayanıklı olmak için bazı küçük değişiklikler öneriyorum:
1) PostionOpen() işlevinin de orijinal kod olarak geri dönmesini test edin, örneğin:
2) 10010 - TRADE_RETCODE_DONE_PARTIAL gibi diğer ilgili gönderileri açabileceğiniz için, ResultRetcode()'un daha eksiksiz bir tedavisi - İsteğin yalnızca bir kısmı tamamlandı. Ayrıca, 10008 - TRADE_RETCODE_PLACED - Verilen sipariş benim için Başarılı değil, sadece 10009 - TRADE_RETCODE_DONE - İstek tamamlandı ve bunlar asenkron mesajlardır , bu nedenle Malacarne kodunun ikinci kısmı anlaşma yapıldıktan sonra bu ve/veya d eal biletini dikkate alabilir, fazla.
Neyse bana öyle geliyor ki artık doğru yoldayız ve son noktayı koyduk.