Как сохранить ссылку или указатель на массив, полученный в OnCalculate() ? Что сейчас предлагают разработчики ? - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не, гляди
Понимаю, о чем речь. Это касается же не только индикаторов, что нет указателей на массивы.
Просто не раздражает пока делать копи-пасту, поэтому не заморачиваюсь с этим.
Просто не раздражает пока делать копи-пасту, поэтому не заморачиваюсь с этим.
Меня удручает не написание кода - все это делается одной библиотечной функцией, и дальше - одна строка - и все отлично копируется.
Но вот лишнее копирование всех ценовых данных при каждом тике (а тики иногда идут очень даже часто) - это не есть хорошо.
Сейчас попробовал создавать глобальный индикаторный массив - и подставлять его в функцию OnCalculate() - не выходит. Хотя названия одни и те же, во-первых, выходит варнинг, что одна переменная скрывает другую, а во время работы - пока мы находимся в функции OnCalculate() - виден правильный ценовой массив, а как только уходим в функцию, в которой происходит обращение к этому глобальному массиву - сразу видно, что этот массив совсем другой, в нем никаких данных нет...
Грустно. Продолжаю изыскания...
Не делаю копирований, т.к. совсем не удручает тянуть хвосты через копи-пасту. Ну, может, не очень красиво выглядит, но уж точно работает без лишних тормозов.
Да, я сам так поступаю, когда индикатор в одном файле помещается. С простыми индикаторами - работает "на ура".
А с библиотечными классами как быть ? Я сейчас копирую в отдельный буффер. И уже указатель на него - передаю дальше в библиотечные классы.
Сейчас поискал - нашел решение проблем через вызов функции ДЛЛ. Но во-первых, в пакете 32-разрядная ДЛЛ, а нужна 64-разрядная (то есть, ее еще компилировать надо, а у меня MSVC не стоит), а во-вторых - мне ужасно не нравится вариант, в котором надо использовать какие-то ДЛЛки...
А с библиотечными классами как быть ?
Не увидел проблемы. Тянуть хвосты ничего не мешает в любые библиотеки.
Твою позицию я понимаю, и для коротких индикаторов - проблемы, действительно, нет.
Но вот для больших кусков кода, на мой взгляд, "тянуть хвосты" - это явная проблема. Код теряет краткость, лаконичность и прозрачность. И нарушается принцип инкапсуляции, скажем, если на каком-то уровне функции "не положено знать" о ценовых данных - в нее и не следует передавать ценовые таймсерии. А если "тянуть хвосты" - то приходится, потому, что в ней может использоваться другая функция, которой уже эта информация нужна.
Плюс - страдает поддержка кода, скажем, сейчас в функции не нужны таймсерии, мы их в нее и не передаем. А потом - решили с ними все же работать. Но, оказывается, что и на верхнем уровне таймсерий нет - и приходится переписывать всю цепочку вызовов, чтобы таймсерии передавались...