Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Сентября 13, 2024, 09:57:15 pm
Начало Помощь Поиск Войти Регистрация
Новости:

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Объект не является массивом « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Объект не является массивом  (Прочитано 5021 раз)
bugem
Full Member
***
Сообщений: 105



Просмотр профиля Email
« : Сентября 12, 2012, 10:45:13 am »

Построен вот такой вот индикатор:

Code: [Select]
extern FastPrd = 7;
extern SlowPrd = 65;
extern StdDevPrd = 20;
extern Koeff = 5;
//==============================================================
var ravi = 0; var raviSum = 0; var raviTmp = 0; var raviStd = 0;
//==============================================================
function init()
{
ravi = new_object("linebuffer");

setInitCandles(SlowPrd);
                setBounds(0, SlowPrd, 0);
setBounds(1, (SlowPrd + 1), 0);
}
//==============================================================
function calc()
{
var fastSMA = MovAvg(ind_sma, FastPrd, pt_close);
var slowSMA = MovAvg(ind_sma, SlowPrd, pt_close);
line[0] = 100 * (fastSMA - slowSMA) / (slowSMA + 0.0000000001);

ravi[0] = line[0] - line[0][-1];
raviSum += ravi[0];
raviSum -= ravi[-StdDevPrd];
var raviAvg = raviSum / StdDevPrd;
raviTmp += ravi[0] - raviAvg;
raviTmp = abs(raviTmp - (ravi[-StdDevPrd] - raviAvg));
raviStd = sqrt(raviTmp / StdDevPrd);
line[1] = Koeff * raviStd;
}

регулярно вылетает сообщение : Объект не является массивом. (object::operator[])
ругается на строку ravi[0] = line[0] - line[0][-1];
но ravi то объявлен как объект "linebuffer"
в чем же дело?

и еще, в окне вывода ATF указывалась бы переменная которая вызывает ошибку
спасибо.
« Последнее редактирование: Сентября 12, 2012, 02:55:55 pm от bugem » Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #1 : Сентября 27, 2012, 10:56:21 am »

Честно говоря не понятно в чем ситуация. "Объект не является массивом. (object::operator[])" - это на самом деле наверное не очень удачная формулировка, которая выскакивает каждый раз, когда встречается конструкция "x[n]=" при условии что x не является объектом вообще, но нам воспроизвести эту ситуацию не удалось.

А ситуация проявляет себя в какой-то конкретный момент, никаких закономерностей нет? Может быть это как-то воспроизводится? У вас один индикатор работает, или их несколько?
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #2 : Сентября 27, 2012, 10:58:41 am »

В качестве эксперимента попробуйте заменить var ravi на static ravi. Влиять в данном случае это не должно, но это пока единственная зацепка, какую я вижу.
Записан
bugem
Full Member
***
Сообщений: 105



Просмотр профиля Email
« Ответ #3 : Сентября 27, 2012, 09:06:52 pm »

Переменную поменяю, посмотрю.
Да, индикатор применяется одновременно на нескольких графиках. Какой именно не понятно. Закономерности пока не заметил, но подозреваю, что ошибка возникает когда не хватает истории и, возможно, line[0][-1] возвращает недопустимое (предполагаю "не числовое") значение, которое не принимает объект "linebuffer".
Стратегия там ну очень, очень не спешная по этому особо пока не напрягает, но хотелось бы победить :)
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #4 : Сентября 28, 2012, 12:53:00 pm »

Отсутствие истории не должно влиять. Недопустимое значение может быть преобразовано к нулю в linebuffer, так что это не беда. Ну в общем пишите если будет еще себя как-то проявлять.
Записан
bugem
Full Member
***
Сообщений: 105



Просмотр профиля Email
« Ответ #5 : Сентября 28, 2012, 03:32:27 pm »

Заменил var на static. Четыре часа наблюдений показали "полет нормальный". Спасибо.
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Объект не является массивом « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!