Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не получается сделать красиво, да и не красиво тоже не получается.
Есть n-ное количество массивов отсортированных по возрастанию, не так чтоб сильно-сильно много, но всё таки дофига.
Нужно получить один массив отсортированный по возрастанию без повторений значений элементов массивов.
у вас не вполне "красиво" получились исходные массивы
int aaa[] ={...} ; // 5 элементов
int sss[] ={...} ; // 200 штук
int ddd[] ={...} ; // ещё полтыщи, зато сортированы все
int res[];
так как в MQL нет такой сущности как "указатель или ссылка на массив", ничего особо красивого и быстрого не придумается.
максимум сделать шаблонную функцию
template <typename T>
int ArrayMergeInplace_UniqueSorted<T> ( T &dest[], const T& src[] ) {
// тут скучный код
}
и многократно её применять
---
лучше исходные массивы aaa,sss получить в более удобном виде, как объекты.
у вас не вполне "красиво" получились исходные массивы
int aaa[] ={...} ; // 5 элементов
int sss[] ={...} ; // 200 штук
int ddd[] ={...} ; // ещё полтыщи, зато сортированы все
int res[];
так как в MQL нет такой сущности как "указатель или ссылка на массив", ничего особо красивого и быстрого не придумается.
максимум сделать шаблонную функцию
template <typename T>
int ArrayMergeInplace_UniqueSorted<T> ( T &dest[], const T& src[] ) {
// тут скучный код
}
и многократно её применять
---
лучше исходные массивы aaa,sss получить в более удобном виде, как объекты.
Ничего не понял)
Ничего не понял)
пиши функцию "объединение двух сортированных массивов" и многократно (сколько у тебя там исходных) применяй.
----
если были-бы указатели как C/C++ можно было-бы писать быструю функцию объединения многих массивов
или когда исходные массивы не int sss[] а объекты, например CArray.
---
массивы откуда то взялись ? да ещё в таком неудобном виде...
вот лучше править/менять именно там, как в анекдоте "их надо давить , пока они маленькие"
пиши функцию "объединение двух сортированных массивов" и многократно (сколько у тебя там исходных) применяй.
----
если были-бы указатели как C/C++ можно было-бы писать быструю функцию объединения многих массивов
или когда исходные массивы не int sss[] а объекты, например CArray.
---
массивы откуда то взялись ? да ещё в таком неудобном виде...
вот лучше править/менять именно там, как в анекдоте "их надо давить , пока они маленькие"
1. Ну наверное придётся так делать, но боюсь что таким макаром будет слишком долго объединяться.
2. ООП не освоил.
3. Так и не понял про не удобный вид. В первом посте я их так записал, чтоб была максимально понятна задача.
У меня в тестере, в одиночном прогоне при наличии позиции, в массив структур записывается максимальное эквити(если позиция в плюсе) за минуту или минимальное эквити (если позиция в минусе) за минуту и время открытия бара.
Много (штук сто) прогонов одного советника на разных инструментах, в итоге нужно получить суммарный график эквити.
Позиции могут открываться и закрываться в разное время, время в позиции тоже разное. Поэтому мне нужно все массивы с временем объединить в один, а потом суммировать эквити по времени.
ЗЫ. почему double, а не datetime? Так сути задачи это не меняет, а в графики Graphic.mqh можно использовать только double.
пиши функцию "объединение двух сортированных массивов" и многократно (сколько у тебя там исходных) применяй.
Спасибо.
Нормально получилось.
Для моих целей достаточно шустренько.
1. Ну наверное придётся так делать, но боюсь что таким макаром будет слишком долго объединяться.
2. ООП не освоил.
3. Так и не понял про не удобный вид. В первом посте я их так записал, чтоб была максимально понятна задача.
У меня в тестере, в одиночном прогоне при наличии позиции, в массив структур записывается максимальное эквити(если позиция в плюсе) за минуту или минимальное эквити (если позиция в минусе) за минуту и время открытия бара.
Много (штук сто) прогонов одного советника на разных инструментах, в итоге нужно получить суммарный график эквити.
Позиции могут открываться и закрываться в разное время, время в позиции тоже разное. Поэтому мне нужно все массивы с временем объединить в один, а потом суммировать эквити по времени.
ЗЫ. почему double, а не datetime? Так сути задачи это не меняет, а в графики Graphic.mqh можно использовать только double.
хорошо, что получилось. И достаточно быстро, раз успел написать функцию, применить и результатом доволен.
вообще такие вещи как "в N прогонов собрать данные, сохранить, потом вывести, покрутить/повертеть и что-то над ними думать" неплохо решать через через SQL, он прямо под это просится. Так что советую его изучить. Возможно будет даже полезнее чем ООП
хорошо, что получилось. И достаточно быстро, раз успел написать функцию, применить и результатом доволен.
вообще такие вещи как "в N прогонов собрать данные, сохранить, потом вывести, покрутить/повертеть и что-то над ними думать" неплохо решать через через SQL, он прямо под это просится. Так что советую его изучить. Возможно будет даже полезнее чем ООП
Эх, где ж на всё, что хочется время то взять? :(
Попадались мне тут на сайте вопросы по SQL. Слишком страшная это штука как мне показалось.
А если серьёзно. Не было у меня до сих пор задач, где бы пригодились базы данных.
Сейчас вот да, знание SQL сильно пригодилось бы, а без них приходится решать большую задачу, разбив на куски и костылить, костылить, костылить.
Глобально, мне нужно разные представления графика эквити.
Один инструмент, несколько, за весь период тестирования, за часть периода, в общем разные комбинации кривой средств. Вот под каждую придётся писать либо функции в скрипт, либо отдельные скрипты.
SQL сильно облегчила бы задачу. Наверное)
Типа того.
Эх, где ж на всё, что хочется время то взять? :(
Попадались мне тут на сайте вопросы по SQL. Слишком страшная это штука как мне показалось.
А если серьёзно. Не было у меня до сих пор задач, где бы пригодились базы данных.
Сейчас вот да, знание SQL сильно пригодилось бы, а без них приходится решать большую задачу, разбив на куски и костылить, костылить, костылить.
Глобально, мне нужно разные представления графика эквити.
Один инструмент, несколько, за весь период тестирования, за часть периода, в общем разные комбинации кривой средств. Вот под каждую придётся писать либо функции в скрипт, либо отдельные скрипты.
SQL сильно облегчила бы задачу. Наверное)
отвлечённо..
к SQL есть очень хорошие тулзы для конструирования запросов и построения графиков. Вот https://www.metabase.com (не реклама - он opensource и если не использовать их облако а ставить на свой комп, то бесплатный).
ещё очень удобно через R или Python или Julia в нотебуках https://jupyter.org/ ..но нужно время и это ещё один-другой язык
зато есть нюанс: в отличии от mql, SQL (и R/Python/Julia) может пригодится в прочей реальной жизни :-)
Для моих целей достаточно шустренько.
Вот такой вариант не нравится?
результат