216 hatası oluştur? isConnected() false döndürür, ancak metatrader hala bağlı - sayfa 3

 
edddim :

Bu sorunu çözebilir mi..?

 string FILE [ 1 ] ;
int MOVE [ 1 ] ;
 
void init () { FILE [ 0 ] = Symbol () ; }
 
int start ()
   {
//---- check connection
   if ( ! Connection () ) return ( 0 ) ;
//---- 
   return ( 0 ) ;
   }
 
bool Connection ()
   {
   int d ;
   bool connect ;
   RefreshRates () ;
   for ( d = 0 ; d < ArraySize ( FILE ) ; d ++ )
     {
     if ( MOVE [ d ] != MarketInfo ( FILE [ d ] , 5 ) )
       {
       MOVE [ d ] = MarketInfo ( FILE [ d ] , 5 ) ;
       /* if ( !connect ) */
       connect = 1 ;
       }
     }
   return ( connect ) ;
   }

teşekkürler edddim!


Fikrinizi kelimelerle de açıklar mısınız?

 

the problem is not in my code it is in the IsConnected ().

Sonsuz döngüde kalma nedenlerinizi aydınlattığınız için teşekkür ederiz.

Evet, kodunuzun farkında değilim - Terminal'in kendisini bağlantı sorununu hızlandıran bazı kodları yürüttüğü kod alanına girmesine neden olan bir dizi olay olarak varsayıyordum.

Gerçekten de döngüde kaldığınızı belirttiğinize göre, Terminal'in bunu doğru bir şekilde ele almaması mümkün değil... kim bilir? ama bu fikirleri halka duyurmadıkça kimse böyle bir şeyin olma olasılığını düşünmez, değil mi?

Cevabınız için tekrar teşekkürler.

Destek ekibi sorununuzu taklit edemez - bu nedenle bazen yan düşünmek işe yarar...

;)

 

Fikrinizi kelimelerle de açıklar mısınız?

Fikir kontrol edilecek, ...biraz daha karmaşık sunuldu çünkü zamanla gelen onay işaretini kontrol edecek. ArraySize(FILE) daha büyük ile daha fazlası kontrol edilebilir ve daha doğru olanı, MOVE[d] > MarketInfo(FILE[d],5) tam noktalı değişiklikle birlikte dahil edilen diğer olası işlevler kümesi olarak kontrol etmek olacaktır. Yeni bağlanıp bağlanmadığını kontrol etmenin daha basit versiyonu:

 int incomeTime = TimeCurrent () ;
Sleep ( 1000 ) ;
if ( incomeTime <= 0 ) return ;
RefreshRates () ;
if ( incomeTime >= TimeCurrent () ) return ;

Durum, 1000'den fazlaysa, Uyku duraklaması kesinlik olarak yanlış olur, ancak alınan süre saniye cinsinden olduğundan daha azı öncekiyle aynı süreyi almakla sonuçlanabilir.

Bir sonraki kontrol, takip edilen işlemlerden ziyade kene değiştirilirse olabilir.

Bu benim bakış açımdan.

 
Bu fikir için teşekkürler Edddim.

Ancak ne yazık ki, oldukça uygunsuz ve gerçekten güvenilir olmadığı için bu sorunu çözmez.

Ayrıca, piyasanın açık olup olmadığını kontrol ediyor ve işlem hesabıyla olan bağlantıyı kontrol etmiyor (Çözümünüzü anladıysam).


Dostça rica ediyorum, MetaQuotes, bu kritik bir konu olduğu için bunu düzeltmek için biraz daha çaba sarfetmenizi rica ediyorum ve bununla karşılaşan tek kişi ben değilim.

Ancak, zaten üzerinde çalışıyorsanız, lütfen isteklerime kızmayın.


Saygılarımla,


Daniel.

 

