Блоки индикатора, вместо iCustom

 
Здравствуйте, подскажите что и где смотреть. Возникла такая проблема, хочу вместо функции вызова индикатора через iCustom. Хочу его "как то" вызывать как обычный тех. индикатор. Например  iRSI(NULL,0,RSI_Per,PRICE_CLOSE,i);
Только использовать как Блоки вместо Айкастома. Что то такого Trend-direction(NULL,0,Trendper,i);
Подскажите как переделать или сделать эти самые блоки индикаторов, что-бы работа была в 5 раз быстрее. Буду благодарен в любой помощи!
 

Вот как пример этот индикатор, как сделать его блоком, что бы использовать в другом индикаторе? Хочу перенести алгоритм этого индикатора в другой, что бы были как одно целое. Поиск такой проблемы и решения пока не нашел. Функция iCustom не подходит.

 
Yarik19:

Вот как пример этот индикатор, как сделать его блоком, что бы использовать в другом индикаторе? Хочу перенести алгоритм этого индикатора в другой, что бы были как одно целое. Поиск такой проблемы и решения пока не нашел. Функция iCustom не подходит.

Такие утверждения неплохо-бы подкреплять аргументами. Почему-то всем подходит, а вам нет...

 
Alexey Viktorov:   Такие утверждения неплохо-бы подкреплять аргументами. Почему-то всем подходит, а вам нет...
Ну какие тут аргументы - руководитель курсового проекта требует
 
Alexey Viktorov:

Такие утверждения неплохо-бы подкреплять аргументами. Почему-то всем подходит, а вам нет...


Самый главный аргумент. Это скорость, что в алготрейдинге очень важна. Функция iCustom очень медленная . Вот и хочу построить блоки таких индикаторов, что бы уменьшить время оптимизации,нагрузку на терминал.

 
Yarik19:

Самый главный аргумент. Это скорость, что в алготрейдинге очень важна. Функция iCustom очень медленная . Вот и хочу построить блоки таких индикаторов, что бы уменьшить время оптимизации,нагрузку на терминал.


Универсального способа не существует (если отбросить iCustom), т. к. каждый индикатор имеет свою специфику. Чтобы встроить один индикатор в другой индикатор или индикатор в советник, нужно переписать конкретный индикатор с учетом того, что он будет встроен. В этом случае, чаще всего, находятся пути для оптимизации расчетов индикатора. Ведь в советнике зачастую не требуются показания на всей истории.

 
Ihor Herasko:

Универсального способа не существует (если отбросить iCustom), т. к. каждый индикатор имеет свою специфику. Чтобы встроить один индикатор в другой индикатор или индикатор в советник, нужно переписать конкретный индикатор с учетом того, что он будет встроен. В этом случае, чаще всего, находятся пути для оптимизации расчетов индикатора. Ведь в советнике зачастую не требуются показания на всей истории.


Не знаю как на практике это будет выглядеть. Что бы вставить один индикатор в другой, Лучше использовать функцию double trend(int trendpperiod , int i и так далее) или через void? Просто не могу понять в какую сторону смотреть...

 
Yarik19:

Не знаю как на практике это будет выглядеть.

Будет выглядеть как функция, рассчитывающая значение индикатора на конкретном баре или на нескольких барах. Это уже зависит от задач, поставленных перед автором подобной функции, и его фантазии. Работать может, как быстрее, так и медленнее, чем iCustom. Опять же, зависит от реализации.

iCustom может работать достаточно медленно не потому, что функция плохая, а потому что она имеет дело с индикатором, который, вполне возможно, написан неоптимально.

Что бы вставить один индикатор в другой, Лучше использовать функцию double trend(int trendpperiod , int i и так далее) или через void? Просто не могу понять в какую сторону смотреть...

Примерно так и будет выглядеть. Но поймите, что у этой функции обязательно должна быть реализация, а не просто объявление. Тип данных, возвращаемых функцией, тоже будет зависеть от поставленной задачи.

Таким образом, для одного конкретного индикатора всегда можно найти решение. А вот общего решения для всех индикаторов не существует. Даже iCustom не всегда поможет, т. к. многие индикаторы отображают свои данные в виде графических объектов, а не при помощи индикаторных буферов.

 
Ihor Herasko:

Будет выглядеть как функция, рассчитывающая значение индикатора на конкретном баре или на нескольких барах. Это уже зависит от задач, поставленных перед автором подобной функции, и его фантазии. Работать может, как быстрее, так и медленнее, чем iCustom. Опять же, зависит от реализации.

iCustom может работать достаточно медленно не потому, что функция плохая, а потому что она имеет дело с индикатором, который, вполне возможно, написан неоптимально.

Примерно так и будет выглядеть. Но поймите, что у этой функции обязательно должна быть реализация, а не просто объявление. Тип данных, возвращаемых функцией, тоже будет зависеть от поставленной задачи.

Таким образом, для одного конкретного индикатора всегда можно найти решение. А вот общего решения для всех индикаторов не существует. Даже iCustom не всегда поможет, т. к. многие индикаторы отображают свои данные в виде графических объектов, а не при помощи индикаторных буферов.


Спасибо! Очень грамотно все расписано!

Универсального значения нет, я это понял. Значит буду стараться что то найти. Просто думал есть какой-то шаблон что бы писать все индикаторы под один. Как в примере один известный индикатор РД-комбо, там есть индикатор рд-форекаст(Что в отдельности был подвалом).

Трудновата задача оказалась, придется либо своими силами либо через фриланс идти)

 
Ihor Herasko:

...

iCustom может работать достаточно медленно не потому, что функция плохая, а потому что она имеет дело с индикатором, который, вполне возможно, написан неоптимально.

...

Если точнее выразиться, написан криво, кривыми руками.

Yarik19:

Самый главный аргумент. Это скорость, что в алготрейдинге очень важна. Функция iCustom очень медленная . Вот и хочу построить блоки таких индикаторов, что бы уменьшить время оптимизации,нагрузку на терминал.

Индикатор написанный правильно и вызванный функцией iCustom(), ничем не будет отличаться от расчётной части внесённой в советник, потому, что никакой разницы нет в каком месте будет пересчёт одного последнего бара.

Если ваш индикатор пересчитывает всю историю на каждом тике и писали его не вы, отрубите руки тому программисту. Ну, а если это самописный, то попросите помощи здесь и вам помогут.

Вот как-то так...

 
Вот нашел Индикатор который построенный как мне нужно, название VLDMI.(Идеально даже)

А вот правда как бы мне сделать на подобии iBands_on_MOmBall?
Не могу понять, что вписывать. Может кто то натолкнуть где смотреть?
Файлы:
Причина обращения: