int LoadInstrument(bool useResource)
{
string symbol;
DataPeriods dataPeriod;
Cursor = Cursors.WaitCursor;
// Takes the instrument symbol and period
symbol = tscbSymbol.Text;
dataPeriod = (DataPeriods)Enum.GetValues(typeof(DataPeriods)).GetValue(tscbPeriod.SelectedIndex);
Instrument_Properties instrProperties = Instruments.InstrumentList[symbol].Clone();
// Makes an instance of class Instrument
Instrument instrument = new Instrument(instrProperties, (int)dataPeriod);
instrument.DataDir = Data.OfflineDataDir;
instrument.FormatDate = DateFormat.Unknown;
instrument.MaxBars = Configs.MaxBars;
instrument.StartYear = Configs.StartYear;
instrument.StartMonth = Configs.StartMonth;
instrument.StartDay = Configs.StartDay;
instrument.EndYear = Configs.EndYear;
instrument.EndMonth = Configs.EndMonth;
instrument.EndDay = Configs.EndDay;
instrument.UseStartDate = Configs.UseStartDate;
instrument.UseEndDate = Configs.UseEndDate;
// Loads the data
int iLoadDataResult = 0;
if (useResource)
iLoadDataResult = instrument.LoadResourceData();
else
iLoadDataResult = instrument.LoadData();
if (instrument.Bars > 0 && iLoadDataResult == 0)
{
Data.InstrProperties = instrProperties.Clone();
Data.Bars = instrument.Bars;
Data.Period = dataPeriod;
Data.Update = instrument.Update;
Data.Time = new DateTime[Data.Bars];
Data.Open = new double[Data.Bars];
Data.High = new double[Data.Bars];
Data.Low = new double[Data.Bars];
Data.Close = new double[Data.Bars];
Data.Volume = new int[Data.Bars];
for (int bar = 0; bar < Data.Bars; bar++)
{
Data.Open[bar] = instrument.Open(bar);
Data.High[bar] = instrument.High(bar);
Data.Low[bar] = instrument.Low(bar);
Data.Close[bar] = instrument.Close(bar);
Data.Time[bar] = instrument.Time(bar);
Data.Volume[bar] = instrument.Volume(bar);
}
Data.MinPrice = instrument.MinPrice;
Data.MaxPrice = instrument.MaxPrice;
Data.DaysOff = instrument.DaysOff;
Data.AverageGap = instrument.AverageGap;
Data.MaxGap = instrument.MaxGap;
Data.AverageHighLow = instrument.AverageHighLow;
Data.MaxHighLow = instrument.MaxHighLow;
Data.AverageCloseOpen = instrument.AverageCloseOpen;
Data.MaxCloseOpen = instrument.MaxCloseOpen;
Data.DataCut = instrument.Cut;
Data.IsIntrabarData = false;
Data.IsTickData = false;
Data.IsData = true;
Data.IsResult = false;
// Configs.SetAccountExchangeRate();
CheckLoadedData();
Data.GenerateMarketStats();
infpnlMarketStatistics.Update(Data.MarketStatsParam, Data.MarketStatsValue,
Data.MarketStatsFlag, Language.T("Market Statistics"));
infpnlAccountStatistics.Update(Backtester.AccountStatsParam, Backtester.AccountStatsValue,
Backtester.AccountStatsFlags, Language.T("Account Statistics"));
}
else if (iLoadDataResult == -1)
{
MessageBox.Show(Language.T("Error in the data file!"), Language.T("Data file loading"),
MessageBoxButtons.OK, MessageBoxIcon.Error);
Cursor = Cursors.Default;
return 1;
}
else
{
MessageBox.Show(Language.T("There is no data for") + " " + symbol + " " + Data.DataPeriodToString(dataPeriod) + " " +
Language.T("in folder") + " " + Data.OfflineDataDir + Environment.NewLine + Environment.NewLine +
Language.T("Check the offline data directory path (Menu Market -> Data Directory)"),
Language.T("Data File Loading"), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Cursor = Cursors.Default;
return 1;
}
Cursor = Cursors.Default;
return 0;
}