public void TickDataReceived(object sender, ITickData tickData) { string code = tickData.Code; RealTimeDataReceiver_Code realTimeDataReceiver; if (dic_Code_RealTimeData.ContainsKey(code)) { realTimeDataReceiver = dic_Code_RealTimeData[code]; realTimeDataReceiver.Receive(tickData); } else { IMarketData marketData = ((IMarketData)sender); List <double[]> openTime = marketData.GetTradingSession(code, currentTradingDay); if (openTime == null) { throw new ApplicationException(code + "-" + currentTradingDay + "没有配置开盘时间"); } realTimeDataReceiver = new RealTimeDataReceiver_Code(code, currentTradingDay, dataReader, klinePeriods, openTime); dic_Code_RealTimeData.Add(code, realTimeDataReceiver); } if (RealTimeDataChanged != null) { RealTimeDataChanged(this, realTimeDataReceiver); } }
public void TickDataReceived(object sender, ITickData tickData) { if (this.tickDataBuilder != null) { tickDataBuilder.Receive(tickData); } }
private void KlineDataForward_OnTick(object sender, ITickData tickData, int index) { if (OnTick != null) { OnTick(this, tickData, index); } }
public ITickData Generate(String variety, int date) { //String indexCode = variety + "13"; //ITickData indexdata = GetAdjustedTickData(indexCode, date); //if (indexdata != null) // return indexdata; List <CodeInfo> codes = dataUpdateHelper.GetUpdatedCodes(variety, date); List <ITickData> tickDataList = new List <ITickData>(); for (int i = 0; i < codes.Count; i++) { CodeInfo code = codes[i]; String upperCode = code.Code.ToUpper(); ITickData data = GetAdjustedTickData(code.Code, date); if (data != null) { tickDataList.Add(data); } } if (tickDataList.Count == 0) { return(null); } List <double[]> openTime = this.dataUpdateHelper.GetUpdatedTradingSessionDetail(codes[0].Code, date); return(Generate(variety + "0000", tickDataList, openTime)); }
public void TestAdjustKLineDataByTick() { DataReaderFactory fac = ResourceLoader.GetDefaultDataReaderFactory(); IKLineData klineData = fac.KLineDataReader.GetData("m05", 20120104, 20120110, KLinePeriod.KLinePeriod_1Minute); KLineData_RealTime realtimeKLineData = new KLineData_RealTime(klineData); realtimeKLineData.BarPos = TimeIndeierUtils.IndexOfTime_KLine(klineData, 20120104.090000); ITickData tickData = fac.TickDataReader.GetTickData("m05", 20120104); tickData.BarPos = 0; int lastIndex = -1; int currentIndex = 0; tickData.BarPos = currentIndex; KLineBar klineBar = KLineBar.CopyFrom(realtimeKLineData); klineBar.High = klineBar.Start; klineBar.Low = klineBar.Start; klineBar.End = klineBar.Start; klineBar.Mount = 0; klineBar.Money = 0; klineBar.Hold = 0; realtimeKLineData.SetRealTimeData(klineBar); for (int i = 0; i < tickData.Length; i++) { RealTimeDataNavigateUtils.ForwardKLineDataByForwardedTick(realtimeKLineData, tickData, lastIndex, currentIndex, new KLineBar()); Console.WriteLine(realtimeKLineData); lastIndex = currentIndex; currentIndex++; } }
public static void PrintTickData(ITickData tickData) { for (int i = 0; i < tickData.Length; i++) { Console.WriteLine(tickData.GetBar(i)); } }
public void TestIndexOfTick_Repeat() { ITickData tickData = MockDataLoader.GetTickData("m0805", 20070919); int index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 0); Assert.AreEqual(2416, index); index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 1); Assert.AreEqual(2417, index); index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 2); Assert.AreEqual(2418, index); index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 3); Assert.AreEqual(2419, index); //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 0); //Assert.AreEqual(2416, index); //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 1); //Assert.AreEqual(2417, index); //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 2); //Assert.AreEqual(2418, index); //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 3); //Assert.AreEqual(2419, index); //Console.WriteLine(index); //Console.WriteLine(tickData.Arr_Time[index]); //Console.WriteLine(tickData.GetBar(index)); }
public SingleTickBarWriter(string path, ITickData tickData, int startIndex, int endIndex) { this.path = path; this.tickData = tickData; this.startIndex = startIndex; this.endIndex = endIndex; }
private void CalcCurrent(ITickData data, int currentTickIndex, List <ITickData> currentData, int[] mounts, int[] lastIndeies) { float price = 0; int mount = 0; int totalMount = 0; int hold = 0; int add = 0; for (int i = 0; i < currentData.Count; i++) { ITickData tickdata = currentData[i]; if (tickdata == null) { continue; } price += tickdata.Price * tickdata.Hold; mount += mounts[i]; totalMount += tickdata.TotalMount; hold += tickdata.Hold; if (currentTickIndex == 0) { add += tickdata.Hold; } else { add += tickdata.Hold - tickdata.Arr_Hold[lastIndeies[i]]; } } price = (float)Math.Round((float)(price / hold), 2); data.Arr_Price[currentTickIndex] = price; data.Arr_Mount[currentTickIndex] = mount; data.Arr_TotalMount[currentTickIndex] = totalMount; data.Arr_Add[currentTickIndex] = add; }
private void SendClose() { PositionInfo position = SelectedPosition; if (position == null) { MessageBox.Show("请选中要平仓的持仓"); return; } string code = CurrentCode; int mount = CurrentMount; float price = CurrentPrice; if (price == 0) { ITickData tickData = dataNavigater.GetTickData(); if (position.Side == PositionSide.Long) { price = tickData.BuyPrice; } else { price = tickData.SellPrice; } } double orderTime = dataNavigater.Time; //OrderInfo order = new OrderInfo(code, orderTime, OpenCloseType.Close, price, mount, position.Side == PositionSide.Long ? OrderSide.Buy : OrderSide.Sell); OrderInfo order = new OrderInfo(code, orderTime, OpenCloseType.Close, price, mount, position.Side == PositionSide.Long ? OrderSide.Sell : OrderSide.Buy); this.trader.SendOrder(order); }
public static KLineBar GetKLineBar(IKLineBar klineBar, ITickData tickData, int startIndex, int endIndex) { KLineBar bar = new KLineBar(); ITickBar endTickBar = tickData.GetBar(endIndex); bar.Time = endTickBar.Time; bar.Start = klineBar.Start; float high = klineBar.High; float low = klineBar.Low; float money = klineBar.Money; int mount = klineBar.Mount; for (int i = startIndex; i <= endIndex; i++) { ITickBar tickBar = tickData.GetBar(i); if (high < tickBar.Price) { high = tickBar.Price; } if (low > tickBar.Price) { low = tickBar.Price; } money += tickBar.Mount * tickBar.Price; mount += tickBar.Mount; } bar.High = high; bar.Low = low; bar.End = endTickBar.Price; bar.Money = money; bar.Mount = mount; bar.Hold = endTickBar.Hold; return(bar); }
private void MarketData_DataReceived(object sender, ITickData tickData) { if (TickDataReceived != null) { TickDataReceived(this, tickData); } }
private void AssertText(string code, int start, int end, string fileName) { List <string> list_OnBar = new List <string>(); IDataPackage_Code datapackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end, 0, 0); IKLineData_Extend klineData = datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Minute); ITickData tickData = datapackage.GetTickData(start); KLineToTickIndeier indeier = new KLineToTickIndeier(tickData, klineData); int lastBarPos; for (int i = 0; i < tickData.Length; i++) { list_OnBar.Add("tick:" + tickData.GetBar(i)); Console.WriteLine("tick:" + tickData.GetBar(i)); int pos = indeier.GetKLineBarPosIfFinished(i, out lastBarPos); if (pos >= 0) { list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(pos)); Console.WriteLine(klineData.Period + ":" + klineData.GetBar(pos)); for (int m = pos + 1; m <= lastBarPos; m++) { list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(m)); Console.WriteLine(klineData.Period + ":" + klineData.GetBar(m)); //lastBarPos = 1; } } } AssertUtils.AssertEqual_List(fileName, GetType(), list_OnBar); }
public override void Paint(Graphics g) { if (dataProvider == null) { return; } Rectangle rect = DisplayRect; drawFrame(g); int x_left = rect.X; int y = rect.Y; CurrentInfo chartinfo = dataProvider.GetCurrentInfo(); double lastEndPrice = chartinfo.lastJsPrice; Point point = new Point(x_left, y); g.DrawString(chartinfo.code, new Font("宋体", 24, FontStyle.Bold), new SolidBrush(ColorConfig.Color_StockInfo), point); ITickData tickData = dataProvider.GetCurrentTickData(); DrawBuySell(g, point, tickData, lastEndPrice); int x_middle = rect.X + rect.Width / 2; Point pointl = DrawContent(g, rect, x_left, x_middle, chartinfo, lastEndPrice, point); pointl.X = rect.X; pointl.Y += 26; DrawRecentTick(g, pointl, tickData, lastEndPrice); }
private void DrawRecentTick(Graphics g, Point startPoint, ITickData tickData, double lastEndPrice) { int defaultLeft = startPoint.X + 2; Point p = new Point(defaultLeft, startPoint.Y + 2); Color titleColor = ColorUtils.GetColor("#808080"); g.DrawString("时间", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p); p.X += 90; g.DrawString("价位", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p); p.X += 40; g.DrawString("现手", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p); p.X += 40; g.DrawString("增仓", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p); p.X += 40; g.DrawString("开平", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p); if (tickData == null) { return; } //TODO 未考虑周全 int showCount = tickData.BarPos >= 15 ? 15 : tickData.BarPos; int startBarPos = tickData.BarPos - showCount; for (int i = 0; i < showCount; i++) { ITickBar tickBar = tickData.GetBar(startBarPos); ITickBar lastTickBar = startBarPos <= 0 ? null : tickData.GetBar(startBarPos - 1); p.X = defaultLeft; p.Y += 25; DrawTickBar(g, p, tickBar, lastTickBar, lastEndPrice); startBarPos++; } }
private void TestLoadTickData(string code, int date, string fileName) { IDataReader dataReader = DataReaderFactory.CreateDataReader(DataCenterUri.URI); ITickData klineData = dataReader.TickDataReader.GetTickData(code, date); AssertUtils.AssertEqual_TickData(fileName, GetType(), klineData); }
/// <summary> /// 数据转换器 /// </summary> /// <param name="data">待转换的tick数据</param> /// <param name="klineTimes">目标K线时间队列,需要传入完整时间,如5分钟K线,要传入20140106090000,20140106090500......</param> /// <param name="lastEndPrice"></param> /// <param name="lastEndHold"></param> public DataTransfer_Tick2KLine(ITickData data, IList <double[]> klineTimes, float lastEndPrice, int lastEndHold) { this.tickData = data; this.klineTimes = klineTimes; this.lastEndPrice = lastEndPrice; this.lastEndHold = lastEndHold; }
public override void OnTick(object sender, IStrategyOnTickArgument currentData) { ITickData tickData = currentData.Tick.TickData; if (tickData.BarPos == 0) { } }
public DayNavigate(DataReaderFactory dataReaderFactory, string code, int date) { this.dataReaderFactory = dataReaderFactory; this.code = code; this.date = date; this.tickData = dataReaderFactory.TickDataReader.GetTickData(code, date); this.timeLineData = dataReaderFactory.TimeLineDataReader.GetData(code, date); }
private int FindEndBarPos(ITickData tickData, ITradingTime tradingTime, int periodIndex) { double endTime = tradingTime.GetPeriodTime(periodIndex)[1]; double nextStartTime = tradingTime.GetPeriodTime(periodIndex + 1)[0]; endTime = (endTime + nextStartTime) / 2; return(TimeIndeierUtils.IndexOfTime_Tick(tickData, endTime)); }
/// <summary> /// 检验tick数据的正确性 /// </summary> /// <param name="tickData"></param> /// <param name="newTickData"></param> public static void AssertEqual_TickData(ITickData tickData, ITickData newTickData) { Assert.AreEqual(newTickData.Length, tickData.Length); for (int i = 0; i < tickData.Length; i++) { Assert.AreEqual(newTickData.GetBar(i).ToString(), tickData.GetBar(i).ToString()); } }
public bool Forward() { if (isEnd) { return(false); } ITickData currentTickData = forwardData.CurrentTickData; if (currentTickData == null || currentTickData.BarPos + 1 >= currentTickData.Length) { bool forwardNextDay = ForwardNextDay(); currentTickData = forwardData.CurrentTickData; if (currentTickData != null) { if (currentTickData.BarPos + 1 < currentTickData.Length) { isDayEnd = false; } isDayStart = true; this.isTradingTimeStart = true; this.isTradingTimeEnd = false; ForwardNextDay_AttachCode(currentTickData.TradingDay); } if (forwardNextDay) { DealEvents(); } return(forwardNextDay); } else { isDayStart = false; } ForwardToday(); ForwardToday_AttachCode(); if (currentTickData.BarPos + 1 >= currentTickData.Length) { isDayEnd = true; KLinePeriod[] periods = dic_KLinePeriod_IsEnd.Keys.ToArray <KLinePeriod>(); for (int i = 0; i < periods.Length; i++) { KLinePeriod period = periods[i]; if (period.PeriodType < KLineTimeType.DAY || period.Equals(KLinePeriod.KLinePeriod_1Day)) { forwardData.GetKLineData(period).ResetCurrentBar(); dic_KLinePeriod_IsEnd[periods[i]] = true; } } } else { isDayEnd = false; } DealEvents(); return(true); }
//public ITickData GetCurrentTickData() //{ // return navigate.CurrentTickData; //} //public int CurrentTickIndex //{ // get { return navigate.CurrentTickIndex; } //} //public IGraphicOperator_CurrentInfo GetOperator() //{ // return graphicOperator; //} public void ChangeData(CurrentInfo currentInfo, ITickData tickData) { this.currentInfo = currentInfo; this.tickData = tickData; if (OnGraphicDataChange != null) { OnGraphicDataChange(this, new GraphicDataChangeArgument()); } }
public void Receive(ITickData tickData) { this.tickData = tickData; foreach (KLineData_RealTime klineData in this.dic_Period_KLineData.Values) { klineData.Receive(tickData); } //this.timeLineData.Receive(tickData); }
public double GetSellPrice(string code) { ITickData tickData = this.Account.RealTimeDataReader.GetRealTimeData(code).GetTickData(); if (tickData != null) { return(tickData.SellPrice); } return(GetRealTimeData_Code(code).GetKLineData(KLinePeriod.KLinePeriod_1Minute).End); }
public void Receive(ITickData tickData) { string code = tickData.Code; if (!dicTickData.ContainsKey(code)) { dicTickData.Add(code, tickData); return; } }
private static KLineBar GetKLineBar(ITickData tickData, int startIndex, int endIndex) { KLineBar klineBar = KLineUtils.GetKLineBar(tickData.GetBar(startIndex)); for (int i = startIndex + 1; i <= endIndex; i++) { klineBar = KLineUtils.GetKLineBar(klineBar, tickData.GetBar(i)); } return(klineBar); }
private static TimeLineBar GetTimeLineBar(ITickData tickData, int startIndex, int endIndex, float lastEndPrice) { TimeLineBar timeLineBar = TimeLineUtils.GetTimeLineBar(tickData.GetBar(startIndex), lastEndPrice); for (int i = startIndex + 1; i <= endIndex; i++) { timeLineBar = TimeLineUtils.GetTimeLineBar(timeLineBar, tickData.GetBar(i), lastEndPrice); } return(timeLineBar); }
private void onTickDataReceived(object sender, ITickData tickData, ITickBar tickBar) { RealTimeDataReceiver_Code receiver; bool b = dic_Code_Receive.TryGetValue(tickData.Code, out receiver); if (b) { receiver.Receive(tickData, tickBar); } }
private bool isNextOverTime(ITickData data, int currentTickIndex, double time) { if (currentTickIndex + 1 >= data.Length) { return(false); } double nextTickTime = data.Arr_Time[currentTickIndex + 1]; return(nextTickTime >= time); }