Ошибки, баги, вопросы - страница 2653

 
bool CheckTradingPermission()
  {
//--- Для режима реального времени
   if(IsRealtime())
     {
      //--- Проверка соединения с сервером
      if(!TerminalInfoInteger(TERMINAL_CONNECTED))
         return(false);
      //--- Разрешение на торговлю на уровне данной запущенной программы
      if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
         return(false);
      //--- Разрешение на торговлю на уровне терминала
      if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
         return(false);
      //--- Разрешение на торговлю для текущего счета
      if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
         return(false);
      //--- Разрешение на автоматическую торговлю для текущего счета
      if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
         return(false);
     }
//---
   return(true);
  }
ANATOLI KAZHARSKI код

Anatoli Kazharski
Anatoli Kazharski
  • www.mql5.com
Опубликовал статью ZigZag всему голова (Часть II): Примеры получения, обработки и отображения данных В первой части был описан модифицированный индикатор ZigZag и класс для получения данных индикаторов такого типа. Теперь мы покажем как создать индикаторы на основе этих инструментов, а также напишем эксперта для тестов, который будет заключать...
 
Fast235:
ANATOLI KAZHARSKI код

Спасибо, не заметил MQL_TRADE_ALLOWED.

 
fxsaber:

Туплю, не могу решить простую задачу. Нужно при следующих настройках запуска советника понять, что торговля запрещена.


Такая проверка не прокатывает.


OrderCheck - из пушки по воробьям. Прошу подсказать.

С мобилы не подскажу точно, но вот: MQL_TRADE_ALLOWED
 
Баг MT5(build 2323), один и тот же шаблонный объект B<int> можно создать после объекта класса B<void*>, но если сделать это перед, то возникает ошибка компиляции.
Возможно причина в  работе кеша генератора шаблонных классов.

template<typename T>
class B{
   T data;
};

void OnStart (){ 
   //B<int> b_int_0;    // Compiler Error  'void' - unexpected token, probably type is missing?
   B<void*> b;          // OK
   B<int> b_int_1;      // OK
}
 

Баг MT5(build 2340)  дважды используется один и тот же код: первый проход - успешная компиляция, второй - ошибка компиляции.
Видимо проблемы связаны с кешом генератора шаблонных функций. 
Ошибка исчезает если для шаблонной функции "
void run(const T &ff) заменить передачу по ссылке на передачу по значению "void run(const T ff)".

void func(){
}

template<typename T>
void run(const T &ff){
   ff();
}

void OnStart (){ 
   {
      typedef void(*f_ptr)();
      f_ptr ff = func;
      run(ff);             // OK
   }
   {
      typedef void(*f_ptr)();
      f_ptr ff = func;
      run(ff);            // Compile Error: 'ff' - parameter conversion not allowed     
   }
}
 

Баг MT5(build 2340)  Ошибка компиляции при попытке доступа к internal class для шаблонного параметра шаблонной функции.

class B{
public:
   class C{};
};


// Bypass Compile Error
template<typename T>
class GetClassType{
public:
   class type : public T{};
};


template<typename T>
void func(const T &b){
   T::C* c_ptr = new T::C;          // Compile Error: 'T' - struct undefined    
   
   // Bypass Compile Error
   GetClassType<T>::type::C* c_ptr_bps = new GetClassType<T>::type::C();
};

void OnStart (){ 
   B b;
   func(b);
}
 

Кто-нибудь может просветить по такому вопросу:

имеем dll написанную на C# ,но скомпилированную:

- для МТ5 обычный проект C# - Net Framework dll - 64 бит

- для МТ4 обычный проект C# - Net Framework dll - 32 бит, но обернутый в managed  C вызовы

исходники dll на 100% идентичные , естественно за исключением обертки для МТ4 ,

ОС Win10-64

ну и сам то вопрос, почему МТ4 совершает вызовы функций ровно в 4 раза быстрее , цифры примерно такие 100 000 вызовов dll на МТ4 7,5 сек , на МТ5 30 сек

 
Igor Makanu:

Кто-нибудь может просветить по такому вопросу:

имеем dll написанную на C# ,но скомпилированную:

- для МТ5 обычный проект C# - Net Framework dll - 64 бит

- для МТ4 обычный проект C# - Net Framework dll - 32 бит, но обернутый в managed  C вызовы

исходники dll на 100% идентичные , естественно за исключением обертки для МТ4 ,

ОС Win10-64

ну и сам то вопрос, почему МТ4 совершает вызовы функций ровно в 4 раза быстрее , цифры примерно такие 100 000 вызовов dll на МТ4 7,5 сек , на МТ5 30 сек

ИМХО. C-runtime в одном случае и виртуальная машина в другом.

 
пропустил нововведение на форуме, там где имя фамилия, дата и рядом с кнопкой переводы, цифры - 1 2 3 , есть не у всех, вчера вроде и у меня не было, почему не увсех, и на чем определяются страницы?
[Удален]  

В эксперте реализован графический интерфейс. Также реализованы пользовательские события (например, события по изменению графического интерфейса). Произвожу отладку на реальных данных (F5). Как только ставлю точку останова на пользовательское событие - отладчик останавливается, но последующее нажатие на F5 (продолжение отладки) не приводит к изменению в самом графическом интерфейсе. Вопрос: так и должно быть, или это баг отладчика?

Если убрать точку останова (отладка продолжается) - изменения в графическом интерфейсе происходят нормально.

МТ5, билд 2340.