Борис Гудылин, более того, была необходимость покопаться в их скриптах (), и узнал неприятную особенность.
Мне нужно просчитывать два значения ЕМА и RSI. Вроде как RSI расчитывается на значениях EMA.
Представим следующее - в ds хранится 3000 свечей.
Подсчитываю нужные мне значения вот так:
Но минус вот в чем: все эти значения будут верными если только, просчитывать все значения, иначе выдает неверные значения - проверено.
Но один раз можно просчитать все значения (все 3000 свечей, и то необязательно, в моем случае можно взять последние 100 свечей).
Если сократить кол-во свечей с 3000 до 100, то скорость программы вырастет в 30 раз - что очень недурно.
С другой стороны, когда мы просчитали все свечи до нужной, то просчитывать в очередной раз все 3000 свечей нет нужды при наступлении нужного нам события (по логике).
Можно взять предпоследнее значение и подставить в формулу и расчитать новое значение, в таком случае скорость скрипта еще вырастет.
Однако разработчики так не сделали (или не подумали об этом).
В моем случае для просчет EMA нужно обойти все 3000 свечей, а затем и RSI вновь пойдет расчитывать все 3000 свечей, не смотря на то, что вроде вычисления основаны на ЕМА.
У кого-то возникнут вопросы, к чему это все, у нас компы и им не трудно каждый раз просчитывать 3000 и более свечей.
А вел я это к тому, что в один прекрасный день весь Quik начнет безбожно тупить и медленно работать, и для оптимальной работы понадобится дорогой компьютер.
Но этого можно избежать, если разработчики и сами авторы скриптов будут правильно понимать результат своей работы.
UPD:
В моем случае, дабы не считать каждый раз 3000 свечей можно сделать так:
Мне нужно просчитывать два значения ЕМА и RSI. Вроде как RSI расчитывается на значениях EMA.
Представим следующее - в ds хранится 3000 свечей.
Подсчитываю нужные мне значения вот так:
| Код |
|---|
for i = 1, key do
ema=f_ema(i, {Period=40, Metod = EMA, VType=CLOSE}, ds)
rsi=f_rsi(i, {Period=14, VType=CLOSE}, ds)
еnd |
Но минус вот в чем: все эти значения будут верными если только, просчитывать все значения, иначе выдает неверные значения - проверено.
Но один раз можно просчитать все значения (все 3000 свечей, и то необязательно, в моем случае можно взять последние 100 свечей).
Если сократить кол-во свечей с 3000 до 100, то скорость программы вырастет в 30 раз - что очень недурно.
С другой стороны, когда мы просчитали все свечи до нужной, то просчитывать в очередной раз все 3000 свечей нет нужды при наступлении нужного нам события (по логике).
Можно взять предпоследнее значение и подставить в формулу и расчитать новое значение, в таком случае скорость скрипта еще вырастет.
Однако разработчики так не сделали (или не подумали об этом).
В моем случае для просчет EMA нужно обойти все 3000 свечей, а затем и RSI вновь пойдет расчитывать все 3000 свечей, не смотря на то, что вроде вычисления основаны на ЕМА.
У кого-то возникнут вопросы, к чему это все, у нас компы и им не трудно каждый раз просчитывать 3000 и более свечей.
А вел я это к тому, что в один прекрасный день весь Quik начнет безбожно тупить и медленно работать, и для оптимальной работы понадобится дорогой компьютер.
Но этого можно избежать, если разработчики и сами авторы скриптов будут правильно понимать результат своей работы.
UPD:
В моем случае, дабы не считать каждый раз 3000 свечей можно сделать так:
- запоминаем для какой свечи мы производим расчеты
- проверяем есть ли расчитанное значения для предыдущей свечи
- если да, то просто подставляем в формулу и получаем нужное значение для текущей свечи
- если нет, то вычисляем нужные значения для всех свечей, вплоть до предущей, а потом п. 3