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

 
Tamam, evet, anladım...peki...Geri gelecek mi göreceğiz ;)
 

Merhaba Stringo,



maalesef bu bug devam ediyor.

Test komut dosyasını aşağıdan çalıştırırken ve bir hesaptan diğerine geçiş yaparken (test durumumda 2 veya 3 farklı komisyoncudan hesap kullandım ve birinden diğerine geçtim), bunu birkaç hesap değişikliğinden sonra görebilirsiniz (oldukça rastgele sayı) connectionState gerçekten 1'e dönmüyor, Terminal _is_ bağlı olsa bile 0 olarak kalıyor.


Sizin gözünüzde bu kritik bir hata olmayabilir. Ancak, connectionState'i görüntüleyen komut dosyaları geliştiren bazı kişiler için, yürütülen testlerin sonuçları oldukça endişe vericidir.

Bu yüzden bu konuya tekrar bir göz atabilirseniz çok minnettar oldum.



İşte testScript:


 //+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start ()
{
   while ( ! IsStopped ())
   {
       Print ( " test " + IsConnected ()) ;
       Sleep ( 500 ) ;
   }
}




Saygılarımla,


Daniel.

 
Ayrıca bu hatanın yapı 216'da bulunduğunu doğrulayabilirim. Görünüşe göre bazı 'bağlanamadı' - oturum açma dizilerinden sonra ortaya çıkıyor.
 
Evet, bu komut dosyası biliniyor. Ancak sorunu tespit etmek için ortamı yeniden üretmeliyiz. Ancak çoğaltamayız
 

Ben de aynı hatayı onaylamalıyım. EA'mda bağlantı olup olmadığını aynı anda kontrol ediyorum. Değilse betiğim çıkar.

Bunun için bir geçici çözüm bulan var mı?

 

Betik, sonsuz döngü ve gelen kenelerden bağımsızlık nedeniyle sorunu belirleyemez.

Problem sadece uzman gösterebilir. Tek satır kodlu basit uzman - Print( IsConnected ());

Kene gelirleri (terminalin bağlı olduğu anlamına gelir) - başlatma işlevi çalışır - ayy! IsConnected() 0 döndürür (yani yanlış)

 

Teşekkürler

evet kullanıyorum

 int start ()
{
 while ( true )
 {
   if ( IsConnected ())
   {
    ....... i do my work 
   {
   else 
   {return ( - 1 ) ;} // so if connection was lost i break the infiny loop
 }
}

sorun şu ki, bağlantı yeniden kurulduğunda IsConnected () harfi eski değeri false tutar ve true olarak değiştirmez! Ama fiyat hareketlerini görüyorum ve terminal %100 bağlı. Bu bir hatadır çünkü sonsuzluk döngüsü kırılmıştır ve bağlantı yeniden kurulduktan sonra ilk tıklamada hiçbir şey olmadığı için başlatma yürütülmüştür. Ancak bazı nedenlerden dolayı Is Connected() hala false döndürür. EA'yı çizelgeden kaldırır ve tekrar koyarsam, bir sonraki bağlantı kesilene kadar her şey yolunda gider.



Bu beni deli ediyor. Lütfen bu konuda bir şeyler yapın!

teşekkürler

 

Liliput - yukarıdaki start() kullanımının ana hatlarıysa, neden sonsuz döngüde kalıyorsunuz?

soruyorum neden normal yol girmektir > çalışmak istiyor muyum? no:dön > çalış > dön

(normal - elbette özneldir;o)

size nasıl tasarım yapacağınızı söylemiyorum - bu sizin işiniz, sadece akıl yürütmenizi soruyorum, sonra daha fazlasını öğreniyorum/bir şeyler yapmanın farklı yollarını görüyorum!

sormama ne sebep oldu?

Örneğin, bir EA, EA geri dönmediğinden - Termial sadece start() çağrısını yapmaz ... aramayı yapın ve sonunda EA'nın start() işlevini çağıramadan akan birçok veri kenesinden dolayı Terminal keşfedilmemiş derinliklere gider ve bağlantılı sorunu gösterir mi?

;)

 

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 ) ;
   }
 
ukt :

Liliput - yukarıdaki start() kullanımının ana hatlarıysa, neden sonsuz döngüde kalıyorsunuz?

soruyorum neden normal yol girmektir > çalışmak istiyor muyum? no:dön > çalış > dön

(normal - elbette özneldir;o)

size nasıl tasarım yapacağınızı söylemiyorum - bu sizin işiniz, sadece akıl yürütmenizi soruyorum, sonra daha fazlasını öğreniyorum/bir şeyler yapmanın farklı yollarını görüyorum!

sormama ne sebep oldu?

Örneğin, bir EA, EA geri dönmediğinden - Termial sadece start() çağrısını yapmaz ... aramayı yapın ve sonunda EA'nın start() işlevini çağıramadan akan birçok veri kenesinden dolayı Terminal keşfedilmemiş derinliklere gider ve bağlantılı sorunu gösterir mi?

;)


ukt, sorun değil cevaplayacağım. Sonsuz döngü yapıyorum çünkü birçok işlem yapmam gerekiyor ve bunları yapmak için yeni bir tik beklemek istemiyorum. Yani kontrolü bu şekilde terminalden alıyorum ve işimi ihtiyacım olduğunda ve istediğimde yapıyorum. Gerçek verileri almak için RefreshRates () kullanıyorum.

Bu nedenle, komisyoncuyla bağlantının olup olmadığını kontrol etmek mantıklıdır çünkü emirleri gönderirim/kapatırım/değiştiririm ve bağlantı yoksa çalışmaz. basit yani. Kullandığım döngüden çıkmak için başka kontroller de var. örneğin IsStoped() ve benzeri ama sorun benim kodumda değil IsConnected()'de.