def ProcessStock(self):
        #df_stockload = web.DataReader("600797.SS", "yahoo", datetime.datetime(2017,1,1), datetime.date.today())
        df_stockload = GetStockDatPro(self.stockCode_Val, self.stockSdate_Val,
                                      self.stockEdate_Val)
        """ 绘制移动平均线图 """
        #self.am.plot(self.numic[0:self.butNum],self.close[0:self.butNum],'#0f0ff0',linewidth=1.0)

        dispCont_List = []

        examp_trade = Excave_Indic_Base()
        if self.IndicatInput_Val == u"金叉/死叉":
            dispCont_pd, dispCont_List = examp_trade.plot_Aver_Cross(
                df_stockload)
            self.DispPanel.draw_avercross(df_stockload, dispCont_pd)
        elif self.IndicatInput_Val == u"跳空缺口":
            dispCont_pd, dispCont_List = examp_trade.plot_Jump_Thrd(
                df_stockload)
            self.DispPanel.draw_jumpgap(df_stockload, dispCont_pd)
        elif self.IndicatInput_Val == u"N日突破":
            dispCont_pd, dispCont_List = examp_trade.plot_Ndays_Break(
                df_stockload)
            self.DispPanel.draw_ndaysbreak(df_stockload, dispCont_pd)
        else:
            dispCont_List = dispCont_List

        self.TextAInput.SetValue(u"指标提示信息如下:" + '\n')
        for i in dispCont_List:
            self.TextAInput.AppendText(i)

        numic = np.arange(0, len(df_stockload.index))
        butNum = len(df_stockload.index)
        self.DispPanel.xylabel_tick_lim(self.stockName_Val, df_stockload.index)
        self.DispPanel.draw_subgraph(df_stockload, numic)
    def ProcessStock(self):
        df_stockload = GetStockDatPro(self.stockCode_Val, self.stockSdate_Val, self.stockEdate_Val)

        dispCont_List = []

        examp_trade = Excave_Indic_Base()
        if self.IndicatInput_Val == u"金叉\死叉":
            dispCont_pd, dispCont_List = examp_trade.plot_Aver_Cross(df_stockload)
            self.DispPanel.draw_avercross(df_stockload, dispCont_pd)
        elif self.IndicatInput_Val == u'跳空缺口':
            dispCont_pd, dispCont_List = examp_trade.plot_Jump_Thrd(df_stockload)
            self.DispPanel.draw_jumpgap(df_stockload, dispCont_pd)
        elif self.IndicatInput_Val == u'N日突破':
            dispCont_pd, dispCont_List = examp_trade.plot_Ndays_Break(df_stockload)
            self.DispPanel.draw_ndaysbreak(df_stockload)
        else:
            dispCont_List = dispCont_List

        self.TextAInput.SetValue(u'指标提示信息如下:' + '\n')
        for i in dispCont_List:
            self.TextAInput.AppendText(i)

        numic = np.arange(0, len(df_stockload.index))
        butNum = len(df_stockload.index)
        self.DispPanel.xylabel_tick_lim(self.stockName_Val, df_stockload.index)
        self.DispPanel.draw_subgraph(df_stockload, numic)
 def PstockpEvent(self, event):
     dispCont_List = []
     """ 选股策略执行 """
     examp_trade = FactorPickStockAng()
     for index, stockName in enumerate(self.StNameCodedict.keys()):
         print("stockName", stockName, self.StNameCodedict[stockName])
         df_stockload = GetStockDatPro(self.StNameCodedict[stockName],
                                       self.stockSdate_Val,
                                       self.stockEdate_Val)
         df_stockload.fillna(method='bfill', inplace=True)  #后一个数据填充NAN1
         dispCont_List.append(stockName + '\n' +
                              examp_trade.fit_pick(df_stockload.Close) +
                              '\n')
     print(dispCont_List)
     """ 选股策略执行 """
     """ 自定义提示框 """
     myPickStock = UserDialog(self, dispCont_List)
     if myPickStock.ShowModal() == wx.ID_OK:
         pass
     else:
         pass
     """ 自定义提示框 """
    def ProcessLoop(self):

        df_stockload = GetStockDatPro(self.stockCode_Val, self.stockSdate_Val,
                                      self.stockEdate_Val)
        dispCont_List = []
        if self.pickstrate_Val == u"双趋势融合":
            #多趋势融合策略执行 """
            examp_trade = QuantPickTimeSys(df_stockload)
            dispCont_List = examp_trade.run_factor_plot(
                self.BackPanel.trade, self.BackPanel.total,
                self.BackPanel.profit)
        else:
            #执行其他策略
            pass

        self.TextAInput.SetValue(u"策略提示信息如下:" + '\n')
        for i in dispCont_List:
            self.TextAInput.AppendText(i)
        self.BackPanel.xylabel_tick_lim(self.stockName_Val)
Example #5
0
from StockDataMod import GetStockDatPro
# from IndicatStrateMod import QuantPickTimeSys, FactorBuyNdayBreak, FactorBuyAverBreak, FactorSellNdayBreak, FactorSellAverBreak, FactorSellAtrStop
from AtrStrateMod import QuantPickTimeSys, FactorBuyNdayBreak, FactorBuyAverBreak, FactorSellNdayBreak, FactorSellAverBreak, FactorSellAtrStop

code = "000004.SZ"
start = "2018-04-17"
end = "2019-04-17"

df_stockload = GetStockDatPro(code, start, end)

buy_factors = [{
    'xd': 20,
    'class': FactorBuyNdayBreak
}, {
    'xd': 30,
    'class': FactorBuyAverBreak
}]

sell_factors = [{
    'xd': 5,
    'class': FactorSellNdayBreak
}, {
    'xd': 30,
    'class': FactorSellAverBreak
}, {
    'stop_loss_n': 0.8,
    'stop_win_n': 2,
    'class': FactorSellAtrStop
}]
# 获取策略结果
print('data get')