Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1175

Igor Makanu
10122
Igor Makanu  
Peter Vorobyev:

Изменить исходники MQ и вытащить методы в публичные понятно что не наш метод :)

#define private public

если не хотите так, то все элементы панели CAppDialog формируются графическими обьектами, нужно знать только имя обьекта и после создания экземпляра класса CAppDialog напишите  метод который перекрасит бордеры  CAppDialog в нужный Вам цвет

Peter Vorobyev
436
Peter Vorobyev  
Igor Makanu:

если не хотите так, то все элементы панели CAppDialog формируются графическими обьектами, нужно знать только имя обьекта и после создания экземпляра класса CAppDialog напишите  метод который перекрасит бордеры  CAppDialog в нужный Вам цвет

через this. можно перенести код с поиском нужного контрола внутр класса. Это работает.

А вот как зная имя объекта как к нему обратиться я не знаю. 

Igor Makanu
10122
Igor Makanu  
Peter Vorobyev:

через this. можно перенести код с поиском нужного контрола внутр класса. Это работает.

А вот как зная имя объекта как к нему обратиться я не знаю. 

https://www.mql5.com/ru/docs/objects/objectsetinteger

но по моему проще для своих задач все таки переопределить макроподстановкой все закрытые методы и поля в публичные 

Peter Vorobyev
436
Peter Vorobyev  
Igor Makanu:

https://www.mql5.com/ru/docs/objects/objectsetinteger

но по моему проще для своих задач все таки переопределить макроподстановкой все закрытые методы и поля в публичные 

ObjectSetInteger - работает :), я про него забыл совсем.
Можете пример для  #define private public - что то я не понял как метод переопределить. Это в своем классе надо делать?

Igor Makanu
10122
Igor Makanu  
Peter Vorobyev:

ObjectSetInteger - работает :), я про него забыл совсем.
Можете пример для  #define private public - что то я не понял как метод переопределить. Это в своем классе надо делать?

#define private public
#include <Controls\Dialog.mqh>
// тут весь Ваш класс который наследуете от CAppDialog
#undef private
c undef поэкспериментируйте, можно после макроподстановки отменить ее и закрыть все теперь публичные методы CAppDialog в уже своем классе, чтобы в дальнейшем было удобно код писать
Peter Vorobyev
436
Peter Vorobyev  
Igor Makanu:

Игорь, да работает. Спасибо.

Sunriser
84
Sunriser  

Запускаю генетическую оптимизацию советника на MT5  с подключением локальных агентов в домашней сети.

Советник берет некоторые исходные данные из текстового файла.

Файл открываю с флагами: FILE_READ|FILE_SHARE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON

Чтобы локальные агенты нашли файл, пришлось скопировать его в Common папку терминала локального компьютера.

Неужели единственный выход - каждый раз вручную дублировать нужные файлы на все локальные машины?

Терминал не может сам отправлять этот файл вместе с входными параметрами тестирования?

Сергей Таболин
2981
Сергей Таболин  
Как программно узнать цену уровня веера фибоначчи на текущем баре?
Alexey Viktorov
29009
Alexey Viktorov  
Сергей Таболин:
Как программно узнать цену уровня веера фибоначчи на текущем баре?
bool  ObjectGetDouble(
   long                            chart_id,          // идентификатор графика
   string                          name,              // имя объекта
   ENUM_OBJECT_PROPERTY_DOUBLE     OBJPROP_LEVELVALUE,           // идентификатор свойства
   int                             prop_modifier,     // модификатор свойства
   double&                         double_var         // сюда примем значение свойства
   );
Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. [in]  Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора...
Сергей Таболин
2981
Сергей Таболин  
Alexey Viktorov:
void OnTick()
{
//---
   Print(TimeToString(TimeLocal()));
   Print(ObjectGetDouble(0,"TrL",OBJPROP_PRICE));
}

Выдаёт цену первой точки трендовой линии. (((

2020.01.18 11:46:37.233 2019.11.29 00:00:00   2019.11.29 00:00
2020.01.18 11:46:37.233 2019.11.29 00:00:00   1.00245
2020.01.18 11:46:39.533 2019.11.29 08:00:00   2019.11.29 08:00
2020.01.18 11:46:39.533 2019.11.29 08:00:00   1.00245
2020.01.18 11:46:41.834 2019.11.29 16:00:00   2019.11.29 16:00
2020.01.18 11:46:41.834 2019.11.29 16:00:00   1.00245
2020.01.18 11:46:44.135 2019.12.02 00:00:00   2019.12.02 00:00
2020.01.18 11:46:44.135 2019.12.02 00:00:00   1.00245