Hatalar, hatalar, sorular - sayfa 2828

 
fxsaber :

Şu anda, uzantıdaki yalnızca son hanede farklılık gösteren aptalca bir sürü özdeş dosya var.

Farklı klasörlerdeler. Birleştirilmiş bir sembolik bağlantı chtol'unuz var mı?
 
Alexey Navoykov :
Farklı klasörlerdeler. Birleştirilmiş bir sembolik bağlantı chtol'unuz var mı?

MQL5'te her iki Terminal için ortaktır.

 
MT5 arayüzünün dili nasıl değiştirilir? Eskiden menüde bir switcher vardı, şimdi bulamıyorum.
 
Stanislav Korotky :
MT5 arayüzünün dili nasıl değiştirilir? Eskiden menüde bir switcher vardı, şimdi bulamıyorum.

 
Geçen gün garip bir durumla karşılaştım - TF M1 üzerindeki gösterge, bir günlük barın açılış fiyatını yanlış belirlemeye başladı. Gösterge zaten 3 yıldır kullanılıyor, bundan önce şikayet yoktu. Değişim çok önemliydi, yaklaşık 500 puan, sabahları doğru verileri gösterdi ve öğleden sonra yalan söylemeye başladı. TF'yi değiştirmek yardımcı olmadı, yalnızca gösterge ayarlarındaki gösterge hesaplama TF'sini değiştirmek yardımcı oldu. Bunu nasıl çoğaltacağımı bilmiyorum. Bu tür aksaklıklar otomatik ticaret sırasında korkutur.
 

Bir kaynak oluşturmaya çalışırken, derleyici BMP dosyası mouse.bmp'ye "yemin eder"

unsupported image format 'C:\Users\pc\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Files\Images\MyBMP\mouse.bmp'   

Bununla birlikte, doğrudan kullanılırsa, hata yoktur ve resim doğru şekilde görüntülenir.

 #property strict
string label_name= "currency_label" ;         // имя объекта OBJ_BITMAP_LABEL 
#resource "\\Files\\Images\\MyBMP\\Style-Pause-icon.bmp" ;     // путь к файлу каталог_данных_терминала\MQL4\Files\Images\MyBMP\... 
//#resource "\\Files\\Images\\MyBMP\\mouse.bmp";    
string press      = "::Files\\Images\\MyBMP\\Style-Pause-icon.bmp" ;     // RESOURCE
string unpress    = "\\Files\\Images\\MyBMP\\mouse.bmp" ;   // путь к файлу каталог_данных_терминала\MQL4\... 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit () 
  { 
//--- создадим кнопку OBJ_BITMAP_LABEL, если ее еще нет 
   if ( ObjectFind ( 0 ,label_name)< 0 ) 
     { 
       //--- попробуем создать объект OBJ_BITMAP_LABEL 
       bool created= ObjectCreate ( 0 ,label_name, OBJ_BITMAP_LABEL , 0 , 0 , 0 ); 
       if (created) 
        { 
         //--- привяжем кнопку к правому верхнему углу графика 
         ObjectSetInteger ( 0 ,label_name, OBJPROP_CORNER , CORNER_RIGHT_UPPER ); 
         //--- теперь настроим свойства объекта 
         ObjectSetInteger ( 0 ,label_name, OBJPROP_XDISTANCE , 100 ); 
         ObjectSetInteger ( 0 ,label_name, OBJPROP_YDISTANCE , 50 ); 
         //--- сбросим код последней ошибки в 0 
         ResetLastError (); 
         //--- загрузим картинку для состояния кнопки "Нажата" 
         bool set= ObjectSetString ( 0 ,label_name, OBJPROP_BMPFILE , 0 ,press); 
         //--- проверим результат 
         if (!set) 
           { 
             PrintFormat ( "Не удалось загрузить картинку из файла %s. Код ошибки %d" ,press, GetLastError ()); 
           } 
         ResetLastError (); 
         //--- загрузим картинку для состояния кнопки "Отжата" 
         set= ObjectSetString ( 0 ,label_name, OBJPROP_BMPFILE , 1 ,unpress); 
          
         if (!set) 
           { 
             PrintFormat ( "Не удалось загрузить картинку из файла %s. Код ошибки %d" ,unpress, GetLastError ()); 
           } 
         //--- отдадим графику команду на обновление, чтобы кнопка появилась сразу же, не дожидаясь тика 
         ChartRedraw ( 0 ); 
        } 
       else 
        { 
         //--- объект создать не удалось, сообщим об этом 
         PrintFormat ( "Не удалось создать объект OBJ_BITMAP_LABEL. Код ошибки %d" , GetLastError ()); 
        } 
     } 
//--- 
   return ( INIT_SUCCEEDED ); 
  } 
