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



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

СообщениеДобавлено: Пн Янв 24, 2011 3:25 pm Ответить с цитатой Вернуться к началу

По просьбе делюсь тем, как я автоматизировал импорт данных (Excel и/или ASCII) в Ами при помощи планировщика Automate.

0) Обзаводимся планировщиком (scheduler).
Это может быть коммерческий Automate (взять на http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=4955#1 - требуется регистрация на форуме).
Прим: Если кого-то коробит пользоваться пиратским софтом, тогда можно попробовать фриварный порт юниксоидного ncron (http://code.google.com/p/ncron/ - сам не пробовал).
Обзаводимся Excel 2007/2010, т.к. в Excel 2003 экспорт в ASCII-файл производится другими горячими клавишами.

1) Ами напрямую из Excel данные импортировать не умеет, поэтому:
- подготавливаем итоговою таблицу-лист только с нужными полями для
- последующего промежуточного экспорта данных из этого Excel-файла в ASCII-файл (.csv).
Для того, чтобы Ами знал в какой тикер импортировать данные, Excel-файлу с таблицей присваиваем имя аналогичное нашему тикеру, это же имя будет иметь и csv-файл, в который будут промежуточно сохраняться данные из Excel-файла.
Прим: Подготовку этой итоговой Excel-таблицы можно также автоматизировать при помощи Automate, но это частный случай и поэтому его могу описать, если кто-то специально попросит.

2) Генерируем нужный файл формата импортируемых данных как это описано в http://www.amisite.ru/begin/imp_txt.htm (назвав его, например pif.format как у меня). В директории /AmiBroker/Formats дописываем строчку в файл import.types с описанием сгенерированного файла формата, например так: pif (*.*)|*.*|pif.format .

3) Прилагаемый файл-скрипт импорта в Ами данных из csv-файла (csv_import.doc - расширение doc нужно поменять на js) редактируем под себя и копируем в директорию /AmiBroker/Scripts . Скрипт простенький, состоит всего из трех строк:
AmiBroker = new ActiveXObject( "Broker.Application" );
if( ! AmiBroker.Import( 0, "d:\\_Trading\\PIFFMFP.csv","pif.format" ));
AmiBroker.RefreshAll();
Понятное дело, путь и имя файла d:\\_Trading\\PIFFMFP.csv меняем на свои, т.е. на путь где находится ваш Excel-файл с данными и будет находится Ваш csv-файл, в который промежуточно сохраним данные для последующего импорта в Ами.

4. Создаем Task в Automate со следующими Steps (за основу можно взять прилагаемый мой Test.doc - расширение нужно поменять на aml):
а) Открываем Excel-файл (в моем примере PIFFMFP.xls)
б) Активируем в нем нужный лист-таблицу (в моем примере лист Quotes)
в) Сохраняем данные из таблицы в ASCII-файл (в моем примере PIFFMFP.csv)
г) Закрываем Excel-файл
д) Запускаем Ами с одновременным открытием нужной Database (в моем примере это база PIFs): "c:\Program Files\AmiBroker\Broker.exe" /database "c:\Program Files\AmiBroker\PIFs"
е) Запускаем скрипт csv_import.js: cscript "c:\Program Files\AmiBroker\Scripts\csv_import.js" и ждем пока он отработает.
ж) Закрываем Ами (при этом импортированные данные автоматически сохраняются в базе)
з) Ждем пока закончится сохранение и Ами закроется.
и) После чего можем переходить к любым другим Steps по вашему усмотрению.

Вопросы?
Посмотреть профиль Отправить личное сообщение
xxxspeed



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

СообщениеДобавлено: Пн Янв 24, 2011 8:06 pm Ответить с цитатой Вернуться к началу

1. Можно ли из одного excel файла взять много тикеров расположенные на разных листах?
2. После проделывания всех этих процедур, в будущем он будет автоматически обновлять эти тикеры в ami взятые из excel одним нажатием кнопки?
Посмотреть профиль Отправить личное сообщение
ArtS21



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

СообщениеДобавлено: Вт Янв 25, 2011 3:19 am Ответить с цитатой Вернуться к началу

xxxspeed писал(а):
1. Можно ли из одного excel файла взять много тикеров расположенные на разных листах?
2. После проделывания всех этих процедур, в будущем он будет автоматически обновлять эти тикеры в ami взятые из excel одним нажатием кнопки?


1). Можно, но я не пробовал. Предполагаемый алгоритм действий следующий:
В Automate последовательно активируем тот или иной экселевский лист и сохраняем активированный лист в csv, присваивая файлам csv имена нужных тикеров с помощью внешней программы ExportizerPro:

Команда сохранения приблизительно такая:
"C:\Progra~1\Export~1\exptizer.exe" /export /exporttype=CSV /separator=; /CloseWhenDone "D:\_Trading\PIFFMFP.xls" "D:\_Trading\PIFFMFP.csv" (под себя меняем имя файла PIFFMFP.csv)

Прим1: скачиваем Pro версию с украинским интерфейсом (exptpro_ukr.zip), т.к. только она у автора является фриварной: http://www.vlsoftware.net/ru/download.html)

Прим2: При этом Вам вероятно придется отказаться от Excel 2007/2010 или придется поэкспериментировать с ними самостоятельно на предмет автоматизированного сохранения в csv с помощью ExportizerPro, т.к. у меня почему-то он файлы из Excel 2010 сохранять в csv отказался, хотя из Excel 2003 сохранял их отлично.

2). Именно для этого я и обременил себя использованием планировщика. Он у меня автоматически скачивает данные из разных источников (как по фтп, так и по Web Query), потом автоматически формирует таблицы в Эксель, затем импортирует в Ами (т.е. обновляет там данные).
Даже кнопочку нажимать не приходится, т.к. Automate сам умеет запускаться по событию (в определенные дни недели и время).
Посмотреть профиль Отправить личное сообщение
xxxspeed



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

СообщениеДобавлено: Вт Янв 25, 2011 11:08 am Ответить с цитатой Вернуться к началу

спасибо, как время появится свободное надо будет попробовать. А мне сейчас пока приходится открывать пару десятков excel файлов и сохранять каждый в txt. Занудное занятие.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen