Просмотр массива
Суть моей задачи в следующем. Есть заранее отобранный набор акций (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) |
не, мне это нравится.
человек пришел просто с дикой проблемой, с каким-то диким языком, о котором наверняка никто кроме него тут не знает(в гугле по первым ссылкам совсем другое) и вместо того, чтобы читать тут ответы, оставил мыло. Уважаемый Igor, но в таком ключе навряд ли кто-то тут сможет помочь с проблемой. тут нету людей способных телепатически придумывать код под корявый интепретатор корявого языка, не зная всех его особенностей, и не имея возможности повозится с интепертатором. Даже если вы прдоставите все данные в виде интепретатора, входных данных, и обрабатывающего их кода, то это в любом случае тянет на раздел "работа" PS может быть в этом языке будет работать метод pop() только не спрашивайте меня как с ним работать-гугл знает |
Уважаемый Профессор, если я Вас оскорбил своим вопросом, прошу прощения! Я первый раз на этом форуме и обратился в рубрику "Я-новичок". Я действительно чайник в программировании. А суть моей проблемы - организовать правельно цикл с использованием операторов JavaScript, который я самостоятельно не могу сделать. Поэтому обратился к Вам - Спецам.
|
Цитата:
что делать с ваши недоязыком, не позволяющим использовать крупные массивы, я понятия не имею. предположил что метод pop() сработает. попробуйте его строить дальнейшие предположения, учитывая, что я понятия не имею какие "сокровища" таятся в этом языке, просто бессмысленно. можно предположить кучу вариантов, и все они могут оказатся неправильными. с учетом того, как работает форум, проблему в режиме "код"-"отчет о его неработоспособности", и повтор, можно решать долго и не решить. именно поэтому я и предложил вам обратится в раздел работа, и если найдется исполнитель, выдать ему образец интепретатора вашего языка а возмутился я прежде всего, из-за того что я считаю наглостью публиковать свое мыло в ожидании, что скучающие и добрые профессионалы кинутся туда к вам решать вашу проблему. если уж пришли на форум, то проявляйте уважение. ожидание, что вам кто-то чего-то должен, или станет делать, ьез ваших на то усилий -- напрасно |
Уважаемый Профессор, спасибо за совет с методом pop(). Я пробывал с Shift(). Он работает. Но я не знаю, как их завязать в цикл - выдает только одно значение. Просмотрел кучу литературы - не нашел. Я, к большому сожалению, не программист.
P.S. А по поводу мыла - уважая Ваше внимание, думал в личке будет скромнее с моей стороны не беспокоить остальных своей перепиской. |
Цитата:
|
Уважаемый Профессор или кто-нибудь из уважаемых Спецов ответьте пожалуйста на вопрос!!!
В конструкции программы 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) символ? Почему последовательно не выдаются остальные? В чем ошибка? Помогите мне, пожалуйста!!! |
pop удаляет последний и возвращает его, если не true, то ошибка в интерпретаторе
p.s. в данном случае скорее shift подошло бы: проход по массиву вроде изначально был от начала к концу |
Массив на каждой итерации цикла переопределяется.
|
ой, не заметил :-?
|
Часовой пояс GMT +3, время: 06:40. |