public List <Instrument> GetInstruments(string exchanges, string secTypes) { List <Instrument> ret = new List <Instrument>(); GMData <DataTable> dataList; lock (this.locker) { dataList = GMApi.GetInstruments(null, exchanges, secTypes); } if (dataList.status == 0) { foreach (DataRow dr in dataList.data.Rows) { Instrument inst = new Instrument { Symbol = dr["symbol"].ToString(), Level = (int)dr["sec_level"], IsSuspended = (int)dr["is_suspended"] == 1, LastClose = double.Parse(dr["pre_close"].ToString()), UpperLimit = Utils.SafeRead <double>(dr, "upper_limit", 0.00), LowerLimit = Utils.SafeRead <double>(dr, "lower_limit", 0.00), AdjFactor = Utils.SafeRead <double>(dr, "adj_factor", 0.00), CreatedAt = Utils.SafeRead <DateTime>(dr, "created_at", new DateTime(1970, 1, 1)) }; ret.Add(inst); } } else { throw new Exception(this.GetErrorMsg(dataList.status)); } return(ret); }
public void GetHistBars() { int ret = GMApi.SetToken(App.GMToken); if (ret != 0) { return; } HistBars.Clear(); GMDataList <Bar> bars = GMApi.HistoryBars(symbol, frequency, startTime, endTime); HistBars.Clear(); if (bars.status == 0) { //HistBars.AddRange(bars.data); foreach (Bar bar in bars.data) { HistBars.Add(new VMBar(bar)); } _events.PublishOnUIThread(new ModelEvents(new List <object>(new object[] { "Get Bars number = " + bars.data.Count }))); } }
public void IncomeStatement() { DataType = "income_statement:"; GMApi.SetToken(App.GMToken); GMData <DataTable> tbl = GMApi.GetFundamentalsN("income_statement", symbol, endDate, 30, "ASSEIMPALOSS, BASICEPS, BIZCOST, BIZINCO"); if (tbl.status == 0) { MyTable = tbl.data; } }
public void DerivFinanceIndicator() { DataType = "deriv_finance_indicator:"; GMApi.SetToken(App.GMToken); GMData <DataTable> tbl = GMApi.GetFundamentalsN("deriv_finance_indicator", symbol, endDate, 30, "ACCDEPRT,ACCPAYRT,ACCPAYTDAYS,ASSLIABRT,CASHCONVCYCLE,CRPS,CURRENTRT,EBIT,NFART"); if (tbl.status == 0) { MyTable = tbl.data; } }
public void PrimFinanceIndicator() { DataType = "主要财务指标:"; GMApi.SetToken(App.GMToken); GMData <DataTable> tbl = GMApi.GetFundamentalsN("prim_finance_indicator", Symbol, endDate, 30, "EBIT, EPSBASIC, OPNCFPS, ROEDILUTED"); if (tbl.status == 0) { MyTable = tbl.data; } }
public DateTime GetNextTradingDate(string exchange, DateTime date) { GMData <DateTime> dataList; lock (this.locker) { dataList = GMApi.GetNextTradingDate(exchange, Utils.DateToString(date)); } if (dataList.status != 0) { throw new Exception(this.GetErrorMsg(dataList.status)); } return(dataList.data); }
public List <Trade> HistoryTrades(string symbol, string startTime, string endTime = "") { List <Trade> ret = new List <Trade>(); if (endTime == "") { endTime = Utils.DateTimeToString(DateTime.Now); } GMDataList <GMSDK.Tick> dataList; lock (this.locker) { dataList = GMApi.HistoryTicks(symbol, startTime, endTime); } if (dataList.status != 0) { throw new Exception(this.GetErrorMsg(dataList.status)); } foreach (GMSDK.Tick gmTick in dataList.data) { if (gmTick.lastVolume <= 0) { continue; } Trade aTrade = new Trade { DateTime = gmTick.createdAt, Price = gmTick.price, Volume = gmTick.lastVolume, Amount = gmTick.lastAmount, }; switch (gmTick.tradeType) { case 7: aTrade.BuyOrSell = 'B'; break; case 8: aTrade.BuyOrSell = 'S'; break; default: aTrade.BuyOrSell = 'N'; break; } ret.Add(aTrade); } return(ret); }
public List <Bar> HistoryBars(string symbol, int size, string startTime, string endTime = "") { List <Bar> ret = new List <Bar>(); if (endTime == "") { endTime = Utils.DateTimeToString(DateTime.Now); } GMDataList <GMSDK.Bar> dataList; lock (this.locker) { dataList = GMApi.HistoryBars(symbol, string.Format("{0}s", size), startTime, endTime); } if (dataList.status != 0) { throw new Exception(this.GetErrorMsg(dataList.status)); } foreach (GMSDK.Bar gmBar in dataList.data) { Bar aBar = new Bar() { BeginTime = gmBar.bob, EndTime = gmBar.eob, LastClose = gmBar.preClose, Open = gmBar.open, High = gmBar.high, Low = gmBar.low, Close = gmBar.close, Volume = gmBar.volume, Amount = gmBar.amount, Size = size }; ret.Add(aBar); } return(ret); }
public void GetHistTicks() { int ret = GMApi.SetToken(App.GMToken); if (ret != 0) { return; } HistTicks.Clear(); GMDataList <Tick> ticks = GMApi.HistoryTicks(symbol, startTime, endTime); if (ticks.status == 0) { foreach (Tick tick in ticks.data) { HistTicks.Add(new VMTick(tick)); } _events.PublishOnUIThread(new ModelEvents(new List <object>(new object[] { "Get Ticks number = " + ticks.data.Count }))); } }
public Dictionary <string, Tick> Current(IEnumerable <string> symbols) { Dictionary <string, Tick> ret = new Dictionary <string, Tick>(); string symbolString = ""; foreach (string symbol in symbols) { symbolString += symbol + ","; } GMDataList <GMSDK.Tick> dataList; lock (this.locker) { dataList = GMApi.Current(symbolString); } if (dataList.status != 0) { throw new Exception(this.GetErrorMsg(dataList.status)); } foreach (GMSDK.Tick gmTick in dataList.data) { Tick aTick = new Tick { DateTime = gmTick.createdAt, Open = gmTick.open, High = gmTick.high, Low = gmTick.low, Price = gmTick.price, Volume = gmTick.lastVolume, Amount = gmTick.lastAmount, CumVolume = gmTick.cumVolume, CumAmount = gmTick.cumAmount }; int i = 0; foreach (GMSDK.Quote gmQuote in gmTick.quotes) { if (gmQuote == null) { continue; } Quote aQuote = new Quote { BidPrice = gmQuote.bidPrice, BidVolume = gmQuote.bidVolume, AskPrice = gmQuote.askPrice, AskVolume = gmQuote.askVolume }; aTick.Quotes[i] = aQuote; i++; } switch (gmTick.tradeType) { case 7: aTick.BuyOrSell = 'B'; break; case 8: aTick.BuyOrSell = 'S'; break; default: aTick.BuyOrSell = 'N'; break; } aTick.Source = "GM"; ret.Add(gmTick.symbol, aTick); } return(ret); }
public static void SetToken(string token) { GMApi.SetToken(token); }