오류, 버그, 질문 - 페이지 2828

 
fxsaber :

현재 확장자의 마지막 숫자만 다른 동일한 파일이 엄청나게 많습니다.

그들은 다른 폴더에 있습니다. 심볼릭 링크 chtol이 결합되어 있습니까?
 
Alexey Navoykov :
그들은 다른 폴더에 있습니다. 심볼릭 링크 chtol이 결합되어 있습니까?

MQL5에서는 두 터미널 모두에 공통입니다.

 
MT5 인터페이스의 언어를 변경하는 방법은 무엇입니까? 예전에는 메뉴에 스위처가 있었던 것 같은데 지금은 찾을 수 없습니다.
 
Stanislav Korotky :
MT5 인터페이스의 언어를 변경하는 방법은 무엇입니까? 예전에는 메뉴에 스위처가 있었던 것 같은데 지금은 찾을 수 없습니다.

 
나는 요전에 이상한 상황에 직면했습니다. TF M1의 표시기가 일일 바의 시가를 잘못 결정하기 시작했습니다. 지표는 이미 3년 동안 사용되었으며 그 전에는 불만이 없었습니다. 변화는 약 500 점으로 매우 중요했으며 아침에는 올바른 데이터를 보여 주었고 오후에는 거짓말을하기 시작했습니다. 전환 TF는 도움이 되지 않았고 표시기 설정 자체에서 표시기 계산 TF를 변경하는 것만으로도 도움이 되었습니다. 이것을 재현하는 방법을 모르겠습니다. 이러한 결함은 자동 거래 중에 겁을 줍니다.
 

리소스를 생성 하려고 할 때 컴파일러는 BMP 파일 mouse.bmp에서 "맹세"합니다.

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

하지만 직접 사용하면 오류가 없고 그림이 올바르게 표시됩니다.

 #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); 
  }
//+------------------------------------------------------------------+

아카이브에 있는 파일.

편집자


MT4의 동작은 비슷합니다...

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

리소스를 생성 하려고 할 때 컴파일러는 BMP 파일 mouse.bmp에서 "맹세"합니다.

하지만 직접 사용하면 오류가 없고 그림이 올바르게 표시됩니다.

아카이브에 있는 파일.

편집자


MT4의 동작은 비슷합니다...

8비트 비트맵을 삼키고 싶지 않습니다.
24비트 또는 32비트로 변환하는 것이 좋습니다.

32비트는 알파 채널이 필요할 때 선호되며, 그러면 차트를 닫는 직사각형 배경이 아닌 투명한 배경에서 이미지를 얻을 수 있습니다.

이 경우 ResourceReadImage를 통해 비트맵을 배열로 전송하고 COLOR_FORMAT_ARGB_NORMALIZE를 사용해야 합니다.

파일:
Images.zip  3 kb
 
안녕하세요, 업데이트 후 다음과 같은 버그가 나타났습니다 [MT4 (1280) / ME (2375)]:

반환 값이 있는 함수에 액세스하기 위한 템플릿 매개변수를 통한 범위 확장.

예 1:   함수 호출   기본 클래스.
 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();
}  
범위 확장을 통해 또는 반환 값을 승격하지 않고 void 함수에 액세스하면 모든 것이 정상입니다.

예 2: 정적 클래스 함수 호출.
 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>();
}  

업데이트 전에 작동했습니다. MT5/MetaEditor 2560에서도 모든 것이 정상입니다.
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор возврата return - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Select 함수에 대해 동일한 동작이 아닙니다.
 void OnStart ()
{
   PositionSelectByTicket ( 0 ); // OK
   OrderSelect ( 0 );             // return value of 'OrderSelect' should be checked
}
 
안녕하세요, 업데이트 후 다음과 같은 버그가 나타났습니다 [MT4 (1280) / MetaEditor (2375)]:

클래스 본문에서 템플릿 함수를 오버로드하면 템플릿 매개변수가 함수의 올바른 버전을 재정의합니다.
(전역 함수의 경우 - 과부하 해결이 정상적으로 작동합니다.)
 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();
}