MetaTrader 4 Client Terminal build 610 - страница 48

 
evillive:
Ладно в нетбуках выбора нема, все на атомах почти. Но настольное-то железо зачем на атоме брать? Оно что, на порядки дешевле самого дешевого современного селерона? Или экономия электричества сильно большая? Так экономия эта выходит боком, расшатанными нервами и отрицательными эмоциями

Ну, у A230 TDP - 3W, у самого чахлого целерона - 25.

И в течении 4+ лет его (Atom 230) хватало для тех задач, для которых он брался.

Грабли начались именно (и только) с переходом на MT b600+. Те же MT, в том же количестве, с теми же советниками, но более старых версий, чуствовали себя отлично.

 

Не работает событие удаления объекта!

код из справки https://docs.mql4.com/ru/constants/chartconstants/enum_chartevents
добавил в инициализацию включение событий на создание и удаление объектов.

#define KEY_NUMPAD_5 12

#define KEY_LEFT 37

#define KEY_UP 38

#define KEY_RIGHT 39

#define KEY_DOWN 40

#define KEY_NUMLOCK_DOWN 98

#define KEY_NUMLOCK_LEFT 100

#define KEY_NUMLOCK_5 101

#define KEY_NUMLOCK_RIGHT 102

#define KEY_NUMLOCK_UP 104

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

//| Expert initialization function |

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

int OnInit()

{

//---


//--- включим события создания/удаления объекта с графика

ChartSetInteger(0,CHART_EVENT_OBJECT_CREATE,true);

ChartSetInteger(0,CHART_EVENT_OBJECT_DELETE,true);


//---

return(INIT_SUCCEEDED);

}

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

//| ChartEvent function |

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

void OnChartEvent(const int id, // идентификатор события

const long& lparam, // параметр события типа long

const double& dparam, // параметр события типа double

const string& sparam) // параметр события типа string

{

//--- нажатие левой кнопкой мышки на графике

if(id==CHARTEVENT_CLICK)

{

Print("Координаты щелчка мышки на графике: x = ",lparam," y = ",dparam);

}

//--- нажатие мышкой на графическом объекте

if(id==CHARTEVENT_OBJECT_CLICK)

{

Print("Нажатие кнопки мышки на объекте с именем '"+sparam+"'");

}

//--- нажатие кнопки на клавиатуре

if(id==CHARTEVENT_KEYDOWN)

{

switch(int(lparam))

{

case KEY_NUMLOCK_LEFT: Print("Нажата KEY_NUMLOCK_LEFT"); break;

case KEY_LEFT: Print("Нажата KEY_LEFT"); break;

case KEY_NUMLOCK_UP: Print("Нажата KEY_NUMLOCK_UP"); break;

case KEY_UP: Print("Нажата KEY_UP"); break;

case KEY_NUMLOCK_RIGHT: Print("Нажата KEY_NUMLOCK_RIGHT"); break;

case KEY_RIGHT: Print("Нажата KEY_RIGHT"); break;

case KEY_NUMLOCK_DOWN: Print("Нажата KEY_NUMLOCK_DOWN"); break;

case KEY_DOWN: Print("Нажата KEY_DOWN"); break;

case KEY_NUMPAD_5: Print("Нажата KEY_NUMPAD_5"); break;

case KEY_NUMLOCK_5: Print("Нажата KEY_NUMLOCK_5"); break;

default: Print("Нажата какая-то неперечисленная клавиша");

}

ChartRedraw();

}

//--- удален объект

if(id==CHARTEVENT_OBJECT_DELETE)

{

Print("Удален объект с именем ",sparam);

}

//--- создан объект

if(id==CHARTEVENT_OBJECT_CREATE)

{

Print("Создан объект с именем ",sparam);

}

//--- перемещен объект или изменены координаты точек привязки

if(id==CHARTEVENT_OBJECT_DRAG)

{

Print("Изменение точек привязки объекта с именем ",sparam);

}

//--- изменен текст в поле ввода графического объекта Edit

if(id==CHARTEVENT_OBJECT_ENDEDIT)

{

Print("Изменен текст в объекте Edit ",sparam);

}

}

 
isn-88:

Не работает событие удаления объекта!

код из справки https://docs.mql4.com/ru/constants/chartconstants/enum_chartevents
добавил в инициализацию включение событий на создание и удаление объектов.


Спасибо, исправим.
 
Инициализацию строковых статических массивов тоже исправите?
 
Zhunko:
Инициализацию строковых статических массивов тоже исправите?

А что с ними не так?
 
Zhunko:
Инициализацию строковых статических массивов тоже исправите?

не успел...
 
RickD:

А что с ними не так?

keekkenen:

не успел...
https://www.mql5.com/ru/forum/149655/page45#915648
 

Интересный вопрос. В документации по HttpOpenRequest function сказано, что все параметры-строки должны быть null-terminated strings.

Безопасно ли передавать в HttpOpenRequestW строки, если они не гарантированно null-terminated?

 

А почему после закрытия графика он продолжает находиться функцией WindowHandle?

-------

Вопрос снят. Всё нормально работает.

 

Обнаружил очень странное поведение советника в 610-ке.

Есть советник (прилагается), использующий строковые глобальные переменные советника: имя индикатора и подпапки, где он находится.

string valuta,
       nameArrow,
       name,
       myFile="Aller-Hist-multyPrice.csv",
       folder_hist="Stochastic\\",//имя поддиретории
       hist_name=   "Hist-multyPrice";//имя индикатора гистограммы

При смене тайм-фрейма графика, к которому прикреплен советник, значения folder_hist и hist_name теряются. Если же в функции init() повторить присваивание

       folder_hist="Stochastic\\",//имя поддиретории
       hist_name=   "Hist-multyPrice";//имя индикатора гистограммы
то при смене тайм-фрейма все работает штатно.