Bugün Sanal Sunucuma iki MT4 istasyonunun IsConnected () durumunu söyleyen bir gözlemci betiği kurdum. Bunlardan biri olan MIG Investment, MT4 ile gerçekten bağlı olmasına rağmen bir veya iki kısa bağlantı kesilmesinden sonra !isConnected() üzerinde kalır.

Sevgili MT4 Geliştirme Ekibi, lütfen birkaç farklı aracının MT4 istasyonuyla daha büyük bir test kurulumu yapabilir ve isConnected() durumunu gözlemleyebilir misiniz? Biraz çaba harcarsan, bunu yeniden üretebileceğinden fazlasıyla eminim!

Kullanılabilir komut dosyalarının ve EA'ların çoğu, IsConnected()'in doğru bağlantı durumunu döndürmesine bağlıdır, MT4'ü her zaman yeniden başlatmak, mutlu olduğum bir çözüm değildir.

 

Bir kez daha. Bu sorunu belirlemek için basit bir uzman kullanmalısınız.

 void start ()
   {
   if ( ! IsConnected ()) Print ( " Alarm!!! Connection is lost! " ) ;
   }

SONSUZ LOOP İLE YAZILI VEYA EA DEĞİL!!!!!!!

Komut dosyanız bağlantının koptuğunu bildirirse, ancak EA'mız (yukarıya bakın) sessizliğini koruyorsa, o zaman internetle ilgili küresel bir sorununuz var (örneğin, internet sağlayıcınızın son kilometresiyle ilgili bir sorun)

EA "Alarm" yazdırırsa, bağlantı rutinimizde sorun var demektir

 

Evet! Stringo tekrar cevap veriyor, çok teşekkürler.

Ancak, olan bu! Bu tür basit döngüsüz EA'lar/komut dosyaları ile denedim.

BTW, özel ağımda ve sanal bir sunucuda test edildiğinden internetimle ilgili bir sorun yaşamadığımdan kesinlikle eminim.

Mesele şu ki, ticaret yapabiliyorum ve her şey görünüyor ve _is_ tamam ama isConnected() hala YANLIŞ veriyor

 

Ticaret işlemi, ticaret sunucusuyla kendi bağlantısını başlatır.

IsConnected (), pompalama verisi bağlantı durumunu gösterir.

1. Bağlantı göstergesi (sağ alt köşe) kırmızı mı yoksa koyu mu?

2. Hangi komisyoncuya bağlısınız?

3. Sanal sunucunuzda hangi işletim sistemi kurulu?

 

Hızlı cevabınız için teşekkürler, işte cevaplarım:

1. Her zamanki gibi yeşil-kırmızı

2. MIG Yatırımları

3. Sanal sunucumda Windows Server 2003 kurulu. Ara sıra aynı WinXP sorununu gösteren ev masaüstümde.

 
stringo :

Bir kez daha. Bu sorunu belirlemek için basit bir uzman kullanmalısınız.

 void start ()
   {
   if ( ! IsConnected ()) Print ( " Alarm!!! Connection is lost! " ) ;
   }

SONSUZ LOOP İLE YAZILI VEYA EA DEĞİL!!!!!!!

Komut dosyanız bağlantının koptuğunu bildirirse, ancak EA'mız (yukarıya bakın) sessizliğini koruyorsa, o zaman internetle ilgili küresel bir sorununuz var (örneğin, internet sağlayıcınızın son kilometresiyle ilgili bir sorun)

EA "Alarm" yazdırırsa, bağlantı rutinimizde sorun var demektir

Aşağıdakileri denedim:

geçersiz başlangıç ()
{

if ( IsConnected ()) Print ( "Bağlandı ! " ) ;
if ( ! IsConnected ()) Print ( " Alarm!!! Bağlantı kesildi! " ) ;
}

Bağlandı, bağlantı olduğunda yazdırılır, ancak bağlantı kesildiğinde EA öldü. Sanırım bunun nedeni, !IsConnected() kodunu tetiklemek için daha fazla gelen onay işareti olmaması ve bu nedenle hiçbir zaman bağlantının koptuğunu algılamamasıdır!!!