//+------------------------------------------------------------------+ 
//| Expert deinitialization function                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit ( const int reason) 
  { 
//--- удалим объект с графика  
   ObjectDelete ( 0 ,label_name); 
  }
//+------------------------------------------------------------------+

arşivdeki dosya.

Editör


MT4'teki davranış benzer...

Документация по MQL5: Общие функции / ResourceCreate
Документация по MQL5: Общие функции / ResourceCreate
  • www.mql5.com
[in]  Относительный путь к файлу, содержащему данные для ресурса. Если путь начинается с обратной косой черты "\" (пишется "\\"), то файл ищется относительно папки Если второй вариант функции вызывается для...
Dosyalar:
Images.zip  3 kb
 
Mikhail Dovbakh :

Bir kaynak oluşturmaya çalışırken, derleyici BMP dosyası mouse.bmp'ye "yemin eder"

Bununla birlikte, doğrudan kullanılırsa, hata yoktur ve resim doğru şekilde görüntülenir.

arşivdeki dosya.

Editör


MT4'teki davranış benzer...

8 bitlik bir bit eşlemi yutmak istemiyor.
24 veya 32 bit'e dönüştürmek daha iyidir.

Bir alfa kanalı gerektiğinde 32 bit tercih edilir, o zaman grafiği kapatan dikdörtgen bir arka plan üzerinde değil, şeffaf bir arka plan üzerinde görüntü elde etmek mümkün olacaktır.

Bu durumda, bitmap'i ResourceReadImage aracılığıyla bir diziye aktarmanız ve COLOR_FORMAT_ARGB_NORMALIZE kullanmanız gerekir.

Dosyalar:
Images.zip  3 kb
 
İyi günler, güncellemeden sonra şu hata belirdi [MT4 (1280) / ME (2375)]:

Dönüş değeri olan işlevlere erişmek için bir şablon parametresi aracılığıyla kapsamın genişletilmesi.

Örnek 1:  işlev çağrısı   temel sınıf.
 class _f
{
public :
   
   bool f(){ return false ; }
   
   void g(){ Print ( "g" );   }   
};

template < typename F>
class run_f : public F
{
public :

   bool f(){ return F::f(); } //<--- '::' - unexpected token

   void g(){ F::g(); }         //<--- OK
};


//+------------------------------------------------------------------+

void OnStart () 
{ 
   run_f<_f> r;
   
   r.f();
   r.g();
}  
Kapsam genişletme yoluyla veya dönüş değerini yükseltmeden bir void işlevine erişirsek, her şey yolunda demektir.

Örnek 2: statik bir sınıf işlevini çağırmak.
 class _f
{
public :
   
   static bool static_f(){ return true ; } 
   static void static_g(){}    
};

template < typename F>
bool call_static()
{
   return F::static_f(); //<--- '::' - unexpected token and function not defined
   
   F::static_f();       //<--- OK (не используем возварщаемое значение)
   
   //F::static_g();     //<--- OK (void функция)
   
   return true ;  
}

//+------------------------------------------------------------------+

void OnStart () 
{ 
   call_static<_f>();
}  

Güncellemeden önce çalışıyordu. MT5/MetaEditor 2560'ta da her şey yolunda.
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор возврата return - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Select işlevleri için aynı davranış değil.
 void OnStart ()
{
   PositionSelectByTicket ( 0 ); // OK
   OrderSelect ( 0 );             // return value of 'OrderSelect' should be checked
}
 
İyi günler, güncellemeden sonra şu hata ortaya çıktı [MT4 (1280) / MetaEditor (2375)]:

Bir sınıf gövdesinde bir şablon işlevi aşırı yüklendiğinde, şablon parametresi işlevin doğru sürümünü geçersiz kılar.
(Küresel işlevler için - aşırı yük çözünürlüğü iyi çalışıyor.)
 template < typename T>
class template_class{};

class X
{  
public :

   template < typename T>
   void f( const template_class<T>&) 
   {
       Print ( "T" );
      
      T * obj = NULL ;
   }
   
   void f( const template_class< string >&) 
   {
       Print ( "string" );
   }
   
   void call()
   {
      template_class< string > ts;
      
      f(ts);     //Вызывает версию Т, а должен string.
   }
};

void OnStart ()
{
   X x;
   
   x.call();
}