[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Help to code a import JScript function



PureBytes Links

Trading Reference Links

Help to code a JScript function to import close  quotes from a CSV format.

Here is an example showing four last lines from such a file:

Date,ticker1,ticker2,ticker3,ticker4
01/10/08,2307,1104,68,45
01/11/08,1175,2233,34,41
01/14/08,2354,1071,69,68
01/15/08,851,2581,25,35


How to change the following code to do this?
http://www.amibroker.com/docs/ab302.html

function ImportCSV( filename )
{
	var fso, f, r;
	var ForReading = 1;
	var AmiBroker;
	var ticker;
	var date;
	var quote;
	var fields;
	var stock;

	/* Create AmiBroker app object */
	AmiBroker = new ActiveXObject( "Broker.Application" );

	/* ... and file system object */
	fso = new ActiveXObject( "Scripting.FileSystemObject" );

	/* we use file name ( without extension ) as a ticker name */
	ticker = fso.GetBaseName( filename ).toUpperCase();

    	/* add a ticker - this is safe operation, in case that	 */
    	/* ticker already exists, AmiBroker returns existing one */
	/* we are doing this outside loop since the file contains */
	/* quotes of single stock only */
    	stock = AmiBroker.Stocks.Add( ticker ); 

	/* open ASCII file */
	f = fso.OpenTextFile( filename, ForReading);

    	/* notify the user */
	WScript.Echo( "Importing " + ticker );

	/* skip first line which contains format definition */
	f.SkipLine(); 

	/* read the file line by line */
	while ( !f.AtEndOfStream )
	{  
		  r =  f.ReadLine();
		  
		  /* split the lines using comma as a separator */
		  fields = r.split(","); 
		  
		  /* split date at - separator */
		  var datefld = fields[ 0 ].split("-");

		  /* ensure Y2K compliance by converting year to 4 digit number */
		  var year = parseInt( datefld[ 2 ] );
		  year += ( year < 50 ) ? 2000 : 1900;
		  datefld[ 2 ] = year.toString();

		  /* put date back all together */
		  datefld.join(" ");

		  date = new Date( datefld );

		  /* add a new quotation */
		  quote = stock.Quotations.Add( date.getVarDate() );
		  
		  /* put data into it */
		  quote.Open = parseFloat( fields[ 1 ] );
		  quote.High  = parseFloat( fields[ 2 ] );
		  quote.Low   = parseFloat( fields[ 3 ] );
		  quote.Close = parseFloat( fields[ 4 ] );
		  quote.Volume = parseInt( fields[ 5 ] );
		  
	}

	/* refresh ticker list and windows */
	AmiBroker.RefreshAll();

	/* notify the user */
	WScript.Echo( "Finished" );

}




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/