public BarInfo GetHistory(HistoryRequest value)
        {
            BarInfo ret = new BarInfo {
                Token = value
            };
            object IntResultArray = null;
            object FltResultArray = null;

            try
            {
                if (uaApi2 == null)
                {
                    uaApi2 = new API2Class();
                }

                uaApi2.MarketSymbol = value.Symbol;
                uaApi2.IsStock      = 1;
                int MarketNumber = uaApi2.FindMarketNumber();
                int Count        = 0;
                if (MarketNumber == -1)
                {
                    uaApi2.IsStock = 0;
                    MarketNumber   = uaApi2.FindMarketNumber();
                }
                if (MarketNumber != -1)
                {
                    // JSM added 20130715
                    uaApi2.ApplyStockSplitAdjustments    = 1;
                    uaApi2.ApplyStockDividendAdjustments = 1;
                    uaApi2.PropStockAdjustments          = 1;
                    uaApi2.PropStockVolumeAdjustments    = 1;
                    uaApi2.RoundToTick = 1;

                    uaApi2.RetrieveStock(MarketNumber, int.Parse(GetBeginDate(value.period, value.MaxAmount).ToString("yyyyMMdd")), int.Parse(DateTime.Now.ToString("yyyyMMdd")));
                    Count = uaApi2.CopyRetrievedDataToArray2(0, out IntResultArray, out FltResultArray);
                    double[,] singleArray = FltResultArray as double[, ];
                    Int32[,] intArray     = IntResultArray as Int32[, ];
                    for (int j = 0; j < Count; j++)
                    {
                        ret.Add(new Bar()
                        {
                            TimeStamp = ParseDate(intArray[0, j].ToString()), Open = singleArray[1, j], High = singleArray[2, j], Low = singleArray[3, j], Close = singleArray[4, j], Volume = intArray[3, j]
                        });
                    }
                }
            }
            catch (Exception e)
            {
                uaApi2        = null;
                value.Message = e.Message;
                throw e;
            }
            return(ret);
        }