Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Таки примерчик бы...
Примерно так (не структура, а класс, конечно):
Что куда вставлять, думаю, понятно.
В конце не забыть:
Переформулирую. Вас интересует, возможно ли при определении функции
указывать в качестве её формального параметра только переменную типа структуры, игнорируя указания имени самой структуры? Т.е. указывать, например, не void funcName(MqlTradeRequest & req), а просто void funcName(& req)?
Да. нужно универсальная функция для любой простой структуры --- Без методов, дин. массивов. и тп. --- чисто последовательность определенных типов данных.
Т.к. состав скрипта заранее определен мной, я могу явно задать количество структур, с которыми буду иметь дело.
Но чтобы передавать любую из этих структур в функцию с одним именем, приходится пользоваться перегрузкой.
Тут возникают сложности.
1. кол.во структур ограничено, т.к. перегрузка при большем кол-ве элементов пудет замедлять работу.
2. Я сам могу при копировании перегрузочных функций совершить ошибку.
PS// Функция funWrite() совершает определенные расчеты и совершает выполнение FileWriteArray() с определенной последовательностью и вычисляемыми параметрами (с какого индекс начать запись, сколько прочитать).
Да. нужно универсальная функция для любой простой структуры --- Без методов, дин. массивов. и тп. --- чисто последовательность определенных типов данных.
Т.к. состав скрипта заранее определен мной, я могу явно задать количество структур, с которыми буду иметь дело.
Но чтобы передавать любую из этих структур в функцию с одним именем, приходится пользоваться перегрузкой.
Понятно. Как-то ранее я задавал аналогичный вопрос относительно того, можно ли не указывать тип массивов при определении функции. Чуть ниже там Рош посоветовал перегрузку.
Поэтому я пришёл к выводу, что "встроенные" функции типа FileWriteArray(), у которых некоторые параметры указаны с типом void, сами являются перегруженными функциями. Просто мы не видим их реализацию.
Понятно. Как-то ранее я задавал аналогичный вопрос относительно того, можно ли не указывать тип массивов при определении функции. Чуть ниже там Рош посоветовал перегрузку.
Поэтому я пришёл к выводу, что "встроенные" функции типа FileWriteArray(), у которых некоторые параметры указаны с типом void, сами являются перегруженными функциями. Просто мы не видим их реализацию.
Встроенные функции написаны на полноценном языке программирования.
В C например можно передать переменные любого количества, а уже в функции получать список переданных параметров, и рассматривать их.
void fun(...) { }
В MQL5 такой возможности нет. В частности отсутствуют ссылки и указатели на простые типы данных и структуры...
Наверно это как то повязано на безопасности. Доступ к данным. Выход за пределы песочницы.
Но все же хочется чтобы данные возможности были реализованы в MQL5
Наверно это как то повязано на безопасности. Доступ к данным. Выход за пределы песочницы.
Но все же хочется чтобы данные возможности были реализованы в MQL5
Примерно так (не структура, а класс, конечно):
Что куда вставлять, думаю, понятно.
В конце не забыть:
Вот это я понимаю помощь: реальная и вполне конкретная. Благодарю. Где тут плюсовалка?
Кстати... я тут прикинул - этого варианта мне вполне достаточно. Но не хотелось бы оставаться формалистом... поэтому из любознательности решил, что всё же не помешало бы попытаться организовать двумерный массив. MQL чем-то напоминает C/C++, который я благополучно подзабыл за последний десяток годков. Сейчас попытался сделать так (здесь без цикла - специально упростил):
Компилятор выдаёт ошибку: "'MABuffer' - parameter conversion is not allowed".
Интересно, что делаю не так? Если не ошибаюсь, при объявлении класса с многомерным массивом необходимо задать численно одно из измерений, придав ему таким образом статичность? ArrayResize тем временем задаёт новый размер для первого измерения.
x100intraday:
Интересно, что делаю не так?
1) SetIndexBuffer работает с массивом double одной размерности.
2) Не понятно, зачем вы используете TBuffer*, т.е. используете динамику там, где она не нужна?
3) (СОВЕТ) В примере вполне можно было обойтись структурой, а не классом, для небольшой экономии памяти и пары сотен тактов.
mql5:
3) (СОВЕТ) В примере вполне можно было обойтись структурой, а не классом, для небольшой экономии памяти и пары сотен тактов.
В советнике используется обращение к индикатору на другом таймфрейме. На тестах в советнике появляются неверные данные от индикатора.
Сам советник работает на M5, а индикатор на H4. Индикаторы, которые вызываются на том же таймфрейме (M5), возвращают правильные значения.
Возвращаемые значения похожи на значения индикатора, но отличаются от реальных, которые видны при наложении индикатора в окне ценового графика.
В чем проблема?
Примерный код вызова индикатора: