Когда не хватает индикаторных массивов - страница 5

 

Кто хочет, может руками пощупать сие чудо.

Файлы:
exp_test.zip  3 kb
 
Integer >>:

Кто хочет, может руками пощупать сие чудо.

",,, в чем сила? - В правде.")))


И чего? Есть варианты?

(Да, Реальнейший, мой "убогий" - как вы тактично заметили - ум предложил такое решение означенной темы...)

 

Знаете, странное общение получается.

Есть проблема, означенная в ветке. У меня есть ее решение. Возможно, есть другие решения. Но говорим мы почему-то о том, что эту проблему лучше не создавать, что, конечно, тоже ценно само по себе, но как-то не совсем по теме...

 
Svinozavr >>:

Знаете, странное общение получается.

Есть проблема, означенная в ветке. У меня есть ее решение. Возможно, есть другие решения. Но говорим мы почему-то о том, что эту проблему лучше не создавать, что, конечно, тоже ценно само по себе, но как-то не совсем по теме...


Да в чем проблема то ? Если она и существует, то исключительно субъективно. Потому и решение в привычном для Вас виде интересует исключительно Вас. Вы исходите из ложной посылки - абсолютно не обязательно Вызывать функцию перерасчета индикаторов, если Вам нужно прошлое значение: его можно просто сохранить - в основном так и делают ;). Мне лично все равно как это делается в Омеге или Метастоке: если мне нужна история значений индикатора (любой переменной в общем случае) - то это организовывается средствами МКЛ (или С/С++ на котором я пишу) циклом, да парой операторов (в основном присвоения ;) ). Работает гораздо быстрее, чем такая "навороченная куча" вызовов функций. А если нужно, как Вы пишете, зачастую всего пара значений из истории, то обычное присвоение будет без конкуренции.

Успехов.

 
VladislavVG >>:

Да в чем проблема то ? Если она и существует, то исключительно субъективно. Потому и решение в привычном для Вас виде интересует исключительно Вас. Вы исходите из ложной посылки - абсолютно не обязательно Вызывать функцию перерасчета индикаторов, если Вам нужно прошлое значение: его можно просто сохранить - в основном так и делают ;). Мне лично все равно как это делается в Омеге или Метастоке: если мне нужна история значений индикатора (любой переменной в общем случае) - то это организовывается средствами МКЛ (или С/С++ на котором я пишу) циклом, да парой операторов (в основном присвоения ;) ). Работает гораздо быстрее, чем такая "навороченная куча" вызовов функций. А если нужно, как Вы пишете, зачастую всего пара значений из истории, то обычное присвоение будет без конкуренции.

Успехов.

А что не субъективно? Да, именно меня эта проблема в свое время озадачила. Я предположил, что это может быть интересно кому-то еще. Я что, исключительный? Вот написал.

Странно... Никто не написал, как это можно сделать еще. Может, потому, что этот нинафиг некому не нужно. Ладно. Буду исключительным...\

Удачи.

 
Svinozavr >>:

Знаете, странное общение получается.

Да нет. Просто периодически появляются новые люди, которые мнят себя первооткрывателями, заново открывают известные истины и, конечно же, публикуют их на форуме со словами типа "смотрите какую я крутую штуку нашел!" Поэтому отношение к новым людям предвзятое. Нормальное нужно заслужить.

Причем предвзятое даже к тем, кто предлагает интересные вещи.

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

Не решение. Только пример, без тестов, замеров и т.д.

Возможно, есть другие решения.

Для MQL4 по ходу принципиально других нет.

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

А ты почитай другие ветки. Мы здесь хотя бы далеко от темы не заходим :) .

______________________

ЗЫ -- не сдавайся так просто :), на самом деле у поделки Integer'а неадекватное время. Небольшая переделка -- и на всех тиках разница в 5-10%, по ценам открытий в несколько раз, но это уже нормально.

 

Небольшая переделка -- и на всех тиках разница в 5-10%, по ценам открытий в несколько раз, но это уже нормально.

Тоже наврал.


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


Т.е. опять же для нормального быстродействия придется шаманить не MQL средствами.

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


Немного переделанная поделка:

Файлы:
exp_test.mq4  2 kb
indnorm.mq4  2 kb
indembuff.mq4  3 kb
 
TheXpert писал(а) >>

Тоже наврал.

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

Т.е. опять же для нормального быстродействия придется шаманить не MQL средствами.

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

Немного переделанная поделка:

Попробуй с массивом постоянного размера. Использовать его как стек. Тогда поможет. Скорость обработки можно увеличить.

 
Vinin >>:

Попробуй с массивом постоянного размера. Использовать его как стек. Тогда поможет. Скорость обработки можно увеличить.

Да. Это понятно.

 
Vinin >>:

Попробуй с массивом постоянного размера. Использовать его как стек. Тогда поможет. Скорость обработки можно увеличить.

Практически то же самое. Проигрыш в начале -- существенный. И выигрыш в конце.

Вобщем нормального способа нету. Вопрос можно считать закрытым. На крайняк можно использовать способ топикстартера.

Причина обращения: