20.05.2009, 16:21
|
|
Просмотр массива
Суть моей задачи в следующем. Есть заранее отобранный набор акций (300-500 шт.). Есть брокерская система, которая импортирует эти данные. Эта система использует встроенный язык – EFS. Это усеченная версия JavaScript. В отдельно написанной мною программе эти акции должны быть проверенны на определенные условия и, при совпадении условий выдается список тиккеров (наименований) акций, удовлетворяющих поставленным условиям.
Программу такую я написал, но столкнулся со следующей проблемой. В EFS есть на встроенные в нее функции ограничения на индекс – он не должен быть больше 5. То есть в цикле я не могу просматривать более 6 элементов массива. Поясню на примере.
Структура (логическая) программы следующая.
function preMain() {
………
var sSymbol;
var Per;
………
sSymbol=new Array("A","ABT,………………,"APA","APD");
Per=60;
………
function main() {
………
for(var i = 0; i <= 5; i++)
{
………
MAX3Buy = (1)*(
open(0,sym(sSymbol[i],inv(Per))) <= close(0,sym(sSymbol[i],inv(Per)))
);
………
if(MAX3Buy == 1)
{{Alert.addToList(sSymbol[i],close(0,sym(sSymbol[i],inv(Per))),Color.black, Color.black);}}
……..
}
return
}
Так вот, массив sSymbol может насчитывать 300-500 элементов. В цикле, если указывается для i число более 5, выдается ошибка, что индекс функции close(0,sym(sSymbol[i],inv(Per))) (это цена закрытия выбранной акции) или тому подобные функции EFS не могут иметь индекс более 5 (т.е. 6 элементов массива, начиная с 0). Как обойти это ограничение и организовать просмотр всего массива (300-500 шт.), я не знаю. Может использовать для построения нового массива методы Array, такие как shift() или slise()? Пробовал, не получилось. Скорее всего, я неправильно прописывал эти операторы.
Не могли бы Вы мне помочь организовать в вышеуказанной структуре проверку элементов всего массива sSymbol (300-500 шт) на выполнение указанных условий при ограничении того, что индекс i в встроенных функциях EFS не должен превышать 5
Заранее благодарю,
Игорь (IgorAR@yandex.ru)
|
|
20.05.2009, 16:54
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
не, мне это нравится.
человек пришел просто с дикой проблемой, с каким-то диким языком, о котором наверняка никто кроме него тут не знает(в гугле по первым ссылкам совсем другое)
и вместо того, чтобы читать тут ответы, оставил мыло.
Уважаемый Igor, но в таком ключе навряд ли кто-то тут сможет помочь с проблемой.
тут нету людей способных телепатически придумывать код под корявый интепретатор корявого языка, не зная всех его особенностей, и не имея возможности повозится с интепертатором.
Даже если вы прдоставите все данные в виде интепретатора, входных данных, и обрабатывающего их кода, то это в любом случае тянет на раздел "работа"
PS может быть в этом языке будет работать метод pop()
только не спрашивайте меня как с ним работать-гугл знает
|
|
20.05.2009, 17:26
|
|
Уважаемый Профессор, если я Вас оскорбил своим вопросом, прошу прощения! Я первый раз на этом форуме и обратился в рубрику "Я-новичок". Я действительно чайник в программировании. А суть моей проблемы - организовать правельно цикл с использованием операторов JavaScript, который я самостоятельно не могу сделать. Поэтому обратился к Вам - Спецам.
|
|
20.05.2009, 17:38
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от Igor
|
организовать правельно цикл с использованием операторов JavaScript
|
ваш цикл правильный и использует операторы JS
что делать с ваши недоязыком, не позволяющим использовать крупные массивы, я понятия не имею.
предположил что метод pop() сработает.
попробуйте его
строить дальнейшие предположения, учитывая, что я понятия не имею какие "сокровища" таятся в этом языке, просто бессмысленно. можно предположить кучу вариантов, и все они могут оказатся неправильными.
с учетом того, как работает форум, проблему в режиме "код"-"отчет о его неработоспособности", и повтор, можно решать долго и не решить.
именно поэтому я и предложил вам обратится в раздел работа, и если найдется исполнитель, выдать ему образец интепретатора вашего языка
а возмутился я прежде всего, из-за того что я считаю наглостью публиковать свое мыло в ожидании, что скучающие и добрые профессионалы кинутся туда к вам решать вашу проблему.
если уж пришли на форум, то проявляйте уважение.
ожидание, что вам кто-то чего-то должен, или станет делать, ьез ваших на то усилий -- напрасно
|
|
20.05.2009, 18:00
|
|
Уважаемый Профессор, спасибо за совет с методом pop(). Я пробывал с Shift(). Он работает. Но я не знаю, как их завязать в цикл - выдает только одно значение. Просмотрел кучу литературы - не нашел. Я, к большому сожалению, не программист.
P.S. А по поводу мыла - уважая Ваше внимание, думал в личке будет скромнее с моей стороны не беспокоить остальных своей перепиской.
|
|
20.05.2009, 18:01
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от Gvozd
|
а возмутился я прежде всего, из-за того что я считаю наглостью публиковать свое мыло в ожидании, что скучающие и добрые профессионалы кинутся туда к вам решать вашу проблему.
|
Другими словами: ответ должен быть доступен всем.
|
|
21.05.2009, 13:32
|
|
Уважаемый Профессор или кто-нибудь из уважаемых Спецов ответьте пожалуйста на вопрос!!!
В конструкции программы
function main() {
for(var i = 0; i <= 11; i++)
{
sSymbol = ["A","ABT","ABX","ACI","AFL","AGP","AIZ","AMT","AMX ","ANR","APA","APD"];
var sSymb = sSymbol.pop();
MAX3 = (1)*(open(0,sym(sSymb,inv(Per))) >= 0);
if(MAX3 == 1)
{{Alert.addToList(sSymb,close(0,sym(sSymb,inv(Per) )), Color.black, Color.black);}}
}
return
}
при использовании метода pop() выдается только один (последний - APD) символ? Почему последовательно не выдаются остальные? В чем ошибка?
Помогите мне, пожалуйста!!!
|
|
21.05.2009, 16:52
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
pop удаляет последний и возвращает его, если не true, то ошибка в интерпретаторе
p.s. в данном случае скорее shift подошло бы: проход по массиву вроде изначально был от начала к концу
|
|
21.05.2009, 16:55
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Массив на каждой итерации цикла переопределяется.
|
|
21.05.2009, 16:59
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
ой, не заметил
|
|
|
|