Автор |
Сообщение |
fedic
Зарегистрирован: 26.05.2008
Сообщения: 17
|
Имеется пополняемый текстовый файл котировок (..\myQuots.txt), имеется файл формата(MyFormat.format), импорт осуществляется в ручную через меню File | Import ASCII.
Подскажите пожалуйста а как автоматизировать данный процесс - сделать атоматический Import ASCII (автоматическую подкачку) ну скажем через определенный промежуток времени, например через минуту. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Можно написать скрипт (например на JS) который будет это делать. За основу можно взять скрипт импорта котировок с финама. Периодиески запускать этот скрипт можно любым планировщиком.
Вроде можно написать и на AFL используя ту же COM технологию и запускать его в AA, но тогда АА будет занят |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
fedic
Зарегистрирован: 26.05.2008
Сообщения: 17
|
Да, все уже сделано, а утилитку сваял для выдергивания данных с финама. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
fedic
Зарегистрирован: 26.05.2008
Сообщения: 17
|
Олег, а можно средствами автоматизации Амиброкера выполнять периодический подхват уже обновленных файлов, т.е как-то автоматизировать выполнение ( File | Import ASCII ), правда подхват из разных папок, т.к. утилита подкачки рассовывает их по разным папкам( так задумано). Чтобы в графиках сами подрисовывались недостающие данные. А то каждый раз бегать по меню и папакам уже надоело( надо фьюч на SP - ( File | Import ASCII ) лезешь в папку SP, надо пару EUR\USD опять тоже самое делаешь, только из другой папки
Попробовал URLGet, вывел кнопку FINAM в toolbars, подкачивается вроде, но чтобы дальше обновляться надо опять жать кнопку FINAM- а вот если бы автоматом через определенное время по таймеру. Например для часовиков через час (начиная с нового часа), для 30( через каждые 30 минут). Задача такая встала не из-за лени кнопки тыкать , просто полученные обновленные данные необходимы для дальнейшего использования.
Интересно, а где можно посмотреть описание структуры баз амиброкера механизм их пополнения
Спасибо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
fedic писал(а): |
Олег, а можно средствами автоматизации Амиброкера выполнять периодический подхват уже обновленных файлов |
Средствами Ами только написав AFL скрипт и запустив его в АА. К сожалению тогда АА будет занят этим скриптом.
Цитата: |
Попробовал URLGet, вывел кнопку FINAM в toolbars, подкачивается вроде, но чтобы дальше обновляться надо опять жать кнопку FINAM- а вот если бы автоматом через определенное время по таймеру. Например для часовиков через час (начиная с нового часа), для 30( через каждые 30 минут). Задача такая встала не из-за лени кнопки тыкать , просто полученные обновленные данные необходимы для дальнейшего использования.
|
Можнго любым планировщиком запускать QuickGetFinam.js с заданной переодичностью.
Цитата: |
Интересно, а где можно посмотреть описание структуры баз амиброкера механизм их пополнения
Спасибо.
|
Фигня в том, что ами типа кеширует базы и просто изменив (дописав) файлы базы данных не удается заставить ами эти данные прочитать. Типа надо переоткрывать БД чтобы Ами увидел новые данные.
Поэтому реально только импорт в ручную или с помощью COM. Описание в хелпере тема AmiBroker's OLE Automation Object Model |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
fedic
Зарегистрирован: 26.05.2008
Сообщения: 17
|
Спасибо Олег, пойду мучить com |
|
|
Посмотреть профиль Отправить личное сообщение |
|
tlt-vlad
Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва
|
re:OOO "...Можнго любым планировщиком запускать QuickGetFinam.js с заданной переодичностью. ..."
Олег, поробывал это сделать планировщиком nnCron , прописал путь ( как того требует инструкция к тулзе ) C:\Program Files\AmiBroker\URLGet\QuickGetFinam.js ; скрипт запускается с заданной периодичностью , только вот получаю странное сообщение при запуске " Не найден или повреждён файл export.js . Требуется обновление списка символов " . Очень странно в папке URLGet есть этот файл . Попробывал его обновил - результат нулевой .
Такая же вещь происходила , когда я пытался запустить этот скрипт своей рукописной тулзой . Почему скрипт его не видит при запуске из внешней программы ??? хотя штатно ( запущенный из Ами ) работает на 5+.
??? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это потому, что не указана Initial directory. Т.е. скрипт ищет exort.js не в папке скрипта, а в другом месте (не знаю точно где). Ща пытаюсь разобраться как указать Initial directory |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
tlt-vlad
Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва
|
Олег, я извиняюсь что побеспокоил.
Сегодня поподробнее покапался в мануале к планировщику - прописал в задании нужную директорию , дабы скрипт не терял файл export.js и всё ОК !!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Уф...
Строка в файле cron.tab для задания рабочей директории должна выглядеть примерно так
Код: |
* * * * * !S" C:\Program Files\AmiBroker\URLGet" DROP APP-Dir ! S" C:\Program Files\AmiBroker\URLGet\QuickGetFinam.js" START-APP |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
tlt-vlad
Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва
|
Именно так и прописал .
С уважением и признанием за помощь , Владимир. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
fedic
Зарегистрирован: 26.05.2008
Сообщения: 17
|
Олег, для начала попробовал скрипт написать, взял из скрипта код импорта, попробовал :
AmiBroker = new ActiveXObject( "Broker.Application" );
fso = new ActiveXObject( "Scripting.FileSystemObject" );
-----------------------
function Import( filen )
{
try
{
// Импорт из файла " filen"
w = AmiBroker.Import( 0, filen, "Finam_1H.format" );
}
catch( e )
{
return false;
}
// обновляем список тикеров и открытые окна
k = AmiBroker.RefreshAll();
return true;
}
------------------------------------
Параметры (полное имя текстового файла с путями)передаются в функцию нормально, но почему-то не добавляет новые данные( или все-таки не подхватываются или не отрисовываются). AmiBroker.Import возвращает значение - 4(Long), ошибка не генерируется. Отладку производил с помощью PrimalScript. Где копать?
Вообще, а по подробнее где-то можно найти описание Automation АМИ ? По тому что написано в AmiBroker's OLE Automation Object Model, понять значение параметров свойств и методов сложновато |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
1. Путь к файлу с данными указан правильно (в пути следует использовать двойной обратный слеш \\ ) ?
2. Пробовал из этого файла импортировать данные при помощи этого фильтра Finam_1H.format в ручную ? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
fedic
Зарегистрирован: 26.05.2008
Сообщения: 17
|
Да вот в путях и в формате то все нормально. Вот какую штуку я обнаружил: удалил символ(инструмент), закрыл ами запустил крипт, открыл ами и о чудо , появился импортируемый инструмент. Глюк какой-то. Да и вот что еще, после закрытия АМИ залез в диспетчер задач, а там болтался broker.exe, снес его. Может здесь тут еще какая то проблема?
Создаем обьект:
AmiBroker = new ActiveXObject( "Broker.Application" );
логично было бы после окончания работы скрипта удалить созданный экземпляр(AmiBroker.Free)?
И еще один вопросик, а можно при вызове импорта использовать в имени файла wildcard символы, например так Import("C:\\SPFUT_*_1*.txt");
Во, сейчас вообще стал писать "Невозможно создание объекта сервером программирования объекта" |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
И еще один вопросик, а можно при вызове импорта использовать в имени файла wildcard символы, например так Import("C:\\SPFUT_*_1*.txt"); |
Чесно говоря я не знаю. Проще всего попробовать и узнать можно или нет.
Цитата: |
Да вот в путях и в формате то все нормально. Вот какую штуку я обнаружил: удалил символ(инструмент), закрыл ами запустил крипт, открыл ами и о чудо , появился импортируемый инструмент. Глюк какой-то. Да и вот что еще, после закрытия АМИ залез в диспетчер задач, а там болтался broker.exe, снес его. Может здесь тут еще какая то проблема?
Создаем обьект:
AmiBroker = new ActiveXObject( "Broker.Application" );
логично было бы после окончания работы скрипта удалить созданный экземпляр(AmiBroker.Free)? |
Странно все это.
Может в винде какие косяки?
Мой скрипт закачки с финама в основных моментах скопирован с примеров которые выкладывал Томаш. Там все работает. Я в JS не спец совсем, но когда просматривал доки нигде не встречал упоминания о том, что надо удалять COM объект. Да и Томаш не удалял в своих скриптах.
Иногда, очень редко была такая ситуация когда COM сервер создавал процесс Ами не смотря на уже запущеный. В таком случае действительно импорт не получается. Скорее всего копать надо именно в этом направлении... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|