public void TestKLineDataForward_Tick() { printStrs_Forward_Tick.Clear(); string code = "RB1710"; int start = 20170601; int endDate = 20170603; IDataForward_Code klineDataForward = GetKLineDataForward(code, start, endDate); klineDataForward.OnBar += KlineDataForward_OnBar; klineDataForward.OnTick += KlineDataForward_OnTick; DateTime prevtime = DateTime.Now; while (klineDataForward.Forward()) { } DateTime time = DateTime.Now; TimeSpan span = time.Subtract(prevtime); Console.WriteLine(span.Minutes * 60 * 1000 + span.Seconds * 1000 + span.Milliseconds); //ITimeLineData timeLineData = klineDataForward.GetTimeLineData(); //for(int i = 0; i < timeLineData.Length; i++) //{ // ITimeLineBar timeLineBar = timeLineData.GetBar(i); // Console.WriteLine(timeLineBar); //} AssertUtils.AssertEqual_List("forward_tick", GetType(), printStrs_Forward_Tick); printStrs_Forward_Tick.Clear(); }
public void TestTrade_Minute() { string code = "RB1710"; int startDate = 20170601; int endDate = 20170605; IDataForward_Code historyDataForward = ForwardDataGetter.GetHistoryDataForward_Code(code, startDate, endDate, false); IAccount account = DataCenter.Default.AccountManager.CreateAccount(100000, historyDataForward); account.OnReturnOrder += Account_OnReturnOrder; account.OnReturnTrade += Account_OnReturnTrade; account.Open(code, 3099, market.OrderSide.Buy, 10); account.Open(code, 3095, market.OrderSide.Buy, 10); int index = 0; while (index < 200) { historyDataForward.Forward(); index++; if (isOpen && historyDataForward.Price >= 3102) { account.Close(code, 3102, market.OrderSide.Sell, 10); account.Close(code, 3105, market.OrderSide.Sell, 10); } //Console.WriteLine(historyDataForward.GetTickData()); } Console.WriteLine(account); Assert.AreEqual(101180, account.Money); }
private static IDataForward_Code GetKLineDataForward(string code, int start, int endDate) { //KLineData_RealTime klineData_1Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_1Minute); //KLineData_RealTime klineData_5Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_5Minute); //KLineData_RealTime klineData_15Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_15Minute); //KLineData_RealTime klineData_1Day = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_1Day); //Dictionary<KLinePeriod, KLineData_RealTime> dic = new Dictionary<KLinePeriod, KLineData_RealTime>(); //IList<int> tradingDays = CommonData.GetDataReader().TradingDayReader.GetTradingDays(start, endDate); //dic.Add(KLinePeriod.KLinePeriod_1Minute, klineData_1Minute); //dic.Add(KLinePeriod.KLinePeriod_5Minute, klineData_5Minute); //dic.Add(KLinePeriod.KLinePeriod_15Minute, klineData_15Minute); //dic.Add(KLinePeriod.KLinePeriod_1Day, klineData_1Day); IDataPackage_Code dataPackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, endDate); ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods(); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_5Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_15Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Day); referedPeriods.UseTickData = true; ForwardPeriod forwardPeriod = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute); IDataForward_Code klineDataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, referedPeriods, forwardPeriod); //new HistoryDataForward_Code_TickPeriod(, code, periods, KLinePeriod.KLinePeriod_1Minute); return(klineDataForward); }
/// <summary> /// 得到指定的 /// </summary> /// <param name="code"></param> /// <returns></returns> public IDataForward_Code GetHistoryDataForward(string code) { IDataForward_Code value = null; //dic_Code_Forward.TryGetValue(code, out value); return(value); }
public void TestSaveLoad_DataForward_Code() { string code = "rb1710"; int startDate = 20170601; int endDate = 20170602; ForwardPeriod forwardPeriod = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute); ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods(new KLinePeriod[] { KLinePeriod.KLinePeriod_1Minute, KLinePeriod.KLinePeriod_15Minute, KLinePeriod.KLinePeriod_1Hour, KLinePeriod.KLinePeriod_1Day }, true, false); IDataForward_Code dataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(code, startDate, endDate, referedPeriods, forwardPeriod); for (int i = 0; i < 100; i++) { dataForward.Forward(); } Console.WriteLine(XmlUtils.ToString(dataForward)); XmlElement root = GetXmlRoot(); dataForward.Save(root); IDataForward_Code dataForward2 = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(root); for (int i = 0; i < 100; i++) { dataForward.Forward(); dataForward2.Forward(); } Console.WriteLine(XmlUtils.ToString(dataForward2)); Assert.AreEqual(dataForward.Time, dataForward2.Time); }
public Account(string accountId, double money, IDataForward_Code historyDataForward_Code) { this.accountId = accountId; this.accountTrade = new AccountTrade(money); this.priceGetter = new PriceGetter_HistoryDataForward_Code(historyDataForward_Code); this.priceGetter.timeChange += PriceGetter_timeChange; }
private IDataForward_Code GetDataForward() { if (isTickForward) { return(dataForward); } if (this.dataForward != null) { this.dataForward.NavigateTo(Time); return(this.dataForward); } ForwardPeriod forwardPeriod = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute); ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods(); referedPeriods.UseTickData = true; referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_5Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_15Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Hour); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Day); this.dataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(this.DataPackage, referedPeriods, forwardPeriod); this.dataForward.Forward(); this.dataForward.NavigateTo(this.Time); this.dataForward.OnRealTimeChanged += DataForward_OnRealTimeChanged; return(this.dataForward); }
private IDataForward_Code PrepareDataForward() { IDataForward_Code dataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, ReferedPeriods, ForwardPeriod); dataForward.OnBar += RealTimeReader_OnBar; dataForward.OnTick += RealTimeReader_OnTick; return(dataForward); }
public void TestAccountSave() { string code = "RB1710"; int startDate = 20170601; int endDate = 20170605; IDataForward_Code historyDataForward = ForwardDataGetter.GetHistoryDataForward_Code(code, startDate, endDate, true); historyDataForward.Forward(); IAccount account = DataCenter.Default.AccountManager.CreateAccount(100000, historyDataForward); account.AccountSetting.TradeType = AccountTradeType.MARKETPRICE; account.OnReturnOrder += Account_OnReturnOrder; account.OnReturnTrade += Account_OnReturnTrade; account.Open(code, 3099, market.OrderSide.Buy, 10); account.Open(code, 3095, market.OrderSide.Buy, 10); int index = 0; while (index < 2000) { historyDataForward.Forward(); index++; if (isOpen && historyDataForward.GetTickData().SellPrice >= 3102) { account.Close(code, 3102, market.OrderSide.Sell, 10); account.Close(code, 3105, market.OrderSide.Sell, 10); } //Console.WriteLine(historyDataForward.GetTickData()); } account.Open(code, 3105, market.OrderSide.Buy, 10); account.Open(code, 3025, market.OrderSide.Buy, 10); for (int i = 0; i < 100; i++) { historyDataForward.Forward(); } XmlElement root = GetXmlRoot(); account.Save(root); Account account2 = (Account)DataCenter.Default.AccountManager.CreateAccount(root); //Console.WriteLine(account); //Console.WriteLine(account2); Assert.AreEqual(XmlUtils.ToString(account), XmlUtils.ToString(account2)); IDataForward_Code historyDataForward2 = ForwardDataGetter.GetHistoryDataForward_Code(code, startDate, endDate, true); historyDataForward2.NavigateTo(account2.Time); account2.BindRealTimeReader(historyDataForward2); //IDataForward_Code historyDataForward2 = account2.DataForward_Code; for (int i = 0; i < 100; i++) { historyDataForward2.Forward(); } Console.WriteLine(account2); }
private void KlineDataForward_OnTick(object sender, IForwardOnTickArgument argument) { IDataForward_Code klineDataForward = (IDataForward_Code)sender; //Console.WriteLine("tick:" + klineDataForward.GetTickData()); //Console.WriteLine("timeline:"+klineDataForward.GetTimeLineData()); Console.WriteLine(klineDataForward.GetTimeLineData()); printStrs_Forward_TimeLine.Add(klineDataForward.GetTimeLineData().ToString()); }
private static void PrintOnBar(IDataForward_Code klineDataForward) { Console.WriteLine("tick:" + klineDataForward.GetTickData()); Console.WriteLine("1minute:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute)); Console.WriteLine("5minute:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute)); Console.WriteLine("15minute:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_15Minute)); Console.WriteLine("1day:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Day)); ITimeLineData timeLineData = klineDataForward.GetTimeLineData(); Console.WriteLine("timeline:" + timeLineData); }
public bool Forward(ForwardPeriod forwardPeriod) { if (!forwardPeriod.IsTickForward) { return(Forward(forwardPeriod.KlineForwardPeriod)); } IDataForward_Code dataForward = GetDataForward(); isTickForward = true; return(dataForward.Forward()); }
private double GetNextTime(IDataForward_Code forward_Code) { ITickData tickData = forward_Code.GetTickData(); if (tickData == null) { return(TIME_END); } int nextBarPos = tickData.BarPos; return(-1); }
private bool ExecuteStrategy(IDataForward_Code realTimeReader) { //执行策略 while (!realTimeReader.IsEnd) { realTimeReader.Forward(); if (isCancel) { return(false); } } return(true); }
public PriceGetter_HistoryDataForward_Code(IDataForward_Code historyDataForward_Code) { if (historyDataForward_Code.ForwardPeriod.IsTickForward) { this.priceGetter = new PriceGetter_HistoryDataForward_Code_Tick(historyDataForward_Code); } else { this.priceGetter = new PriceGetter_HistoryDataForward_Code_KLine(historyDataForward_Code); } this.priceGetter.timeChange += PriceGetter_timeChange; }
private void KlineDataForward_OnTick1(object sender, IForwardOnTickArgument argument) { IDataForward_Code klineDataForward = (IDataForward_Code)sender; string txt = "tick:" + argument.TickInfo.TickBar; printStrs_Forward_TimeInfo_OnTick.Add(txt); Console.WriteLine(txt); txt = "tradingTimeStart:" + klineDataForward.IsTradingTimeStart + "|tradingTimeEnd:" + klineDataForward.IsTradingTimeEnd + "|dayStart:" + klineDataForward.IsDayStart + "|dayEnd:" + klineDataForward.IsDayEnd; Console.WriteLine(txt); printStrs_Forward_TimeInfo_OnTick.Add(txt); }
public void TestRealTimeReader_OnTick() { string code = "RB1710"; int start = 20170601; int endDate = 20170610; IDataForward_Code realTimeReader = GetRealTimeReader(code, start, endDate, true); realTimeReader.OnTick += RealTimeReader_OnTick; realTimeReader.OnBar += RealTimeReader_OnBar; while (!realTimeReader.IsEnd) { realTimeReader.Forward(); Console.WriteLine("timeline:" + realTimeReader.GetTimeLineData()); } }
public void TestRealTimeReader() { string code = "RB1710"; int start = 20170601; int endDate = 20170610; IDataForward_Code realTimeReader = GetRealTimeReader(code, start, endDate, false); while (!realTimeReader.IsEnd) { realTimeReader.Forward(); IKLineData klineData = realTimeReader.GetKLineData(KLinePeriod.KLinePeriod_1Minute); Console.WriteLine(klineData); } }
private void KlineDataForward_OnBar1(object sender, IForwardOnBarArgument argument) { IDataForward_Code klineDataForward = (IDataForward_Code)sender; //Console.WriteLine("DayEnd:" + klineDataForward.IsDayEnd // + "|1MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Minute) // + "|5MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_5Minute) // + "|15MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_15Minute) // + "|DayEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Day)); Console.WriteLine("1minute:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute)); Console.WriteLine("tradingTimeStart:" + klineDataForward.IsTradingTimeStart + "|tradingTimeEnd:" + klineDataForward.IsTradingTimeEnd + "|dayStart:" + klineDataForward.IsDayStart + "|dayEnd:" + klineDataForward.IsDayEnd); }
private static void AddToList(List <string> list, IDataForward_Code klineDataForward) { IKLineData klineData_1 = klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute); list.Add("DayEnd:" + klineDataForward.IsDayEnd + "|1MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Minute) + "|5MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_5Minute) + "|15MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_15Minute) + "|DayEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Day)); list.Add("1minute:" + klineData_1); KLineData_RealTime klineData_5 = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute); list.Add("5minute:" + klineData_5); list.Add("5minute_" + klineData_5.GetCurrentBar_Original()); }
public override void Run() { if (this.state != StrategyExecutorState.NotStart) { return; } lock (lockRunObject) { if (this.state != StrategyExecutorState.NotStart) { return; } if (ReferedPeriods == null) { throw new ApplicationException("策略运行时引用周期为空" + dataPackage); } if (ForwardPeriod == null) { throw new ApplicationException("策略运行时前进周期为空" + dataPackage); } //创建前进器 this.dataForward = PrepareDataForward(); //创建StrategyHelper this.strategyHelper = PrepareStrategyHelper(); if (Strategy is StrategyAbstract) { ((StrategyAbstract)Strategy).StrategyHelper = StrategyHelper; } //开始执行 this.state = StrategyExecutorState.Running; ExecuteStrategyStart(dataForward); if (isCancel) { DealCancelEvent(); return; } ExecuteStrategy(dataForward); if (isCancel) { DealCancelEvent(); return; } ExecuteStrategyEnd(dataForward); } }
private void KlineDataForward_OnTick(object sender, IForwardOnTickArgument argument) { string txt = "tick:" + argument.TickInfo.TickBar; printStrs_Forward_Tick.Add(txt); Console.WriteLine(txt); IDataForward_Code klineDataForward = (IDataForward_Code)sender; double price = argument.TickInfo.TickData.Price; Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute).End); Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute).End); Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_15Minute).End); Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Day).End); Assert.AreEqual(price, klineDataForward.GetTimeLineData().Price); }
//[TestMethod] public void TestHistoryDataForward_Play() { string code = "RB1710"; int start = 20170601; int endDate = 20170601; IDataForward_Code realTimeReader = ForwardDataGetter.GetHistoryDataForward_Code(code, start, endDate, true); realTimeReader.OnTick += RealTimeReader_OnTick; realTimeReader.NavigateTo(20170531.210011); realTimeReader.Play(); while (realTimeReader.Time < 20170531.210015) { } realTimeReader.Pause(); }
//[TestMethod] public void TestKLineData_Play() { string code = "RB1710"; int start = 20170601; int endDate = 20170601; IDataForward_Code klineDataForward = GetKLineDataForward(code, start, endDate); klineDataForward.OnTick += KlineDataForward_OnTick; Console.WriteLine(klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute)); klineDataForward.Play(); while (klineDataForward.Time < 20170531.210005) { } klineDataForward.Pause(); }
public static IDataForward_Code GetHistoryDataForward_Code(string code, int startDate, int endDate, bool useTickData, bool useTimeLineData, IList <KLinePeriod> klinePeriods) { ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods(); referedPeriods.UseTimeLineData = useTimeLineData; referedPeriods.UseTickData = useTickData; referedPeriods.UsedKLinePeriods.AddRange(klinePeriods); ForwardPeriod forwardPeriod = new ForwardPeriod(useTickData, referedPeriods.GetMinPeriod()); IDataPackage_Code dataPackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, startDate, endDate); //DataPackageFactory.CreateDataPackage(GetDataReader(), code, startDate, endDate); IDataForward_Code realTimeReader = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, referedPeriods, forwardPeriod); return(realTimeReader); }
public DataForward(IDataForwardFactory fac, IDataPackage_Code[] dataPackage, ForwardReferedPeriods[] referedPeriods, ForwardPeriod forwardPeriod) { this.dataPackage = dataPackage; this.referedPeriods = referedPeriods; this.forwardPeriod = forwardPeriod; this.tradingDays = dataPackage[0].GetTradingDays(); this.historyDataForwards = new List <IDataForward_Code>(); for (int i = 0; i < dataPackage.Length; i++) { ForwardReferedPeriods referedPeriod = referedPeriods[i]; ForwardPeriod currentForwardPeriod = new ForwardPeriod(referedPeriod.UseTickData, referedPeriod.GetMinPeriod()); IDataForward_Code historyDataForward_Code = fac.CreateDataForward_Code(dataPackage[i], referedPeriod, currentForwardPeriod); this.historyDataForwards.Add(historyDataForward_Code); } }
//[TestMethod] public void TestKLineDataForward_Tick_Long() { printStrs_Forward_Tick.Clear(); //string code = "RB1710"; //int start = 20170401; //int endDate = 20170803; string code = "RB0000"; int start = 20150401; int endDate = 20170803; IDataForward_Code klineDataForward = GetKLineDataForward(code, start, endDate); klineDataForward.OnBar += KlineDataForward_OnBar_Long; klineDataForward.OnTick += KlineDataForward_OnTick_Long; while (klineDataForward.Forward()) { } }
private static IDataForward_Code GetKLineDataForward(string code, int start, int endDate) { IDataPackage_Code dataPackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, endDate); ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods(); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_5Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_15Minute); referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Day); referedPeriods.UseTickData = true; referedPeriods.UseTimeLineData = true; ForwardPeriod forwardPeriod = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute); IDataForward_Code klineDataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, referedPeriods, forwardPeriod); //new HistoryDataForward_Code_TickPeriod(, code, periods, KLinePeriod.KLinePeriod_1Minute); return(klineDataForward); }
public void TestKLineDataForward_OnBar() { list_OnBar.Clear(); string code = "RB1710"; int start = 20170601; int endDate = 20170603; IDataForward_Code klineDataForward = GetDataForward(code, start, endDate); klineDataForward.OnBar += KlineDataForward_OnBar; list_OnBar.Add(KLinePeriod.KLinePeriod_1Minute + ":" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute)); Console.WriteLine(KLinePeriod.KLinePeriod_1Minute + ":" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute)); while (klineDataForward.Forward()) { } AssertUtils.AssertEqual_List("forward_kline", GetType(), list_OnBar); }
public void TestTickAttachTick() { int start = 20170601; int endDate = 20170602; //string code = "A0401"; //int start = 20040106; //int endDate = 20040106; IDataForward_Code historyDataForward = ForwardDataGetter.GetHistoryDataForward_Code(code, start, endDate, true, true); historyDataForward.AttachOtherData(code2); //historyDataForward.OnBar += HistoryDataForward_OnBar; historyDataForward.OnTick += HistoryDataForward_OnTick; //historyDataForward.OnTick += KlineDataForward_OnTick; while (historyDataForward.Forward()) { } }