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)
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')