Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Как извлечь из массива число? Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
dmitry1208197320



Зарегистрирован: 23.10.2009
Сообщения: 86

СообщениеДобавлено: Чт Дек 17, 2009 10:43 am Ответить с цитатой Вернуться к началу

Здравствуйте. Мне нужно написать робот, чтобы выдавался сигнал при достижении спреда определённого уровня, при этом предыдущий спред тоже должен иметь определённое значение. Я делаю так:

//вычисляем спред
CloseSymbol_1 = Foreign("CLH0", "Close");
CloseSymbol_2 = Foreign("CLJ0", "Close");
ValueSpread = CloseSymbol_1 - CloseSymbol_2;

//вычисляем последнее значение
LastVal_1 = Ref(ValueSpread, 0);
//ваычисляем предыдущее значение
PrevVal_1 = Ref(ValueSpread, -1);
...........

Я так понял, что полученные с помощью Ref переменные LastVal_1 и PrevVal_1 - это массиы. Но мне не нужны массивы, мне нужны просто числа, в которых соответственно содержиться последнее значение спреда и предыдущее. Что мне извлекать эти числа в цикле for типа:

for( i = 1; i < BarCount-1; i++ ) ......;

Ведь это неоптимально. Может есть какая-то функция, преобразующая массив в число?
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Дек 17, 2009 10:57 am Ответить с цитатой Вернуться к началу

LastValue() - последнее значение массива
или так
Код:
LastVal_1 = ValueSpread[BarCount - 1];
PrevVal_1 = ValueSpread[BarCount - 2];

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
dmitry1208197320



Зарегистрирован: 23.10.2009
Сообщения: 86

СообщениеДобавлено: Чт Дек 17, 2009 11:35 am Ответить с цитатой Вернуться к началу

Попробовал, выдаётся ошибка в AFL:
"Error 10. Subscript out of range. You must not access array elements outside 0..(BarCount-1) range"
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Дек 17, 2009 11:44 am Ответить с цитатой Вернуться к началу

Странно. Я как раз и беру последнее значение массива ValueSpread[BarCount - 1];
Сейчас проверить не могу. Только вечером гляну.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
dmitry1208197320



Зарегистрирован: 23.10.2009
Сообщения: 86

СообщениеДобавлено: Чт Дек 17, 2009 12:02 pm Ответить с цитатой Вернуться к началу

Олег, я понял - у меня для текущего тикера не было данных, поэтому и ошибка выхода за пределы диапазона возникала. Загрузил данные - всё нормально!
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Дек 17, 2009 12:24 pm Ответить с цитатой Вернуться к началу

Smile

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen