Индикаторы: Dynamic RSI - страница 4

 
Andrey F. Zelinsky #:

какая разница кто какую оценку поставил?

Согласен. Какая разница. У нас же нет системы социального рейтинга как в Китае. Так что верно, зачем мне оценка? Если так посмотреть, то и зачем на сайте ввели оценки. Можно было и без оценок. :)


Andrey F. Zelinsky #:

ваш код хорошо проблемный -- я бы тоже оценил ваш код в =1.

      UpBuffer[i]=RSIValueBuffer[ArrayMaximum(RSIValueBuffer,LookBack,i)];
      DnBuffer[i]=RSIValueBuffer[ArrayMinimum(RSIValueBuffer,LookBack,i)];

-- в начале анализа вы делаете поиск макс/мин по неинициализированным  барам

Спасибо  Andrey. Полностью согласен с Вами, но смею заметить что идёт поиск максимального и минимального значения на количество элементов

LookBack

А это значит что буфер в котором идёт поиск

RSIValueBuffer

Через определённое значение этой протяжённости будет заполнен нужными значениями. Количество значений этого буфера несоизмеримо большое по сравнению с размером параметром поиска 

LookBack

Поэтому получается что через определённое количество элементов, а именно через LookBack + RSIPeriod, значения максимумов и минимумов будут соответствовать реальным значениям.

Согласен, что вначале шкалы, начиная с крайне давней даты, значения индикатора могут очень сильно отличатся от настоящих. Но естественно на свече Bars - (LookBack + RSIPeriod) показания индикатора будут верными. 

Как правило мало кого интересует ход давней истории и поэтому инициализация всех элементов массива чтобы не было лишнего мусорного всплеска с левой стороны была опущена.

Если кому-то это критично, то я готов добавить этот нюанс. Индикатор на актуальном времени истории прекрасно работает. Хотя на начальных по времени элементах, как вы правильно заметили работает не точно. Для  кого-то если критично, напишите готов исправить.

Стартовые значения вначале истории никак не влияют на показания индикатора ближе к актуальным по времени данным.

 

Andrey F. Zelinsky #:

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

Спасибо за дополнения. К сожалению, в рамках предоставленной к общему рассмотрению идеи индикатора не вижу это необходимым.

Индикатор прекрасно работает. А то что он показывает аномальные значения в начале расчёта, нисколько не влияет на точность остальных данных

 
Alexey Viktorov #:

И не делайте из меня монстра, хейтера. Нормальный код, даже если он бесполезен я оцениваю нормально

Спасибо большое!


Alexey Viktorov #:

А вы считаете, что можно высказать замечания по коду и поставить отличную оценку? Пусть новички в программировании увидев высокую оценку берут такой код для изучения, а потом будут учить следующих начинающих такому коду?

Проблема обучения сейчас по факту актуальна. А, впрочем, как и всегда.

 

Во злыдни бесятся!

Ну и что с того, что поиск по неинициализированному массиву?

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

в тестере все равно 1000 баров пропускается - при тестирования будут правильные значения с самого начала

тестирования. 

 
Andrey F. Zelinsky #:

заказчики не разбираются в тонкостях, не могут толком проверить и ставят лестные отзывы как и те, кто сейчас поставил =5.

А почему Вы думаете что не разбираются? Иногда разбираются и очень даже хорошо. Все моменты оговариваются и динамично если что-то не так исправляется. Но если это действительно не так, и это имеет значение. :)

 
Dmitry Fedoseev #:

Во злыдни бесятся!

Ну и что с того, что поиск по неинициализированному массиву?

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

в тестере все равно 1000 баров пропускается - при тестирования будут правильные значения с самого начала

тестирования. 

Дмитрий Верно! И на нашей будет улице праздник! Верно, когда в тестере гоняешь на предмет оптимизации выкручиваешь скорость по максимуму. А тем более инициализация вообще в этом месте лишняя. И так пришлось три буфера инициализировать. Но в диалоге хочется выслушать обратную сторону. Вдруг что-то дельно появится.

 
Nikolai Semko #:

Роман, а почему динамический?

Здравствуйте Николай!

Полностью с Вами согласен! Какой он динамический. Куда мир катится? Ничего не понятно. И я про тоже! Динамический значит должен двигаться. А этот стоит. Значит не динамический! 

Просто один друг попросил написать его нинзю, а он мне понравился и я его переделал на четвёрку. Чтобы долго не думать решил оставить название таким какой он есть.

В расчёте есть неточность. Рассчитываю LWMA хотя нужно WMA. Но ладно, никому про это лучше не говорить. :)


Nikolai Semko #:

В моем понимании динамический - это что-то типа такого:

Полностью согласен! "Мы рождены чтоб сказку сделать былью ..."

 

Диапазон баров для расчета правильно вычисляется - досчитывается только нулевой бар, а при появлении нового - первый и новый.

Вложенных циклов нет - вообще идеально.

Шли бы тут некоторые маркет поизучали - вот где поле непаханое, там так много индикаторов, которые на каждом тике на 1000 баров рассчитываются. 

 
Dmitry Fedoseev #:

Вложенных циклов нет - вообще идеально.

Если честно то не известно насколько быстро выполняется штатный

ArrayMaximum(); ArrayMinimum();

Когда писал код, думал написать свой, более быстрый алгоритм поиска min/max значений и оптимизировать его по скорости. Но потом решил оставить как есть.

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

 
ROMAN KIVERIN #:

Спасибо большое!

Спасибо много. Это оценка не вашего кода. А вашему коду, вы правильно определили, я поставил, как говорили в школе - кол.

 
Alexey Viktorov #:

Спасибо много. Это оценка не вашего кода. А вашему коду, вы правильно определили, я поставил, как говорили в школе - кол.

Алексей уже понятно. Спасибо за проявленный интерес! Понятно что хоть кому-то Вы ставите достойный балл. Это очень вдохновляет.