Sonsuza kadar harika ve korkunç MT4 (veya bir geçiş stratejisinin nasıl doğru bir şekilde geliştirileceği) - sayfa 13
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
İşte belgelerden:
" Bu işlemlerin terminale ulaşma sırası garanti edilmez, bu nedenle alım satım algoritmanızı diğerlerinin gelmesinden sonra bazı alım satım işlemlerinin gelmesini beklemek üzerine kuramazsınız. " https://www.mql5.com/ ru/docs/event_handlers/ontradetransaction
Ve deneyime göre, TRADE_TRANSACTION_ORDER_DELETE , TRADE_TRANSACTION_DEAL_ADD , TRADE_TRANSACTION_HISTORY_ADD işlemleri herhangi bir sırayla gelebilir.
Bu nedenle, tarihte henüz anlaşma ve emir olmadığı, ancak artık emir olmadığı durumlar ortaya çıkar. Ya da tam tersi, hala bir sipariş var ama zaten bir anlaşma var. Bu sadece düzenin hem güncelde hem de tarihte olduğu bir durum, pek mümkün değil.
Olayları yakalamam, resmin tamamına yeni bir kene ile bakarım.
Aslında, bu yüzden CTrade sınıfını kullanmayı reddetti - tüm bu komisyonun üzerine basıyor.
Mücadele yolu - her danışman emirlerinin bir listesini tutar ve durumlarını izler. dahil "standart dışı" - "sipariş gönderildi, ancak aktif olanlarda henüz görünmedi" (burada iki katına çıkarılabilir), "sipariş silindi, ancak tarihte görünmedi". Aynı zamanda netleştirme sırasında tek bir sembol üzerinde aynı anda çalışmaya yardımcı olur.
Yakın zamana kadar, eksik siparişleri kontrol eden evrensel bir koltuk değneği kullanıyordum. Ama bir noktada başarısız olmaya başladı.
Danışmana başka bir kişisel koltuk değneği eklendi, şimdi siparişlerini ayrı ayrı izliyor.
Çok fazla koltuk değneği...
Çok fazla koltuk değneği...
konuyu inceliyorum Hatta bununla karşılaştım : Bir piyasa emrinin OrderSend'i doğrudur, bundan sonra PositionsTotal = 0, OrdersTotal = 0, geçmiş tablolar değişmez.
Görünüşe göre IsSynchronized() yazmak mümkünmüş. Kod ağır. Nasıl yayınlayacağıma henüz karar vermedim.
Bu kodu boş bir demo hesabında çalıştırın ve birkaç saniye içinde iki pozisyonun açıldığını görün.
MT4'teki aynı mantık şuna benziyor.
MT4'teki böyle bir kodun çift pozisyona neden olmayacağı açıktır. Ama MT5'te değil.
Bu kodu boş bir demo hesabında çalıştırın ve birkaç saniye içinde iki pozisyonun açıldığını görün.
MT4'te de aynı mantık şuna benziyor.
MT4'teki böyle bir kodun çift pozisyona neden olmayacağı açıktır. Ama MT5'te değil.
En sonunda! Bunu yeni mi keşfettin? Bu sorun, terminalin kendisi kadar eskidir. Ama sonunda, terminal kullanıcıları bunu fark ettiler ... on yıl sonra.
Alım satım işlemlerini kendiniz gerçekleştirdiğinizde, sorun basit bir şekilde çözülebilir - eylem gerçekleştirildikten sonra bir saniyeliğine Sleep() öğesini girin. Ancak EA'da zararı durdur/karı al ve piyasa kapanışı kullanıldığında, bu sorunla karşılaşma tehlikesi vardır ve bu durumda bunun bir çözümü yoktur.
En sonunda! Bunu yeni mi keşfettin? Bu sorun, terminalin kendisi kadar eskidir. Ama sonunda, terminal kullanıcıları bunu fark ettiler ... on yıl sonra.
Konu uzun süredir tartışılıyor. Neredeyse herkeste var. Kodunu kararlı bir şekilde yeniden üretiyor - ilk kez.
Alım satım işlemlerini kendiniz gerçekleştirdiğinizde, sorun basit bir şekilde çözülebilir - eylem gerçekleştirildikten sonra bir saniyeliğine Sleep() öğesini girin. Ancak EA'da zararı durdur/karı al ve piyasa kapanışı kullanıldığında, bu sorunla karşılaşma tehlikesi vardır ve bu durumda bunun bir çözümü yoktur.
Çözüm bulundu.
Bu kodu boş bir demo hesabında çalıştırın ve birkaç saniye içinde iki pozisyonun açıldığını görün.
Garip. Oynanabilir değil. MQ'dan bir demo üzerinde kontrol edildi, inşa 2900, EURUSD, sıfır yayılma. Yaklaşık beş dakika bekledi.
Belki de bir MQ sunucusu değil, gerçek bir DC/broker'ın belirli bir sunucusunu kullanmanız gerekiyor?
Garip. Oynanabilir değil. MQ'dan bir demo üzerinde kontrol edildi, inşa 2900, EURUSD, sıfır spread. Yaklaşık beş dakika bekledi.
Belki de bir MQ sunucusu değil, gerçek bir DC/broker'ın belirli bir sunucusunu kullanmanız gerekiyor?
ForexTimeFXTM-Demo01
ForexTimeFXTM-Demo01
Evet, şimdi komut dosyası duruyor. Ama pozisyon hala aynı. İkincisi, görünüşe göre, kapanmak için zamanı var mı?
Evet, şimdi komut dosyası duruyor. Ama pozisyon hala aynı. İkincisi, görünüşe göre, kapanmak için zamanı var mı?
Bende her zaman iki tane kalır. Biri kalırsa, bu daha da büyük bir hatadır:
Bende her zaman iki tane kalır. Biri kalırsa, bu daha da büyük bir hatadır:
Evet ve ben de aynı şeyden bahsediyorum. Görünen o ki, aslında iki tane varken, komut dosyası konumlardan birini kapatmayı başarır, ancak PositionsTotal() 1 döndürür. Ve sonra, kapanıştan sonra, döngü sonlandırma koşulu karşılanır, yani PositionsTotal() 2 döndürür.