Example #1
0
 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()
Example #2
0
    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()
Example #3
0
 def __init__(self, live=None):
     if live == None:
         self.delegate = live_policy.Live()
     else:
         self.delegate = live
Example #4
0
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)
Example #8
0
    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', '')
Example #9
0
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))