Код из фриланса - ужасы профессианализма

 
Как такое можно вообще писать (+100 работ выполнено у автора):
int start() {
        int bar;

        for(bar = 0; bar < iBars(Symbol(), TimeFrame); bar++)
                obv_original[bar] = iCustom(Symbol(), TimeFrame, IndicatorPath, 0, bar);
        
        for(bar = 0; bar < Bars; bar++)
                obv_adapted[bar] = obv_original[iBarShift(Symbol(), TimeFrame, Time[bar])];     

//...........................................................
//...........................................................
}       




и за этот недо-индикатор ____40____  баксов брать...
Да, у всех есть свои велосипеды - но это как-то слишком круто.

Просто представьте сколько раз здесь вызывается Symbol() за тик.

 
ALXIMIKS:
Как такое можно вообще писать (+100 работ выполнено у автора):

и за этот недо-индикатор ____40____  баксов брать...
Да, у всех есть свои велосипеды - но это как-то слишком круто.

Просто представьте сколько раз здесь вызывается Symbol() за тик.

У каждого свой стиль.

И что индикатор не работает?

ЗЫ: $40 это нормально, каждый привык к своим ценам.

 
ALXIMIKS:
Как такое можно вообще писать (+100 работ выполнено у автора):

и за этот недо-индикатор ____40____  баксов брать...
Да, у всех есть свои велосипеды - но это как-то слишком круто.

Просто представьте сколько раз здесь вызывается Symbol() за тик.

Вызов Symbol() преобразуется в доступ к переменной _Symbol. Так что, ничего страшного.

Почему Вы ничего не спросили про количество вызовов iBars?

 
stringo:

Вызов Symbol() преобразуется в доступ к переменной _Symbol. Так что, ничего страшного.

Почему Вы ничего не спросили про количество вызовов iBars?

Мне вот интересно, почему он не спросил про полный перебор всех баров на каждом тике (при том дважды!):)
 
Я даже догадываюсь, кто г@вноавтор этого г@внокода...
 
denkir:
Я даже догадываюсь, кто г@вноавтор этого г@внокода...

И кто же? Похоже разработчик делал мультитаймфреймный индикатор. Но поступил как проще. Без дополнительного контроля и  с перерасчетом каждого бара. В отдельных случаях помогает,я их правда не припомню. (В своих разработках). Ну не знал человек других вариантов, а сам на это не способен. Делает по аналогии. Хотя некоторый здравый смысл и авантюризм есть.

 

Код рабочий. Просто не стоит несколько индикаторов ставить на чарт. Можно забрать все доступные ресурсы

 
ALXIMIKS:
Как такое можно вообще писать (+100 работ выполнено у автора):

и за этот недо-индикатор ____40____  баксов брать...
Да, у всех есть свои велосипеды - но это как-то слишком круто.

Просто представьте сколько раз здесь вызывается Symbol() за тик.

Можно проверить, за сколько мс будет выполнен проход с Symbol() и _Symbol. И сравнить... Да и iBars() вынести из цикла.
 
stringo:

Вызов Symbol() преобразуется в доступ к переменной _Symbol. Так что, ничего страшного.

Почему Вы ничего не спросили про количество вызовов iBars?

В 4-ке месяца 2-3 назад проверял замену Symbol() на _Symbol и это влияло на скорость достаточно значительно по данным профилировщика (около 10 -15 %).
На сегодня разница действительно не значительная, но все же стабильно есть.

Сейчас проверил:
с Symbol() на один проход start() припадает всегда больше 200 000 (около 10 запусков)
с _Symbol на один проход start() припадает всегда меньше 190 000  (около 10 запусков)

грубо говоря 5%.

Запуски чередовал 2 одного вида 2 другого. 
Также в настройках изменял без перезагрузки "график профилирования в исходном коде"  ситуацию ни как не изменило.
 

ALXIMIKS , а я вот вообще не догоняю - нафига в чужом коде ковыряться, да ещё и топики создавать? Мало ли кто что там ваяет....  

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

 

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

AndreiFAN

а я вот вообще не догоняю - нафига в чужом коде ковыряться, да ещё и топики создавать? Мало ли кто что там ваяет....  

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


Не согласен. Польза в изучении г@внокода есть. Самому учиться не г@внокодить так, уже достижение...

 

Код да рабочий, но увы на половину - после наступления нового дня он уже не работает.

Код имеет уйму проблем, что мне все надо было описывать?


Спрошу еще для себя, а есть ли в этом коде функция для обновления данных про приход новых баров с другого тф?
Лично я использую RefreshRates в связке CopyClose для пары первых баров. 

Но что используется тут ?
iBarShift этого точно не делает, по скольку в одном проекте был с этим проблем.
iCustom тоже мне кажется не должен это делать, но могу ошибаться.
и iBars тоже.

Или где-то ошибаюсь? Подскажите по этому поводу, пожалуйста, кто знает точно.

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