Best regards,
Tomasz Janeczko
amibroker.com
| AmiQuote Read Me |
AmiQuote 1.71 BETA Read Me ( December 31, 2004 )
INTRODUCTION
AmiQuote is a companion program to AmiBroker stock charting/analysis software.
The main purpose of AmiQuote is to simplify and automate downloading
- current day and historical EOD quotation data from Yahoo! Finance sites (FREE)
- delayed intraday/daily bars data from Quote.com servers. (LiveCharts subscription required)
- historical EOD quotes from MSN Money Central (FREE)
- historical EOD and Intraday FOREX quotes (FREE)
- historical EOD quotes from www.Integratir.com (FREE, *EXPERIMENTAL* may be removed)
- historical Futures EOD quotes from www.britefutures.com
AmiQuote performs downloads using multiple threads allowing you to fully utilise your connection bandwidth.
DISCLAIMER
This software is provided "as is" without warranty of any kind. Any use of the program is at your own risk. The author disclaims any implied warranty of merchantability and/or fitness for a particular purpose.
AmiBroker.com is NOT a data vendor. Quotes available via AmiQuote are provided by Yahoo Finance, Lycos/Quote.com, MSN Money Central and other free web pages. AmiQuote is just a downloader (just like Internet Explorer) but specialized in getting quotes from mentioned vendors. AmiBroker.com makes NO REPRESENTATIONS on accuracy of quotes retrieved and provides no warranty on availability of quotes.
If at any time in the future Yahoo Finance, Lycos/Quote.com, MSN Money Central or any other quote source used by AmiQuote stops to provide the data, AmiBroker.com will not be liable for the any loss caused by inability to obtain quotes via AmiQuote.
WHAT'S NEW IN VERSION 1.71?
- added support for a new data source for EOD Futures quotes: www.britefutures.com.
Symbology can be found here: http://www.britefutures.com/symbols.asp , for example ES mini March 2005 contract has the symbol of : ESH05, Euro FX Currency December 2004 future: ECZ04
WHAT'S NEW IN VERSION 1.70?
- added OLE automation interface. Click here for more details. Note that OLE automation inteface is functional only in registered version of AmiQuote
WHAT'S NEW IN VERSION 1.69?
- more Yahoo historical servers to select from (from B..L) in Tools->Settings
- automatic server rotation mode (registered version only) that switches servers B to L on round-robin manner allowing to download in several threads with lowered risk of your IP being blocked by Yahoo.
WHAT'S NEW IN VERSION 1.68?
- updated default Yahoo Historical URL to ichart.yahoo.com
- added ability to select particular Yahoo Historical server in Tools->Settings: Yahoo Historical Server
Yahoo uses server load-balancing so data are delivered by many servers "appearing" under one URL. Problem is that some servers from timem to time are not updated (offer only old data) while others are up-to-date. This new setting allows to handle such cases by selecting the server that is up-to-date. Default setting is "ichart.yahoo.com" which works in usual load-balancing scheme (switched servers). But you can also select Server B, C, D, and E. As of today (June 8th) servers B and D offer up-to-date data, while server C and E offer old data (only upto 4th and 3rd of June respectively). This may however change at any time. Please note that selection of Servers C, D and E is available only in registered version of AmiQuote.
WHAT'S NEW IN VERSION 1.67?
- fix: when user-selected 'from' date is earlier than last date of quote available in AmiBroker then earlier date is used.
WHAT'S NEW IN VERSION 1.66?
- better detection if AmiBroker is or is not running
- eSigCentral option removed
- added new free FOREX data source providing EOD and Intraday forex quotes.
FOREX data source works ONLY with the following symbols:
EURCHF,EURGBP,EURJPY,EURUSD,GBPUSD,USDCHF,USDJPY
Attempt to download any other symbol with "Forex" data source will result in error message.
Intraday downloads are available only in registered version of AmiQuote
- last update date for each ticker individually is retrieved only if database has less than 50 symbols. Otherwise the update date of the first ticker is taken for all.This speeds up ticker list retrieval in large databases.
WHAT'S NEW IN VERSION 1.65?
-
new "All sessions (quote.com)" check box added. Turning this on causes that 24-hours trading is included in downloaded quotes (important for futures like ES04M). When this switch is off only regular trading hours are included in downloaded quotes.
- AmiQuote warns about "eSigCentral" being unavailable
WHAT'S NEW IN VERSION 1.64?
-
when doing "auto-update AmiBroker database" AmiQuote does NOT switch back to Yahoo Historical, hence allows you to set any source and still use Tools->Auto-update in AmiBroker.
WHAT'S NEW IN VERSION 1.63?
-
MSN Money data source adjusted for new download URL
WHAT'S NEW IN VERSION 1.62?
-
when 'automatic import' flag is not checked then import is not performed
WHAT'S NEW IN VERSION 1.61?
- quotes are imported once (eliminated extra second import at the end of downloading all tickers)
- added 3 built-in settings sets: "fail safe", "modem", "dsl/cable" (see Tools->Settings page)
- after downloading you can double click the item in the list to open downloaded file in the Notepad. This works also in case of errors in downloaded file
- cookies set by Internet Explorer are not sent to Yahoo server
- first-time user defaults changed to fail-safe level: 1 simultaneous download and 1000 ms between requests
- new command line switches accepted:
/download - triggers automatic download on start
/close - causes automatic close of AmiQuote after download
Example command line:
Quote.exe C:\mylist.tls /download /close
- this will open ticker list from C:\mylst.tls, run automatid download (and import if "automatic import" box is selected) and close AmiQuote after download/import is finished
- (on user request) maximum number of simultaneous downloads from Quote.com increased to 4
WHAT'S NEW IN VERSION 1.60?
- new experimental source: Integratir. US stocks only. Free. EOD quotes. (note this source is rather slow and may be removed)
- $NAME directive added to the downloaded file ensures that ticker is not renamed even if AmiQuote needs to rename file for symbols using Quote.com's convention that , i.e.NASDAQ:NVDA
- minimum connection timeout increased to 10 seconds and minimum download timeout increased to 20 seconds
- slightly changed options (added keep alive and referer) in hope to improve download 'robustness'
- import occurs immediatelly after download of each file so you get updated quote faster
- prepared for new GetTickers method in AmiBroker 4.51.0 that allows to get last update date on per-symbol basis leading to better work in "auto-update" mode. Also new AmiBroker 4.51.0 will skip composites so they are not added to download list.
- maximum number of simultaneous downloads from Quote.com decreased to 2 (bigger number cause troubles with quote.com anyway)
WHAT'S NEW IN VERSION 1.55?
- fixed misleading "import failed" message in 'Yahoo Current' mode
- eSignalCentral symbol translation tables are saved between sessions
- updated addresses of Quote.com servers (Server #1 works now even without Livecharts subscription)
WHAT'S NEW IN VERSION 1.54?
- fixed problem with sometimes misleading "import failed", "aqe.format missing" messages
- Source: eSignal Central stays selected between sessions
- other bug fixes
WHAT'S NEW IN VERSION 1.53?
- added new EOD data source: eSignal Central featuring all US exchanges, European exchanges, Futures, Currencies / Forex.
- added data-source sensitive symbol search (Tools->Symbol Search) - automatically opens web page with symbol lookup for data source selected in the "Source" combo-box.
WHAT'S NEW IN VERSION 1.52?
- added initial delay between requests (delay that is added before attempt to download each new symbol data) to the Settings page. It is defined in milliseconds (1/1000 part of the second). It should help the owners of very fast connections to slow down AmiQuote and avoid problems with Yahoo rejecting too frequent requests.
WHAT'S NEW IN VERSION 1.51?
- Added support for MSN Money Central. End-of-day historical stocks, mutual funds, currencies US, Canada, Japan, Australia and major European exchanges. See http://moneycentral.msn.com/investor/common/find.asp?NextPage=%2Fscripts%2Fwebquote%2Edll%3FiPage%3Dqd
and this http://moneycentral.msn.com/investor/research/welcome.asp
to learn about symbols used by MSN. You have to have aqm.format file (supplied with this install) copied to AmiBroker's Formats subdirectory to make auto-import from MSN feature work) - Added symbol translation table ( Tools->Symbol Translation Table menu ) that allows to get symbols from alternative source without need to rename tickers in AmiBroker. It can be used for example to update Yahoo database from MSN. If you define ^DJI, $INDU pair AmiQuote will issue request for $INDU to MSN server when the ticker list contains ^DJI (Yahoo-style symbol). A sample translation is included (msn.translations file - loaded automatically at startup).
- Added some checks for Quote.com mode so it displays correct error message if "feature available to subscribers" is received from Quote.com server
- Added check for operating system reserved names like PRN.AX - they are renamed to PR_.AX to allow storing such file in windows (should I say MSDOS) operating system.
- removed obsolete "country" combo box and other cleanups.
WHAT'S NEW IN VERSION 1.50?
- Retrieving ticker list from AmiBroker is 10 times faster now (requires AmiBroker 4.00 or higher), so Tools->Auto-update quotes start in 2-3 seconds for 7000+ symbols
WHAT'S NEW IN VERSION 1.49?
- New URL for requesting historical data from Yahoo is used.
- Appropriate error message is displayed if downloaded file contains HTML tags (message: "Error in downloading") or has only one header line (message "No data for this symbol")
WHAT'S NEW IN VERSION 1.48?
- Definable proxy server, port, user name and password in the Settings dialog allows using AmiQuote in corporate environments
- (experimental) ability to specify Livecharts user/password for intraday Quote.com server (Setting page) - the Livecharts password needs to be entered in the encrypted form see http://www.amibroker.com/members/ for the details.
WHAT'S NEW IN VERSION 1.47?
- AmiQuote now supports 3 different intraday Quote.com servers. You can select one in Tools->Settings "Intraday server"
WHAT'S NEW IN VERSION 1.46?
- bug fix: solved problem with renaming of tickers with "COM", "AUX", "LPT" substrings. Now only full ticker symbol is matched (not substring)
- bug fix: "Number of symbols per request (current mode)" does not switch back to 1 anymore when the settings page is opened
WHAT'S NEW IN VERSION 1.45?
- rewritten downloading code - more robust - closes "dead" connections and includes auto-retry feature
- settings dialog now allows to define the number of auto-retries, delay between retries, connection and receive timeouts used to detect not responding connections
- colon character ':' in the ticker name is automatically replaced by underscore '_' to avoid problems with file system not allowing colon in the file name.
WHAT'S NEW IN VERSION 1.41?
- 5-min and larger intervals work correctly now
- daily interval added for downloads from Quote.com servers (allowing you to get quotes of E-minis for example not supported by Yahoo)
WHAT'S NEW IN VERSION 1.4?
- Download delayed intra-day bar data (1-min, 5-min, 15-min, 60-min, 120-min bars) for US securities
- Simplified download historical and daily data from 50 international exchanges (one setting works for all exchanges)
- Ability to run downloads automatically in user-defined intervals
- AmiQuote is now shareware. The evaluation version is almost fully functional and has NO time limit, so you can use it as long as you wish, but if you like the program and use it often you are encouraged to purchase life-time license for only $35. Click here to buy
WHAT'S NEW IN VERSION 1.3?
- Retrieving multiple symbols data in one request (current mode only) - provides huge speed-up for download in "current" mode. Number of symbols definable in the Settings.
- User-definable number of simultaneous downloads
WHAT'S NEW IN VERSION 1.2?
- Fully automatic updates of AmiBroker database (US & Canada markets only)
- Editing and saving ticker lists
- Integration with AmiBroker (retrieving ticker lists and last update date)
- Better error handling and greatly improved stability
- Selective downloads
- Support for updating mutual fund quotes (close price only)
- Support for appending data files
- User-defined destination folder
- Settings are preserved between sessions
- added support for Argentina, Brazil, China, Denmark, Hong Kong, India, Japan, Mexico, Norway, Sweden, Singapore, Spain, Taiwan (version 1.21)
INSTALLATION
If you have installed AmiBroker already, no special installation of AmiQuote is required. Just unzip AmiQuote package to a separate directory (the default is "C:\Program Files\AmiBroker\AmiQuote"). If you haven't installed AmiBroker yet it is recommended to do so, because AmiQuote uses MFC libraries (version 6.0) that are supplied with AmiBroker.
QUICK START
Note: this procedure works only if you have AmiBroker installed:
- Launch AmiBroker and AmiQuote
- Choose Tools->Auto-update AmiBroker database (or corresponding toolbar button)
HOW IT WORKS
AmiQuote loads (or retrieves from AmiBroker) a ticker list file (.TLS) which is simple ASCII file with ticker symbols, then parses it and downloads data from either Yahoo Finance or Quote.com servers. Then, when you start the download process, it requests the data from Yahoo and stores downloaded data in the separate .AQD (daily) or .AQH (historical) or .AQI (intraday bar) files for each ticker. After download, if AmiBroker is running, AmiQuote will import the quotes into AmiBroker automaticaly.
USAGE
Below you will find some tips on using AmiQuote 1.2 with and without AmiBroker. More detailed instructions will be provided with the upcoming AmiBroker 3.65.
Using AmiQuote in stand-alone mode
Although AmiQuote is provided as a companion program to AmiBroker it is however possible to use it without AmiBroker. Here is a simple procedure of downloading quotes using stand-alone AmiQuote:
- Launch AmiQuote
- Open supplied example file DJIA.TLS in the directory DJIA
This will load example ticker list (components of Dow Jones Industrial Average)- Choose between downloading current or historical or intraday interval bar quotes (intraday interval bars are available only for US exchanges)
- Click on green arrow toolbar button (Start download)
now for a couple of minutes you can watch the download operation progress- When all downloads are complete you can close the program and find appropriate .AQD (daily quotes) or .AQH (historical) or .AQI (intraday) files stored in the directory where TLS file is located.
Using AmiQuote with AmiBroker
Automatic update
The easiest method to work with AmiQuote and AmiBroker is to use the procedure given in Quick Start section of this document. Just run AmiBroker and AmiQuote and choose Tools->Auto-update AmiBroker database. This method updates historical quotes from the last date present in AmiBroker upto today. When performing automatic update, AmiQuote performs internally 4 steps a) retrieves the ticker list from AmiBroker (all stocks loaded currently in AmiBroker);
b) gets the last quotation date available in AmiBroker;
c) performs historical download from last date upto today;
d) instructs AmiBroker to import downloaded files.AmiQuote now supports over 50 international exchanges in "historical" and "daily" modes.
Note that AmiQuote currently supports a new command line parameter: /autoupdate. This option forces AmiQuote to perform automatic update procedure without user intervention.
You may setup you custom tools menu in AmiBroker to call AmiQuote with this argument:
C:\Program Files\AmiBroker\AmiQuote\Quote.EXE /autoupdateIf you do so, you will be able to update your database with a single click.
Manual operation
Automatic mode is nice but there are cases when you have to perform some tasks manually. There is a good old document describing that mode of operation at: http://www.amibroker.com/docs/ab304.html . Everything written in this document remains valid with one exception - now importing to AmiBroker are performed automatically if you have Automatic import checkbox marked.
There are also several cases when you prefer to do things manualy, then please don't forget about some useful tools available at your fingertips:
File->Open, File->Save, File->Save As
These functions enable you to load and save your edited ticker lists for future repeated use.
Edit->Add tickers
This function allows you to add the tickers to the list. Just type space separated tickers into the field that will show up when you choose this function.
Edit->Delete tickers
This function allows you to delete tickers from the list. Just select the items you want to delete from the list view (multiple selection possible by holding SHIFT or CTRL key while clicking on items), and choose this function.
Edit->Mark all, Edit->Unmark all, Edit->Toggle, Edit->Mark selection, Edit->Unmark selection
These functions allow you to mark the tickers for download. Please note that AmiQuote puts a checkmark before ticker name in the list view. ONLY MARKED items will be downloaded. This allows you to perform selective downloads/updates.
View->Refresh
Basically AmiQuote handles refreshes by itself when needed. For example if you changed the date range, the list will be refreshed before starting download. But there are some cases when you may want to refresh the list by yourself. For example if you downloaded and imported quotes once and want to do this again you would need to choose this function. The Refresh function simply applies all date and type settings to the URLs listed, and MARKS all tickers for a new download.
Tools->Import into AmiBroker
This function is useful if you want to import just downloaded quotes into AmiBroker but you have Automatic import checkbox cleared.
Tools->Get tickers from AmiBroker
This function retrieves all stocks from currently loaded AmiBroker database and fills the AmiQuote ticker list with them.
Tools->Get last update date
This function retrieves the date of the most recent quotation of the first stock present in currently loaded AmiBroker database and sets the From date to this date.
Tools->Settings
Displays the settings window where you can define the destination directory where all downloads are stored. Note that blank destination directory means that downloads will be stored in the current working directory (in most cases this is the folder from where current .TLS file was loaded).
In this window you can also change the mode of writing the files. By default historical files are overwritten while daily files get appended. This is recommended setup. Appending daily files simply allows you to create intra-day historical files when you do the updates daily. You may change this behaviour for your particular purpose.
LIMITATIONS
Intraday interval bar data (1-min, 5-min, 15-min, 60-min and 120-min) are available for US securities only.
Historical data for international exchanges are usually much shorter than for US markets.Because intraday bar data are downloaded from Quote.com servers the ticker symbols for indices are different than those used by Yahoo. For complete reference please check http://finance.lycos.com/home/misc/symbol_search.asp?options=i
Intraday bar data are limited to 500 bars regardless of bar interval. In other words you always get 500 bars data, whenever these are 1-min, 5-min, 15-min, 60-min or 120-min data - so by choosing bigger interval you get data from more days. This is the limitation imposed by free delayed Quote.com server.
SUPPLIED EXAMPLE FILES
AmiQuote 1.2 with the following example ticker lists:
- DJIA.tls - components of Dow Jones Industrial Average (USA)
More example ticker lists could be downloaded from http://www.amibroker.com/starter/ .
DISTRIBUTION
AmiQuote is distributed as shareware. The evaluation version is almost fully functional and has NO time limit, so you can use it as long as you wish, but if you like the program and use it often you are encouraged to purchase life-time license for only $35. Click here to buy
LEGAL
AmiQuote 1.70. Copyright (C)2000-2004 by Tomasz Janeczko/AmiBroker.com.
All rights reserved.
All trademarks are the property of their respective owners.
AMIQUOTE OLE AUTOMATION INTERFACE (Version 1.70 and above)
Introduction
Note: AmiQuote's OLE automation interface is available for REGISTERED AmiQuote users only and requires at least version 1.70 of AmiQuote. If you attempt to trigger download or import from OLE automation interface using unregistered version you will be presented with a message box telling you to register.
All AmiQuote automation is available via methods and properties of single object: AmiQuote.Document.
After the initial installation, AmiQuote 1.70 must be run at least once in stand-alone mode in order to setup registry entries for AmiQuote.Document automation object properly. From then on you can use AmiQuote OLE automation.
To instantiate AmiQuote use standard CreateObject (VBScript and alike) or new ActiveXObject (JScript) statements:
VBScript sample:
Set AB = CreateObject("AmiQuote.Document")JScript sample:
AB = new ActiveXObject("AmiQuote.Document");
Important: Note that AmiQuote.Document object is registered as multiple instance object so each call to CreateObject will launch a new instance of AmiQuote. (this is different from AmiBroker)
Typing Conventions
- bool - lowercase italic represents the type of parameter/variable/return value
- AddSymbols - bold represents function / method / property name
- SymbolList - underline type face represents formal parameter
Methods of AmiQuote.Document object
AmiQuote.Document object exposes the following methods (functions) (in alphabetical order):
- bool AddSymbols( string SymbolList )
This method adds symbols to the download list. SymbolList is comma-separated list of ticker symbols.
- bool Download()
This method starts the download process. It returns immediatelly (without waiting for download to complete). You should use DownloadInProgress property to find out if download has completed or not before continuing.
- bool GetSymbolsFromAmiBroker()
This method retrieves symbol list from running instance of AmiBroker. Before calling this you should ensure that AmiBroker is running and has loaded correct database.
- bool Import()
This method starts the import process. Currently it waits until import is finished, but in the future versions this may change (it may return immediatelly). You should use ImportInProgress property to find out if import has completed or not before continuing.
- bool Open( string FileName )
This method opens (loads) ticker list file (.TLS extension). FileName should represent full path to the file name.
- bool RemoveAllSymbols()
This method removes all symbols from the download list
- bool RemoveSymbols( string SymbolList )
This method removes specified symbols to the download list. SymbolList is comma-separated list of ticker symbols you want to remove. Please note that this function may be slow on large symbol lists.
- bool Save()
This method saves the ticker list to the .TLS file under current name.
- bool SaveAs( string FileName )
This method saves the ticker list to the .TLS file under new name. FileName should represent full path to the file name.
All methods return True on success and False on failure.
Properties of AmiQuote.Document object
AmiQuote.Document object exposes the following properties (in alphabetical order):
- bool AllSessions
decides if quotes from Lycos (Livecharts) should include pre/after market data (if set to True) or not. Default value is false (include quotes from regular trading hours only). This property affects only downloads from Lycos (livecharts). All other sources are not affected.
- bool AutoImport
if set to true - AmiQuote will automatically import downloaded quotes into running instance of AmiBroker
- bool DownloadInProgress
(read-only property)
gives true value if there is any download running, gives false value if there are no downloads running. You should check this property in a waiting loop (see below for example) right after you have started the download to make sure that you don't trigger any further action before downloads are complete.
- date From
allows to get/set the start date for historical downloads. This property has OLE DATE type and when you are using JScript you have to use getVarDate() method of JScript Date object to convert from JScript type to OLE-compliant type. VB-like languages can get/set this property directly because VB internally uses the same date type as OLE.
- bool ImportInProgress
(read-only property)
gives true value if there is any import running, gives false value if there are no imports running. You should check this property in a waiting loop (see below for example) right after you have started the download or import to make sure that you don't trigger any further action before imports are complete.
- integer Interval
allows to get/set the intraday bar interval for intraday sources (Livecharts/Integratir). The bar interval here is NOT expressed in minutes. There is a fixed number of intervals available (0..7) and they are encoded as follows:
0 - 1 minute bars
1 - 3 minute bars
2 - 5 minute bars
3 - 15 minute bars
4 - 30 minute bars
5 - 60 minute bars
6 - 120 minute bars
7 - daily bars
- integer RunEvery
allows to get/set the "run every" time (in minutes). "Run every" feature allows AmiQuote to repeat downloads automatically in fixed periods of time. If it is set to zero then no repeated downloads occur. If it is set to value higher then zero then AmiQuote will re-run the download after specified number of minutes. Please note that using this feature from automation has very little merrit because you have better control using Download() method and can trigger repeated downloads from your own code. Also be warned that RunEvery feature needs running AmiQuote instance while usually scripting engines shut down all automation objects when script is finished, therefore you would need to keep the script running all the time so AmiQuote object is not closed by the script.
- integer Source
allows to get/set the data source. There is a fixed number of data sources available now and they are encoded as follows:
0 - Yahoo Historical
1 - Yahoo Current
2 - Lycos / Quote.com
3 - MSN Historical
4 - Forex
5 - Integratir
6 - Brite Futures
- date To
allows to get/set the end date for historical downloads. This property has OLE DATE type and when you are using JScript you have to use getVarDate() method of JScript Date object to convert from JScript type to OLE-compliant type. VB-like languages can get/set this property directly because VB internally uses the same date type as OLE.
Examples
Example 1:
Load ticker list from the file, download historical data since June 1st, 1995 using Yahoo, import to running instance of AmiBroker:
AQ = new ActiveXObject("AmiQuote.Document");
AQ.Open("C:\\mysymbols.tls");
FromDate = new Date(1995,5,1,0,0,0);/* year, month-1, day, hour, min, sec (required by JScript date constructor) */
ToDate = new Date; // current time
/* getVarDate is required to convert from JScript Date to OLE-automation date */
AQ.From = FromDate.getVarDate();
AQ.To = ToDate.getVarDate();
AQ.AutoImport = true; // import automatically
AQ.Source = 0; // Yahoo Historical
AQ.Download(); // starts download
// wait until download and import is finishedwhile( AQ.DownloadInProgress || AQ.ImportInProgress )
{
WScript.sleep(5000); // wait 5 seconds before querying status again
}
WScript.echo("Download and import complete");
Example 2:
Add symbols programmatically, download and import (from the code)
AQ = new ActiveXObject("AmiQuote.Document");
AQ.AddSymbols("MSFT,NVDA,INTC,AAPL"); // comma separated list of symbols
AQ.AutoImport = false; // no automatic import
AQ.Source = 0; // Yahoo Historical
AQ.Download(); // starts download
while( AQ.DownloadInProgress || AQ.ImportInProgress )
{
WScript.sleep(5000); // wait 5 seconds while AmiQuote is downloading
}
AQ.Import(); // starts download
while( AQ.ImportInProgress )
{
WScript.sleep(5000); // wait 5 seconds while AmiQuote is importing
}
WScript.echo("Download and import complete");