Hatalar, hatalar, sorular - sayfa 2616

 
Igor Makanu :

anlaşılabilir, yani terminaller arasında asırlık veri alışverişi sorununu çözmek

Numara. Expert Advisor'ın başlatıldığı Test Cihazının verilerini almanız gerekir. Vakaların %90'ında bunu yapabilirim.

 
fxsaber :

Agent'ta yürütülmek üzere gönderildiği Terminal'in tanıtıcısını alabilmek için Agent üzerinde çalışan Expert Advisor'a ihtiyacım var.

Ajanlardan bahsetmiyorum. kontrol etmedi, ancak beklendiği gibi terminal tanıtıcısı PID aracılığıyla elde edilebilir:

 #define   READ_CONTROL   0x00020000
#define   bInheritHandle true

#include <WinAPI\processthreadsapi.mqh>
int OnInit ()
  {
   uint process_id = GetCurrentProcessId();
   Print ( "process_id = " ,process_id);
   HANDLE handle = OpenProcess(READ_CONTROL,bInheritHandle,process_id);	// https://docs.microsoft.com/ru-ru/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess?redirectedfrom=MSDN
   Print ( "handle = " ,handle);
   return ( INIT_SUCCEEDED );
  }

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) tutamaç = 2276

görev yöneticisinde kontrol edilen PID aynı


 
Igor Makanu :

Ajanlardan bahsetmiyorum. kontrol etmedi, ancak beklendiği gibi terminal tanıtıcısı PID aracılığıyla elde edilebilir:

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) tutamaç = 2276

görev yöneticisinde kontrol edilen PID aynı

Böyle bir kod, Hizmet için uygundur, ancak bir Temsilcideki Uzman Danışman için uygun değildir.

 
Igor Makanu :

Ajanlardan bahsetmiyorum. kontrol etmedi, ancak beklendiği gibi terminal tanıtıcısı PID aracılığıyla elde edilebilir:

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) tutamaç = 2276

görev yöneticisinde kontrol edilen PID aynı

Sorunu çözdüm , teşekkürler.

 
Lütfen söyleyin, metatrader5, MQL5/logs klasöründe son 7 güne ait günlükleri depolar. Ayarlarda bir yerde mi değişiyor yoksa terminalde bir hata mı var?
 

İşte 2 öneri.

1- Optimizasyonu durdurmak ve ileri optimizasyona geçmek için bir seçenek (düğme) yapın.

Yani, hızlı bir kafiye olması gerekiyordu. Ama sayıyor ve sayıyor... Ve forvet de benim için ilginç, beklemek zorundayım.

Bazen daha detaylı, daha uzun, bazen de kısaca hesaplamanız gerekiyor.

Optimizasyonu genişletmek ve ileriye geçişle optimizasyonu durdurmak için 2 düğmeye ihtiyacımız var.

2- Araç çubukları tekrar 2 katmana kaydırıldı! Kızım küçüktü, bir keresinde "rolls and rolls - skatina!" dedi ...)

Ve burada her şey aşağı yuvarlanır ve panelleri 2. sıraya doğru yuvarlar. Onları geri taşımaktan bıktım (tek sıra). Zaten düzeltin! Ne kadar yer boşa harcanıyor!

 

Lütfen aşağıdaki hatayı kontrol edin. Uygulama, tek görevi büyük harf tuşunun durumunu okumak olan özel bir minimalist göstergeye sahiptir. Günlükte ve yorumda görüntülenir.

Eylemlerin sırası şudur.

  1. Göstergeyi derliyoruz, grafiğe yerleştiriyoruz, 0'ın görüntülendiğinden emin oluyoruz ("büyük harf" etkin değil).
  2. ME'ye geçiyoruz, CapsLock'u açıyoruz, yeniden derleme yapıyoruz. Terminale dönüyoruz. Günlüklere göre, eski göstergenin boşaltıldığından ve yenisinin yüklendiğinden emin oluyoruz. Ancak, "büyük harf" durumu hala 0 olarak döndürülür.
  3. Göstergeyi tablodan çıkarır ve tekrar asarsanız, büyük harf kilidi normal olarak tanınır - 1 görüntülenir.

Mucizeler nelerdir? Derlemeden sonra yeniden başlatırken, bazı ortam değişkenleri temizlenmiyor mu yoksa başka bir şey mi?

Dosyalar:
CapsLock.mq5  1 kb
 
Stanislav Korotky :

Lütfen aşağıdaki hatayı kontrol edin. Uygulama, tek görevi büyük harf tuşunun durumunu okumak olan özel bir minimalist göstergeye sahiptir. Günlükte ve yorumda görüntülenir.

Eylemlerin sırası şudur.

  1. Göstergeyi derliyoruz, grafiğe yerleştiriyoruz, 0'ın görüntülendiğinden emin oluyoruz ("büyük harf" etkin değil).
  2. ME'ye geçiyoruz, CapsLock'u açıyoruz, yeniden derleme yapıyoruz. Terminale dönüyoruz. Günlüklere göre, eski göstergenin boşaltıldığından ve yenisinin yüklendiğinden emin oluyoruz. Ancak, "büyük harf" durumu hala 0 olarak döndürülür.
  3. Göstergeyi tablodan çıkarır ve tekrar asarsanız, büyük harf kilidi normal olarak tanınır - 1 görüntülenir.

Mucizeler nelerdir? Derlemeden sonra yeniden başlatırken, bazı ortam değişkenleri temizlenmiyor mu yoksa başka bir şey mi?

Ve öyle olsa bile?

 void OnDeinit ( const int reason)
{
   if (ind != INVALID_HANDLE )
  {
     IndicatorRelease (ind);
  }
}
 
Vitaly Muzichenko :

Ve öyle olsa bile?

Burada ne var? MQL kodundan bir gösterge oluşturmuyorum . Tabloya manuel olarak asılır. Geliştirme sürecinde, programlar sık sık yeniden derlendiğinde, kaydedilen bağlam/sistem ortamıyla ilgili yanlış anlamalar nedeniyle işlevlerini kaybetmeyeceklerine ihtiyacım var. Şimdi, klavyenin mevcut durumunu alması için yeniden derlemeden sonra hindiyi çıkarıp yeniden takmam gerekiyor.

 
Stanislav Korotky :

Derlemeden sonra yeniden başlatırken, bazı ortam değişkenleri temizlenmiyor mu yoksa başka bir şey mi?

Evet, bu bir hata. Bir gösterge veya danışman - önemli değil.

Neden: