def Test(): #StartDebug() p = LivePolicySwitch() #p.Regist(qjjy.Strategy(live_policy.Live())) p.Regist(boll_pramid.Strategy_Boll_Pre(live_policy.Live())) #agl.LOG("LivePolicyRun") p.Run()
def __init__(self, data, is_backtesting=False, mode=0): """data: 运行时接口 is_backtesting:bool 是否是回测 mode: 回测使用, 允许模式, tick或hisdat """ self.pl = None #for publish self.data = data self.is_backtesting = is_backtesting self.mode = mode if 0: self.data = live_policy.Live() #使用系统初始化的交易账户, 不使用该句将不能调用交易账号 self._setAccount(live_policy.enum.account_tc, 'tdx', '') self._recordClassMember()
def __init__(self, live=None): if live == None: self.delegate = live_policy.Live() else: self.delegate = live
class Strategy: def __init__(self, data, is_backtesting=False, mode=0): """data: 运行时接口 is_backtesting:bool 是否是回测 mode: 回测使用, 允许模式, tick或hisdat """ self.pl = None #for publish self.data = data self.is_backtesting = is_backtesting self.mode = mode if 0: self.data = live_policy.Live() #使用系统初始化的交易账户, 不使用该句将不能调用交易账号 self._setAccount(live_policy.enum.account_tc, 'tdx', '') self._recordClassMember() def _setAccount(self, account_type, user, pwd): #注意, 现在只能支持一个账户 if self.data != None: self.data.createAccount(account_type, user, pwd) if 0: get = live_policy.Live() def get(self): return self.data def _log(self, s): if self.is_backtesting: return #s = str(s) if self.data != None: self.data.log(s) def getCurTime(self): """得到当前时间 return: str""" if self.is_backtesting: return self.data.tick return agl.getCurTime() def getParams(self): """输出主要参数, 由框架打印出来""" self._recordClassMember() return self.class_member def setParams(self, *args, **kwargs): """设置策略参数, 由派生类实现""" pass def _recordClassMember(self): """记录类成员""" #纪录类成员 class_member = {} if not hasattr(self, 'class_member'): self.class_member = {} for i, j in vars(self).items(): if i not in self.class_member.keys(): class_member[str(i)] = j self.class_member = class_member def Run(self): code = self.data.get_code() #agl.LOG(code) #print code param = set_params(code) if len(param) == 0: return self.data.log(code) #agl.LOG(code) #s_trace = traceback.extract_stack() #s_trace = agl.TraceToStr(s_trace) #agl.LOG(s_trace) #self.data.log("start run qjjy strategy.") df_hisdat = pd_help.Df(self.data.get_hisdat(code)) df_fenshi = pd_help.Df(self.data.get_fenshi(code)) #显示指数 try: stock_index_codes = ['999999', '399005'] def calcDec(df, df2): return float(df.iloc[-1]['p']) - df2.iloc[-2]['c'] display = [] for stock_index_code in stock_index_codes: df = self.data.get_fenshi(stock_index_code) df2 = self.data.get_hisdat(stock_index_code) display.append(df.iloc[-1]['p']) display.append(calcDec(df, df2)) self._log('shanghai: %.2f(%.2f), %.2f(%.2f)' % tuple(display)) except Exception as e: self._log(str(e)) #agl.LOG(code+str(len(df_fenshi.df))) #print df_hisdat.getLastDate() #print df_fenshi.getLastTime() if len(df_fenshi.df) == 0: self.data.log(code + u"停牌") return price = df_fenshi.getLastPrice() #为了测试分时获取的数据 #if code == "002724": #pl = Publish() #title = str(code) + " " + str(price) #ui.DrawTs(pl, df_fenshi.getCloses(), title=title) #self.data.log("test") #self.data.log(str( price)) #return self._ExecPolicy(param, price) self._log("qjjy strategy") def _ExecPolicy(self, param, price): account = Qjjy_accout(param, self.data, self.is_backtesting) try: account.buy(price) account.sell(price) except Exception as e: self._log(str(e))
def test_Speak(self): """测试语音, 去控制面板里的语音选择默认语音""" live_dll = live_policy.Live() live_dll.speak2('测试语音, 去控制面板里的语音选择默认语音')
def _testLoadDll(self): """测试加载python_invoke.dll, 测试里面的speak函数""" live_dll = live_policy.Live() live_dll.speak2("蓝图")
def Speak(self, s): if self.live_dll is None: self.live_dll = live_policy.Live() self.live_dll.speak2(s)
def __init__(self, data, is_backtesting=False): self.data = data self.is_backtesting = is_backtesting if 0:self.data = live_policy.Live() #使用系统初始化的交易账户, 不使用该句将不能调用交易账号 self._setAccount(live_policy.enum.account_tc,'tdx', '')
class Strategy: def __init__(self, data, is_backtesting=False): self.data = data self.is_backtesting = is_backtesting if 0:self.data = live_policy.Live() #使用系统初始化的交易账户, 不使用该句将不能调用交易账号 self._setAccount(live_policy.enum.account_tc,'tdx', '') def _setAccount(self, account_type, user, pwd): #注意, 现在只能支持一个账户 if self.data != None: self.data.createAccount(account_type, user, pwd) if 0:get = live_policy.Live() def get(self): return self.data def _log(self, s): if self.is_backtesting: return #s = str(s) if self.data != None: self.data.log(s) def getCurTime(self): """得到当前时间 return: str""" if self.is_backtesting: return self.data.tick return agl.getCurTime() def Run(self): code = self.data.get_code() #agl.LOG(code) #print code param = set_params(code) if len(param) == 0: return self.data.log(code) #agl.LOG(code) #s_trace = traceback.extract_stack() #s_trace = agl.TraceToStr(s_trace) #agl.LOG(s_trace) #self.data.log("start run qjjy strategy.") df_hisdat = pd_help.Df(self.data.get_hisdat(code)) df_fenshi = pd_help.Df(self.data.get_fenshi(code)) #显示指数 try: stock_index_codes = ['999999', '399005'] def calcDec(df, df2): return float(df.iloc[-1]['p']) - df2.iloc[-2]['c'] display = [] for stock_index_code in stock_index_codes: df = self.data.get_fenshi(stock_index_code) df2 = self.data.get_hisdat(stock_index_code) display.append(df.iloc[-1]['p']) display.append(calcDec(df, df2) ) self._log('shanghai: %.2f(%.2f), %.2f(%.2f)'%tuple(display) ) except Exception as e: self._log(str(e)) #agl.LOG(code+str(len(df_fenshi.df))) #print df_hisdat.getLastDate() #print df_fenshi.getLastTime() if len(df_fenshi.df) == 0: self.data.log(code+u"停牌") return price = df_fenshi.getLastPrice() #为了测试分时获取的数据 #if code == "002724": #pl = Publish() #title = str(code) + " " + str(price) #ui.DrawTs(pl, df_fenshi.getCloses(), title=title) #self.data.log("test") #self.data.log(str( price)) #return self._ExecPolicy(param, price) self._log("qjjy strategy") def _ExecPolicy(self, param, price): account = Qjjy_accout(param, self.data, self.is_backtesting) try: account.buy(price) account.sell(price) except Exception as e: self._log(str(e))