Hatalar, hatalar, sorular - sayfa 659

 
antt :
Erişim noktası nedir?
Kıbrıs.
 

Durum şu. Örneğin, Cuma günü açık pozisyonlar var. Zarar Durdur ve Kar Al ayarlanmıştır . İşlem seansının bitmesini beklemeden bu pozisyonlardan ayrılıyoruz, bağlantıyı kesiyoruz ve bilgisayarı hazırda bekletme moduna alıyoruz (Uyku modu). Ertesi gün katılıyoruz. İnterneti açıyoruz. Sunucuyla bir bağlantı var. Cumartesi. Piyasa kapalı. Kimisi Zarar Durdur , kimisi Kâr Al ile pozisyonların kapatıldığını görüyoruz. Bu işlemler, ticaret terminalindeki Geçmiş sekmesinde görülebilir:

Son üç işlemin geçmişini istiyoruz:

   datetime Start= 0 ;
//---
   if (! HistorySelect (Start, TimeCurrent ())) // Загрузим историю сделок
     {
       Print ( "Ошибка при загрузке истории!" ); return ;
     }
   else
     {
       ulong ticket= 0 ;
       datetime time= 0 ;
       string symbol= "" ,comment= "" ;
       //---
       int total_deals= HistoryDealsTotal ();
       //---
       for ( int d=total_deals- 1 ; d>=total_deals- 3 ; d--)
        {
         if ((ticket= HistoryDealGetTicket (d))> 0 ) // Если сделка выбрана
           {
            symbol= HistoryDealGetString (ticket, DEAL_SYMBOL );
            comment= HistoryDealGetString (ticket, DEAL_COMMENT );
            time=( datetime ) HistoryDealGetInteger (ticket, DEAL_TIME );
             //---
             Print ( "<-- symbol: " ,symbol, "; comment: " ,comment, "; time: " ,time, " -->" );
           }
        }
     }

Ve hikayenin uyuşmadığını görüyoruz. Yani terminalde görüyoruz ama programlı olarak alamıyoruz.

//---

Bu bir hata mı yoksa amaçlandı mı ve bu işlemler artık programlı olarak yalnızca piyasa açıldığında alınabilir mi?

PS Bunu da denedim, yardımcı olmuyor:

 #define Milliseconds_Ahead 200
//---
datetime TimeCurrentAhead()
  {
   return ( TimeCurrent ()+Milliseconds_Ahead);
  }
 

tol64 :

...

PS Bunu da denedim, yardımcı olmuyor:

Bir çıkış yolu buldum. Piyasa İzleme penceresinde çıkış saatini görebilirsiniz. Yani, sunucuyla en son bağlantı kurulduğunda ve bir onay geldiğinde (son onay zamanı):

Yani, benim durumumda 18:43:30 .

Bu işlevin yardımıyla hepsinin aynı olduğu ortaya çıktı ...:

 #define Milliseconds_Ahead 10000
//---
datetime TimeCurrentAhead()
  {
   return ( TimeCurrent ()+Milliseconds_Ahead);
  }

...durumu çözebilirsiniz, ancak önemli bir marjla talepte bulunmanız gerekir. Veya bu koltuk değneği olmadan ve sonsuza dek unutun, ancak gerçek zamanlıysa, geçmiş isterken her zaman TimeLocal () işlevini kullanın. Ve test cihazında TimeCurrent () veya TimeCurrentAhead (). Bunun gibi bir şey:

 datetime ChoiceTimeFunction()
  {
   if (NotTest())
     { return ( TimeLocal ()); }
   else
     { return ( TimeCurrent ()+Milliseconds_Ahead); }
//---
   return ( TimeLocal ());
  }

O zaman bu an sertifikada ya da başka bir şeyde ele alınmalı ...

 

Terminal, silinen çizelgeleri geri yükleme yeteneğine sahiptir:

Uzaktan Kumandayı Aç

Kurtarma için silinen çizelgelerin alt menüsünü açın. Terminal ayarlarında "Silinen pencereleri yeniden açmak için kaydet" onay kutusu ayarlanmışsa, silinen grafikler kaydedilir. /Profiles/Deleted dizini , silinen çizelgelerin tüm şablonlarını saklar. Bu komut çalıştırıldığında bu şablonlara ulaşılır ve ilgili çizelge açılır. Silinen grafik şablonlarından herhangi biri, bu menüdeki ilgili komut kullanılarak silinebilir.

Durum şu. Bir Uzman Danışman çizelgede asılı kalır ve bilgi panelleri görüntülenir. OnDeinit () fonksiyonunda, eğer grafik kapanırsa, şablonu nesneler olmadan geri yüklemek için kaydetmek için bilgi panellerinin silinmesi gerektiğini belirtiyorum. Grafiği kapatıyorum. Uzaktan kumandayı aç seçeneğini kullanarak geri yüklerim, ancak geri yükleme nesnelerle ve yanlış bir şekilde gerçekleşir (bazıları vardır, bazıları değildir). EA, başlatmadan sonra her şeyi geri yükler. Hoş olmayan bir tat ve dikkatsizce yapılmış bir iş hissi kalır. Terminalden değil, uzman kullanıcılar açısından değerlendiriyorum. Diğer başlatmasızlaştırma olaylarıyla her şey doğru şekilde çalışır. Anladığım kadarıyla, şablon başlatmadan önce kaydedilir, çünkü başlatmadan kaldırma sırasında nesneler hala silinir, ancak şablona kaydedilmeyi başarır.

 

