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

 
Rosh:
Счет был забанен торговым сервером за чрезмерную торговую активность. Торговая платформа защищается и отключает те счета, которые бездумно шлют торговые запросы на каждый тик.

Торговые запросы понятно, там была модификация. Так задумано стратегией.  Не знаю как теперь будет работать эксперт но я отключил модификацию на каждый тик. Просьба большая - включите счет обратно. ему 3 мес, хорошая стата. 

 

Al_key:

Ключ /portable поможет?

Либо вечный /portable, либо отключайте UAC и после перезагрузки запускайте терминал уже без ключа /portable.

 
avoitenko:

Билд 842/64 бит. При объявлении канвы:

появляется ошибка:

unresolved static variable 'CCanvas::m_default_colors'

Это только у меня одного такое?
Требования к размещению статических переменных изменились.

Ошибка возникла потому, что Вы используете объект со статическими переменными на глобальном уровне, и в этом случае компилятор требует явно разместить статический массив.
Это необходимо для того, что бы программист явно указал порядок инициализации статических членов класса/структуры.

В данном случае проблема заключается в том, что статический массив 'CCanvas::m_default_colors' может быть использован в конструкторе CCanvas на чтение и тогда, если он будет размещён и проинициализирован программистом после размещения объекта класса CCanvas, его значения в конструкторе CCanvas::CCanvas будут не теми, которые ожидаются. Поэтому компилятор проверяет, что бы статические члены класса/структуры были размещены и проинициализированы до использования объекта класса/структуры.

Мы подумаем, возможно что-то изменим.

Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
  • www.mql5.com
Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5
 

Продолжаю переход на мкуэл 5. В мт4 такой код проходил на ура. Сейчас проблема с коннектом к мускулу.

#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
#import

int i = 0;
int mysql;
string query;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
   mysql = mysql_init(mysql);
   if (mysql!=0) Print("allocated");
   string host="localhost";
   string user="root";
   string password="1111";
   string DB="fxdb";
   int clientflag=0;
   int port=3306;
   string socket="";
   int
   res=mysql_real_connect(mysql,host,user,password,DB,port, socket,clientflag);
   int err=GetLastError();
   if (res==mysql) Print("connected");
   else Print("error=",mysql," ",mysql_errno(mysql)," ");
   
 
   
   //mysql_real_query(mysql,query,length);
   //int myerr=mysql_errno(mysql);
   //if (myerr>0)Print("error=",myerr); else Print(i, "good"); 

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
      mysql_close(mysql);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+

Выдает ошибку:

2013.08.03 12:41:41    testMySql (AUDCAD,H1)    error=313111904 2005

Там предупреждение выводится о несоответствии типа переменной socket, ставлю NULL вместо переменной - не помогает. Еще я слышал что МТ5 как-то по особому строки передает в DLL. Из этой оперы? Как справиться, подскажите пожалуйста.

 
mql5:
Требования к размещению статических переменных изменились.
Поэтому компилятор проверяет, что бы статические члены класса/структуры были размещены и проинициализированы до использования объекта класса/структуры.
Спасибо. Теперь всё понятно.
 
Al_key:
Еще я слышал что МТ5 как-то по особому строки передает в DLL. Из этой оперы? Как справиться, подскажите пожалуйста.
В этой статье есть живой пример подключения к базе MySQL.
 
Еще вопрос: Установил впервые МТ5 стандартом, демо аккаунт - метаквотс. Смотрю из мажоров только 4 пары, USDCAD нет. Немного времени прошло, подгрузилось еще куча разных пар, в том числе и CFD и кнадец. Потом перешел на использование /portable. Естественно опять минимум пар по умолчанию, только в этот раз почему то не подгружаются другие, а мне демо USDCAD очень желательно в пятом МТ иметь.
 

Запоминаю ТФ, переключаю на М1, возвращаюсь на текущий.

Проблема: не могу запомнить присвоить текущий ТФ

int current_period_tf;
   string n;
   if(_Period==PERIOD_M1)  {current_period_tf=0x00000001;};
   if(_Period==PERIOD_M2)  {current_period_tf=0x00000002;};
   if(_Period==PERIOD_M3)  {current_period_tf=0x00000004;};
   if(_Period==PERIOD_M4)  {current_period_tf=0x00000008;};
   if(_Period==PERIOD_M5)  {current_period_tf=0x00000010;};
   if(_Period==PERIOD_M6)  {current_period_tf=0x00000020;};
   if(_Period==PERIOD_M10) {current_period_tf=0x00000040;};
   if(_Period==PERIOD_M12) {current_period_tf=0x00000080;};
   if(_Period==PERIOD_M15) {current_period_tf=0x00000100;};
   if(_Period==PERIOD_M20) {current_period_tf=0x00000200;};
   if(_Period==PERIOD_M30) {current_period_tf=0x00000400;};
   if(_Period==PERIOD_H1)  {current_period_tf=0x00000800;};
   if(_Period==PERIOD_H2)  {current_period_tf=0x00001000;};
   if(_Period==PERIOD_H3)  {current_period_tf=0x00002000;};
   if(_Period==PERIOD_H4)  {current_period_tf=0x00004000;};
   if(_Period==PERIOD_H6)  {current_period_tf=0x00008000;};
   if(_Period==PERIOD_H8)  {current_period_tf=0x00010000;};
   if(_Period==PERIOD_H12) {current_period_tf=0x00020000;};
   if(_Period==PERIOD_D1)  {current_period_tf=0x00040000;};
   if(_Period==PERIOD_W1)  {current_period_tf=0x00080000;};
   if(_Period==PERIOD_MN1) {current_period_tf=0x00100000;};
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

Переключиться на М1 получается

ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);

Для объекта

ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);

работает. Для чарта

ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

компилятор выдаёт

'current_period_tf' - can't convert enum

Что за загадка?

upd преобразовывать через строку и типы менять пробовал, не получается.

 
Al_key:
Еще вопрос: Установил впервые МТ5 стандартом, демо аккаунт - метаквотс. Смотрю из мажоров только 4 пары, USDCAD нет. Немного времени прошло, подгрузилось еще куча разных пар, в том числе и CFD и кнадец. Потом перешел на использование /portable. Естественно опять минимум пар по умолчанию, только в этот раз почему то не подгружаются другие, а мне демо USDCAD очень желательно в пятом МТ иметь.
Сохраните настроенный профиль по дефолту Файл - Профили - Default
 
Silent:

...

Что за загадка?

upd преобразовывать через строку и типы менять пробовал, не получается.

int current_period_tf;
ENUM_TIMEFRAMES current_period_tf;
Причина обращения: