Below is my code.
Also attached is the screenshot of Trading Hours window. I am using TD Ameritrade subscribed to NASDAQ Level II and NYSE realtime data as well.
public static void loadHistoricalPriceData(Instrument instrument , string bartype, int barsize, DateTime starttime, DateTime endtime)
{
Thread subscriptionThread=new Thread(() =>
{
try{
Thread.CurrentThread.IsBackground = true;
// create a new bars request. This will determine the insturment and range for the bars to be requested
BarsRequest barsRequest = new BarsRequest(instrument, starttime, endtime);
// Parametrize your request.
barsRequest.BarsPeriod = new BarsPeriod { BarsPeriodType = BarsPeriodType.Day, Value = 1 };
barsRequest.TradingHours = TradingHours.Get("US Equities RTH");
barsRequest.Request(new Action<BarsRequest, ErrorCode, string>((bars, errorCode, errorMessage) =>
{
if (errorCode != ErrorCode.NoError)
{
// Handle any errors in requesting bars here
NinjaTrader.NinjaScript.NinjaScript.Log(string.For mat("Error on requesting bars: {0}, {1}, {2}",
errorCode, errorMessage, instrument.FullName), LogLevel.Warning);
Tradelytics.API.nobarDataInstrument.Add(instrument .FullName);
//sendPriceHistory(getEmptyDataTable(instrument.Full Name, "NotFound"), instrument.FullName);
return;
}
if(bars.Bars.Count>0)
{
try{
DataTable barsData = new DataTable(Tradelytics.BarData.TableName);
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Time_Stamp, typeof(DateTime)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Open, typeof(float)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.High, typeof(float)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Low, typeof(float)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Close, typeof(float)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Instrument, typeof(String)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Volume, typeof(int)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Ask, typeof(float)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Bid, typeof(float)));
//barsData.Columns.Add(new DataColumn(Tradelytics.BarData.Eps, typeof(float)));
barsData.Columns.Add(new DataColumn(Tradelytics.BarData.ProductType, typeof(String)));
for (int i = 0; i < bars.Bars.Count; i++)
{
barsData.Rows.Add(
bars.Bars.GetTime(i),
bars.Bars.GetOpen(i),
bars.Bars.GetHigh(i),
bars.Bars.GetLow(i),
bars.Bars.GetClose(i),
instrument.FullName,
bars.Bars.GetVolume(i),
0,
0,
// fundamentalData.EarningsPerShare,
instrument.MasterInstrument.InstrumentType.ToStrin g());
}
sendPriceHistory(barsData, instrument.FullName);
} catch (Exception error) {NinjaTrader.NinjaScript.NinjaScript.Log("Error Loading Historical data for "+instrument.FullName+ " in subscription method\n"+error.StackTrace, LogLevel.Error); }
}
NinjaTrader.NinjaScript.NinjaScript.Log(instrument .FullName+" bars found: "+bars.Bars.Count+" between "+starttime+" and "+endtime+" for "+bartype, LogLevel.Information);
}));
}
catch (Exception error)
{
NinjaTrader.NinjaScript.NinjaScript.Log("loadHisto ricalPriceData "+instrument.FullName+ " \n"+error.StackTrace, LogLevel.Error);
}
});
subscriptionThread.Priority=ThreadPriority.Highest ;
subscriptionThread.Start();
}
Comment