protected override bool doJob() { string beginDateString = Utils.FormatDate(this.beginDate); string endDateString = Utils.FormatDate(this.endDate); string args = string.Format("{0} {1} -n 4 -i True", beginDateString, endDateString); Console.WriteLine("开始训练:{0}", args); CMDAgent.RunPythonScript(@"E:\pyfiles\trade_dqn_v2.0\trade_learning.py", args); return(true); }
private void GetDataAndPrediction(List <TradeStateRecord> tradeStateRecords, Dictionary <String, Trade> lastTradeDict) { Console.WriteLine("共有记录{0}条", tradeStateRecords.Count); DQNTradeDBAccess.ClearTempRecords(); Console.WriteLine("开始准备数据 ..."); string dealDateString = Utils.FormatDate(this.dealDate); foreach (TradeStateRecord aStateRecord in tradeStateRecords) { Trade lastTrade = lastTradeDict[aStateRecord.Symbol]; if (lastTrade == null) { continue; } //读取应指数的日线和5分线,证券的日线和分线 string indexSymbol = ""; if (aStateRecord.Symbol.IndexOf("SHSE.") >= 0) { indexSymbol = "SHSE.000001"; } else if (aStateRecord.Symbol.IndexOf("SZSE.3") >= 0) { indexSymbol = "SZSE.399006"; } else { indexSymbol = "SZSE.399001"; } List <Daily> indexDailys = BarFeeder.GetDailys(indexSymbol, Const.IndexDailyPeriod); List <Bar> indexMin5s = BarFeeder.GetBar5s(indexSymbol, Const.IndexMin5Period); //***这里多加了当天日线,便于向前复权,以修正价格 List <Daily> stockDailys = BarFeeder.GetDailys(aStateRecord.Symbol, Const.StockDailyPeriod, true, lastTrade); //日线不足周期数的忽略 if (stockDailys.Count < Const.StockDailyPeriod) { continue; } List <Bar> stockMin5s = BarFeeder.GetBar5s(aStateRecord.Symbol, Const.StockMin5Period); //正规化数据 List <NormalBar> indexNormalDailys = BarUtils.NormalBars(indexDailys); List <NormalBar> indexNormalMin5s = BarUtils.NormalBars(indexMin5s); List <NormalBar> stockNormalDailys = BarUtils.NormalBars(stockDailys); List <NormalBar> stockNormalMin5s = BarUtils.NormalBars(stockMin5s); DQNTradeDBAccess.SaveTempRecord(dealDateString, aStateRecord.Symbol, aStateRecord.HoldingPeriod, BarUtils.BarsToBsonArray(indexNormalDailys), BarUtils.BarsToBsonArray(indexNormalMin5s), BarUtils.BarsToBsonArray(stockNormalDailys), BarUtils.BarsToBsonArray(stockNormalMin5s)); } Console.WriteLine("预测中 ..."); //调用神经网络进行盈利预测 CMDAgent.RunPythonScript(@"E:\pyfiles\trade_dqn_v2.0\trade_prediction.py", dealDateString); }