Ah, very good Andrew. Yeah, the old link was just for your reference.

Sorry, jbhunter, don't know what's wrong with your setup. I have 1,000 days max on SC setting and was able to get 1,000 days of M1 data for your BRX example into a .t6 file. I am using the version 1.0.xx of the plugin

My code may have changed since I posted it. For what it's worth, here's the latest code. It's not the best code, but it works for me. Just put BarPeriod as the second argument.

You'll have to debug your problem further on your own.

Code
int assetHistorySC(string theAsset, int theBP)
{
	if (!Init)	return 0;

	int barperiod = theBP;
	//----------------------------------
	//		setup start and end dates
	//----------------------------------
	int M1back = (LookBack*BarPeriod)/(7*60); 	// days of lback
	int DailyLBack = (LookBack+2*UnstablePeriod);
	int start = min(ymd(wdate(NOW)-6*365), ymd(dmy(StartDate)-2*ifelse(barperiod<1440,M1back, DailyLBack)));	//6 years or more
	int end;
	
	
	if (!EndDate) 
		if (hour(NOW)>=21) EndDate = ymd(wdate(NOW));
		else EndDate = ymd(wdate(NOW)-1);

	string t6Out[100];
	if (barperiod<1440) {
		sprintf(t6Out,strf("History\\%s%s",theAsset,History));
		barperiod = 1;
		end = ymd(wdate(NOW)+1);	// +1 to get most current M1 bar
	}
	else	{
		sprintf(t6Out,"History\\%s.t6",theAsset);
		if (hour(NOW)>=21) end = ymd(wdate(NOW));
		else end = ymd(wdate(NOW)-1);	 // -1 to get up to yesterday		
	}
	
	//-------------------------------------
	// check to see if exiting t6 is in range	
	//-------------------------------------

	if (file_length(t6Out))	{
		int records = dataLoad(33,t6Out,7);	
		int fileStart = ymd(dataVar(33,-1,0));	
		int fileEnd = ymd(dataVar(33,0,0));
		
		//printf("fileStart=%d  fileEnd=%d\n",fileStart, fileEnd);
			
		// if Test or Train, don't download if data in range
		if (	(!Live && EndDate<=fileEnd && barperiod==1440)
			|| (Live && end<=fileEnd && barperiod==1440)
			)	
		{
			if (Live || DEBUG) printf("\n[%s] historical data up to date... no download\n");
			dataNew(33,0,0);
			return 0;	// range already inside
		}	
		// if not enough data, its probably a newly listed stock/asset with limited history
		if (start<fileStart)		
			if (Live || DEBUG) printf("\nWARNING:  historical data for [%s] may not be early enough\n",theAsset);

		// set start to last date in file, to upate to current date
		start = fileEnd;		

	}

	if (start==end) return 0;
	
	if (Live || DEBUG) printf("Downloading data [%s]... Start=%d   End=%d\n", theAsset, start, end);

	//----------------------------------
	//			index symbol conversions
	//----------------------------------
	if (theAsset == "SPX") theAsset = "$SPX";
	if (theAsset == "DJI") theAsset = "$DOWI";	
	if (theAsset == "INX") theAsset = "$INX";
	
	//----------------------------------
	//				get data		
	//----------------------------------

	if(once(Init)) connectToSierraChart();

	int reqbars = (int) (dmy(end) - dmy(start))*ifelse(barperiod==1440,1,1440);	// D1 or M1 data only 
	//printf("SC: items allocated = %d\n",reqbars+10);

	T6* myT6=malloc((reqbars+10)*sizeof(T6));
	int items = 0;
	int i;
	for (i=0;i<=2;i++)
	{
		items = BrokerHistory2 (theAsset, dmy(start), dmy(end), barperiod, -1, myT6);	
		if (Live || DEBUG) printf("SC: items received = %d\n",items);

		if (!items)	{
			if (Live || DEBUG) printf("ERROR:  No historical data returned from SierraChart... maybe out of data cache range.\n");
			connectToSierraChart();
			wait(1000);
		}
		else	{
			break;
		}
	}
		
	FILE *fp;
	string tempT6 = strf("History\\temp-%s.t6",theAsset);
	fp = fopen(tempT6, "wb");
	fwrite(myT6 , sizeof(T6), items, fp );
	fclose(fp);
	free(myT6);
	
	dataLoad(33,tempT6,7);	// load it into 33
	dataSort(33);				// make sure it's sorted 
	
	//---------------------------------
	//	pre-pend to existing	t6
	//---------------------------------
	if (file_length(t6Out)>0)	{
		dataLoad(22,t6Out,7);
		dataMerge(22,33);		
		dataSave(22,t6Out);
		dataNew(22,0,0);	
	}
	else	{
		dataSave(33,t6Out);
		dataNew(33,0,0);	
	}

	file_delete(tempT6);
	return 0;
}