İşte ortaya çıkan sorun...

Bildiğim kadarıyla, terminal sunucudaki ek geçmişi "fark edebiliyor" ve yerel tarihteki "boşluklara" benzer bir tür "fark edebiliyor" ve bu boşlukları doldurarak çılgınca otomatik olarak indirmeye başlıyor. Tabii ki hepsi harika, ama...

Geçmişi hiçbir yerden indirilmeyen, ancak terminalin kendisi tarafından otomatik olarak "zihinde" tamamlanan standart olmayan zaman dilimleri gibi bir şey var. Ve şimdi fark ettiğim buydu. Her şey geçmişteki "arızalar" notu ve otomatik özgeçmiş ile uyumluysa, o zaman standart olmayan zaman dilimlerinin yerleşik ve daha sonra hasar görmüş (diskte veya bellekte) geçmişini geri yükleme ile ilgili olarak, işler yolunda değildir. elden. Pekala, terminalimin tüm geçmişini indirdim, sonra tüm zaman dilimlerini atladım ve H2 ve H3'te birisinin, terminal tarafından yerel olarak indirmeyi veya yeniden inşa etmeyi düşünmeyen, tarihin son bir bölümünü ısırdığını buldum. kendisi. Terminali boşaltmak ve ilgili zaman dilimlerinin dosyalarını C:\ kendi hikayelerini yeniden inşa etmek için, sıfırdan, doğru.

Açıkçası, standart olmayan zaman dilimleri de dahil olmak üzere bu ısırılan segmentleri herhangi birinde "hissedecek" ve hemen onları doldurmaya çalışacak daha akıllı bir terminal istiyorum.

---------------

Ek: Dürüst olmak gerekirse, terminal hiçbir şey görmese de. Aslında 1999'dan MetaQuotes'ta başlayan ve bir nedenden dolayı sınırım 2009 civarında geçti - ne olmuş yani? Bu otomatik özgeçmişler nerede? Neyse ki, indirilecek yer vardı, yeterli alan vardı, ancak özgeçmiş yoktu ve bu güne kadar, her şeyi yıkıp yeniden yükleyene kadar da yoktu (aynı şeyi daha önce yaptım, ancak hiçbir etkisi olmadı). Tabii ki, burada devam etmekten bile bahsetmiyoruz, ancak tüm geçmişi terminal tarafından sıfırdan tamamen indirmekten bahsediyoruz. Ah birazcık öyle bir şey - ve ekmek.

Ve bu bağlamda, programlarında hata ayıklayan ve diğer kullanıcıların yazılım ürünlerini tüketmesini bekleyen tüm MQL programcılarına önemli bir uyarı vermek istiyorum: Ürününüzün hesaplandığı geçmişin varlığı konusunda uyanık olun: test sırasında eksik veya daha yüksek zaman dilimlerini geçmişle değiştirirseniz, işlem hızı sizi memnun edecektir, ancak siz veya yazılım ürünlerinizin kullanıcıları, modern makinelerde %100 CPU kullanımından ve sonuçları "sonsuz" beklemekten ağlayabilir, çünkü bu durumda geçmiş tamamlanmış olacak - bir büyüklük sırası daha büyük !

 

'f0_34' - karşılaştırma ifadesi bekleniyor

Bu uyarının ne anlama geldiğini söyleyebilir misiniz?

 

Aynı hata tekrar ortaya çıktı:

Sorunlu alan belirlendi. Servis Masasında ayrıntılı açıklama.

//---

not . Çözüldüğünde benzer bir sorunla zaten var olan bir uygulamayı tamamladı. Bir süre sonra profilin yanında bir bildirim gördüm. Service Desk'e gidiyorum, ancak uygulama tamamen kayboldu. Şimdi tekrar yazayım mı? )))

 
tol64 :

Aynı hata tekrar ortaya çıktı:

Sorunlu alan belirlendi. Servis Masasında ayrıntılı açıklama.

//---

not . Çözüldüğünde benzer bir sorunla zaten var olan bir uygulamayı destekledi. Bir süre sonra profilin yanında bir bildirim gördüm. Service Desk'e gidiyorum, ancak uygulama tamamen kayboldu. Şimdi tekrar yazayım mı? )))

Uygulama, yorumlarla birlikte yerinde, ancak nedense profilde görünmüyor.

Kesinlikle çözeceğiz.

 
MetaQuotes :

Uygulama, yorumlarla birlikte yerinde, ancak nedense profilde görünmüyor.

Kesinlikle çözeceğiz.

bazı uygulamalarım da tamamen bıraktığı için lütfen halledin. ne açık ne kapalı.
 
MetaQuotes :

Uygulama, yorumlarla birlikte yerinde, ancak nedense profilde görünmüyor.

Kesinlikle çözeceğiz.

Teşekkür ederim. Açıklamalar olduğu için merakla bekliyorum. Sorun sadece belirttiğim yerde kendini göstermeye başladı. Tezahür alanı artık her yerdedir.
Neden: