mktr8591 #: Не понял задачу - нужно чтобы класс MqlRatestime (шаблон для него) объявлялся внутри макроподстановки?
Нет, классы уже объявлены. В комментариях указано, какой результат нужно получить. На вход в макрос идет объект, а на выходе вызывается класс, содержащий название типа этого объекта.
Нет, классы уже объявлены. В комментариях указано, какой результат нужно получить. На вход в макрос идет объект, а на выходе вызывается класс, содержащий название типа этого объекта.
Как решить эту задачу не знаю.
А чтобы ArraySortStruct с двумя параметрами - вот так работает:
#define ArraySortStruct(ARRAY, FIELD) SortOnField_##FIELD::SORT::Sort(ARRAY)
ArraySortStruct_Define(SortOnField_, open)
ArraySortStruct_Define(SortOnField_, high)
ArraySortStruct_Define(SortOnField_, time)
voidOnStart()
{
MqlRates Rates[];
CopyRates(_Symbol, PERIOD_CURRENT, 0, 5, Rates); // Взяли барыPrint("\nБары без сортировки - как получили.");
ArrayPrint(Rates);
Print("\nСортируем по open-цене.");
ArraySortStruct(Rates, open);
ArrayPrint(Rates);
Print("\nСортируем по high-цене.");
ArraySortStruct(Rates, high);
ArrayPrint(Rates);
Print("\nСортируем по времени.");
ArraySortStruct(Rates, time);
ArrayPrint(Rates);
}
Может для кого то это не новость, но для меня неожиданно. Если DLL используется одновременно в разных программах MT5, то имейте ввиду, что она загружается единожды первой запущенной программой которая её использует. То есть окружение DLL находится в одном общем процессе, независимо от того, сколько раз вы её импортируете. В чём же фишка? В том, что глобальные указатели используемые в DLL, находятся в пространстве одного общего процесса. И это очень удобно.
Roman #: Может для кого то это не новость, но для меня неожиданно. Если DLL используется одновременно в разных программах MT5, то имейте ввиду, что она загружается единожды первой запущенной программой которая её использует. То есть состояние DLL находится в одном общем процессе, независимо от того, сколько раз вы её импортируете. В чём же фишка? В том, что глобальные указатели используемые в DLL, находятся в пространстве одного общего процесса. И это очень удобно.
Это не новость, они так всегда от рождения работают.
только если данные больше чем __atomic__ надо доступ обкладывать/защищать критическими секциями (или mutex в терминал std::thread)
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Не знаю, как сохранить функционал (подполе и метод) и удобное использование. Возможно, этот вариант подойдет под ваши задачи.
Применение.
That was so quick and now it works just fine, thank you!
To Russia with love❤️! ;-)
В текущей версии MQL5 возможно ли такое? Мне не хватило находчивости преодолеть эту преграду:
Когда-то в MQL5 можно было легко написать такой макрос.
В текущей версии MQL5 возможно ли такое? Мне не хватило находчивости преодолеть эту преграду:
Не понял задачу - нужно чтобы класс MqlRatestime (шаблон для него) объявлялся внутри макроподстановки?
Не понял задачу - нужно чтобы класс MqlRatestime (шаблон для него) объявлялся внутри макроподстановки?
Нет, классы уже объявлены. В комментариях указано, какой результат нужно получить. На вход в макрос идет объект, а на выходе вызывается класс, содержащий название типа этого объекта.
Мне кажется, надо иметь разную макроподстановку для параметров разного типа.
Задача родилась из этой.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2022.02.11 15:44
Выделил цветом входной параметр, в котором вынужден указывать тип. В макросе получается из-за этого три входных. А хотелось бы два - без типа.
Нет, классы уже объявлены. В комментариях указано, какой результат нужно получить. На вход в макрос идет объект, а на выходе вызывается класс, содержащий название типа этого объекта.
Как решить эту задачу не знаю.
А чтобы ArraySortStruct с двумя параметрами - вот так работает:
А чтобы ArraySortStruct с двумя параметрами - вот так работает:
Вы правы, Спасибо! Перемудрил я на ровном месте. Оставлю Ваш вариант для сортировки.
Применение.
ЗЫ Жаль, по подполю или методу не получается.
Если DLL используется одновременно в разных программах MT5,
то имейте ввиду, что она загружается единожды первой запущенной программой которая её использует.
То есть окружение DLL находится в одном общем процессе, независимо от того, сколько раз вы её импортируете.
В чём же фишка? В том, что глобальные указатели используемые в DLL, находятся в пространстве одного общего процесса.
И это очень удобно.
Может для кого то это не новость, но для меня неожиданно.
Если DLL используется одновременно в разных программах MT5,
то имейте ввиду, что она загружается единожды первой запущенной программой которая её использует.
То есть состояние DLL находится в одном общем процессе, независимо от того, сколько раз вы её импортируете.
В чём же фишка? В том, что глобальные указатели используемые в DLL, находятся в пространстве одного общего процесса.
И это очень удобно.
Это не новость, они так всегда от рождения работают.
только если данные больше чем __atomic__ надо доступ обкладывать/защищать критическими секциями (или mutex в терминал std::thread)