Esempio n. 1
0
    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);
    }