MetaTrader 5 Platformu güncellemesi yapı 3280: Yatırımcıların geri bildirimlerine dayalı iyileştirmeler ve düzeltmeler - sayfa 2

 

Bir iyileştirme önerebilir miyim... Aşağıdaki gibidir: Aşağıdaki script kodunu çalıştırdığımızda

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart () 
{ 
  
         ENUM_TIMEFRAMES time = PERIOD_D1 ;
         string szSymbol = "EURUSD" ;
         long id = ChartOpen (szSymbol, time);
         ChartRedraw (id);

         ChartIndicatorAdd (id, 0 , iCustom (szSymbol, time, "Media Movel.ex5" ));
}

herhangi bir pencerede EURUSD sembolü ile yeni bir pencere açacağız ve yeni oluşturulan pencereye özel bir gösterge ekleyebileceğiz .... MÜKEMMEL ... ancak aynı betiği gösterildiği gibi bir hizmete dönüştürürsek aşağıda:

 #property service
//+------------------------------------------------------------------+
void OnStart ()
{
         ENUM_TIMEFRAMES time = PERIOD_D1 ;
         string szSymbol = "EURUSD" ;
         long id = ChartOpen (szSymbol, time);
         ChartRedraw (id);

         ChartIndicatorAdd (id, 0 , iCustom (szSymbol, time, "Media Movel.ex5" ));
}

davranış zaten farklı olacak, pencere beklendiği gibi oluşturulacak, ancak pencere kimliği değerine sahip olsak bile pencereye herhangi bir gösterge ekleyemedik , 4802 hatası döndürüldü....

Örneğin bir EA'yı aşırı yüklemeden bazı ekstra işler yapmak için hizmetleri kullanabildiğimiz için bir hizmet bir gösterge ekleyebilseydi ÇOK İYİ olurdu, ancak bunu yapmak mümkün olmasa bile, bilenlerin önerisidir. , bir hizmetin bir komut dosyası çalıştırmasına izin vermek, yine de çok yardımcı olur ...

Ve eğer çok fazla suistimal değilse... MQL5 dili , bir hata oluşturduğunda yinelemeli bir koddan çıkmak için hızlı bir yola izin vermek için EXIT() işlevine sahip olsaydı, ancak bir çıkış abruta'ya sahip olmak yerine çok iyi olurdu. , EXIT() çağrısı ile hatayı halledebilir ve programın yürütülmesini tamamen sonlandırabiliriz ... tıpkı bir EA'yı sonlandırmak için ExpertRemove()'u çağırdığımızda olduğu gibi ... yine de DİKKATİNİZ İÇİN TEŞEKKÜRLER ... 😁👍

 

/portbale modu için MT5'i birden çok kez kurdum. Üçü şu anda paralel çalışıyor, ikisi ticaret yaparken yayın kanalında ve biri beta kanalında.

Ne yazık ki , yeni bir güncellemenin şimdi mi yoksa daha sonra mı güncelleneceğini soran pencere, hangi sürümün güncellenebileceğini göstermiyor: Sürüm veya Beta:


Bu pencere basitçe şöyle deseydi iyi olurdu: " Yayın güncellemesi (veya beta güncellemeleri ) indirildi. Zamanında..."

Kullanıcı daha sonra güncellemeyi hafta içi mi (FX açık) mı yoksa sadece hafta sonu mu yapmak istediğini bilecektir.

Belki sürüm güncellemeleri veya beta güncellemeleri renge göre ayırt edilebilir. Bu, hatalardan kaçınmaya yardımcı olabilir.

 
MetaQuotes :

29 Nisan 2022 Cuma günü, MetaTrader 5 platformunun güncellenmiş bir sürümü yayınlanacaktır.3270 sürümünün yayınlanmasından sonra alınan geri bildirimlere dayalı olarak bir dizi küçük eklemeler ve düzeltmeler yaptık.

Güncelleme aşağıdaki değişiklikleri içerir:

  1. Terminal: Açık emirlerin ve pozisyonların içerik menüsünde standart Takip Eden Durdurma seviyelerinin doldurulması düzeltildi.
  2. Terminal: UI çevirileri güncellendi.
  3. Kilitlenme günlüğü düzeltmeleri.

Güncelleme, Canlı Güncelleme sistemi aracılığıyla sunulacaktır.

Böyle "küçük" düzeltmeler olduğu için, bir sonraki sürümde böyle bir hata için bir düzeltme eklemenizi rica ediyorum: Orijinal sembolün Time$Sale'den özel bir sembole keneler kopyalarken kenelerin hacmi hakkındaki bilgileri silme MT5 platformunun standart işlevselliği.

Bu, borsa araçlarıyla çalışanlar için küçük ama çok can sıkıcı bir hatadır, çünkü bu hata, MT5'te yerleşik özel "sürekli" vadeli işlemlerde borsa tik geçmişiyle çalışan göstergelerin kullanılmasının imkansız olmasına yol açar!

Sürekli N.Q.

 
Bu derleyici uyarısı gereksiz mi?
 void OnStart ()
{
   Print ( DEAL_REASON_TP == ORDER_REASON_TP ); // implicit conversion from 'enum ENUM_ORDER_REASON' to 'enum ENUM_DEAL_REASON'
}
 

Enum dönüştürme ile derleyici hatası.

 ENUM_DEAL_REASON Reason() { return ( DEAL_REASON_CLIENT ); }

void OnStart ()
{
   ENUM_ORDER_REASON Reason1 = Reason();                     // 'Reason' - cannot convert enum
   ENUM_ORDER_REASON Reason2 = ( ENUM_ORDER_REASON )Reason(); // OK
}

Arama dizisi : Oshibka 040.

 
fxsaber # :

Enum dönüştürme ile derleyici hatası.

Arama dizisi : Oshibka 040.

Herhangi bir hata yok gibi görünüyor. Her numaralandırma kendi türüdür. Biri diğerine ancak açık bir oyuncu kadrosuyla atılabilir. Örtük olarak derleyici yemin eder.

 
Stanislav Korotky # :

Herhangi bir hata yok gibi görünüyor. Her numaralandırma kendi türüdür. Biri diğerine ancak açık bir oyuncu kadrosuyla atılabilir. Örtük olarak derleyici yemin eder.

Uyarı yerine hata.

'Reason' - cannot convert enum
1 errors , 0 warnings            
 
fxsaber # :

Uyarı yerine hata.

Ne olmuş?

 
Stanislav Korotky # :

Ne olmuş?

Peki, o zaman böyle bir kod derlemeyelim.

 void OnStart ()
{
   double d = 0 ;
   int i = d;
}
 
fxsaber # :

Uyarı yerine hata.

Belgelere göre: enum   bazı sınırlı veri setine bakın. Bu anlamda, karşılaştırma ve atama temelde farklı değildir: her iki durumda da bir Uyarı veya Hata olmalıdır. Ve karşılaştırabilmeniz, ancak atayamayacağınız gerçeği saçmalık