quartz学习笔记7:trading

简介: quartz学习笔记7:trading

#核心代码

import tushare as ts
import time
#===============================================================================
# 沪深股票模拟仿真交易系统
#===============================================================================
rate=0.00025
tax=0.001 
class tranding:
    def __init__(self):
        pass
    def get_today_all(self):
        #--获取全市场行情快照
        res=ts.get_today_all()
        return res
    def order_buy(self,symbols):
        df=ts.get_realtime_quotes(symbols)
        return df.iloc[0]
#------------------------------------------------------------------------------ 行情订阅函数(不太稳定)
    def subscuiber(self,symbols):
        df=ts.get_realtime_quotes(symbols)
        print df[['code','name','price','bid','ask','volume','time']]
        str_time='%s %s'%(df.iloc[0]['date'],df.iloc[0]['time'])
        unix_time=time.mktime(time.strptime(str_time,"%Y-%m-%d %H:%M:%S")) #把时间转换为时间戳
        now_time=time.time()
        next_time=unix_time+3
        sleep_time=now_time-next_time
        time.sleep(sleep_time)
        self.subscuiber(symbols)
    def buy_market_price(self,ticker,exchangeCD,hand_num):#此模块需要优化
        ''' symbol 为 secID  XSHG  为沪市股票    XSHE 为深市股票'''
        df=ts.get_realtime_quotes(ticker)
        num_list=[int(df.iloc[0]['a1_v']),int(df.iloc[0]['a2_v']),int(df.iloc[0]['a3_v']),int(df.iloc[0]['a4_v']),int(df.iloc[0]['a5_v'])]
        price_list=[float(df.iloc[0]['a1_p']),float(df.iloc[0]['a2_p']),float(df.iloc[0]['a3_p']),float(df.iloc[0]['a4_p']),float(df.iloc[0]['a5_p'])]
        #exchang_list:成交详细  total_money:成交总额金额 未加手续费
        exchang_list,total_money,exchange_num=self.num_list_ad(num_list,price_list,hand_num)
        cost_money=self.cost(total_money,hand_num*100,exchangeCD,'buy')
        toal_need_money=total_money+cost_money
        return toal_need_money,exchange_num,exchang_list
    def sell_market_price(self,ticker,exchangeCD,hand_num): 
        pass
    def cost(self,total_money,stock_num,exchangeCD,behavior):
        if behavior=='buy':
            if exchangeCD=='XSHG':
                transfer_cost=stock_num*0.001
                if transfer_cost>1:
                    pass
                else:
                    transfer_cost=1
                rate_cost=total_money*rate
                if rate_cost>5:
                    pass
                else:
                    rate_cost=5
                total_cost=transfer_cost+rate_cost
            elif exchangeCD=='XSHE':
                rate_cost=total_money*rate
                if rate_cost>5:
                    pass
                else:
                    rate_cost=5
                total_cost=rate_cost
        if behavior=='sell':
            if exchangeCD=='XSHG':
                transfer_cost=stock_num*0.001
                if transfer_cost>1:
                    pass
                else:
                    transfer_cost=1
                rate_cost=total_money*rate
                if rate_cost>5:
                    pass
                else:
                    rate_cost=5
                tax_cost=total_money*tax
                total_cost=transfer_cost+rate_cost+tax_cost
            elif  exchangeCD=='XSHE':
                rate_cost=total_money*rate
                if rate_cost>5:
                    pass
                else:
                    rate_cost=5
                tax_cost=total_money*tax
                total_cost=rate_cost+tax_cost
        return total_cost
    def num_list_ad(self,num_list,price_list,num):#累加计算num
        i=0
        num_l=num_list[i]
        exchange_list=[]
        money=0.0
        while num>num_l:
            i+=1
            if i>4:
                num=num_l
            else:
                num_l+=num_list[i]
        #print i,num,num_l
        if i==5:
            i=4        
        step_list=range(i+1)
        #print step_list
        for x in step_list:
            if x==step_list[-1]:
                exchange_list.append([num_list[x]-num_l+num,price_list[x]])
                money+=(num_list[x]-num_l+num)*price_list[x]*100
            else:
                exchange_list.append([num_list[x],price_list[x]])
                money+=num_list[x]*price_list[x]*100
        return exchange_list,money,num
if __name__ == '__main__':
    mock=tranding()
    print mock.buy_market_price('600006','XSHG',50000)
    #print mock.get_today_all()
目录
相关文章
|
6月前
|
SQL Java 关系型数据库
quartz
quartz
39 0
|
9月前
|
Java 调度
quartz(一)基础篇
quartz(一)基础篇
42 0
|
12月前
|
API
Quartz-DateBuilder解读
Quartz-DateBuilder解读
69 0
|
12月前
Quartz-SimpleTrigger解读
Quartz-SimpleTrigger解读
52 0
|
12月前
|
设计模式 调度
Quartz-JobListener解读
Quartz-JobListener解读
68 0
|
12月前
|
调度
Quartz-TriggerListener解读
Quartz-TriggerListener解读
32 0
|
存储 安全 Java
Quartz 是什么?一文带你入坑
本文主要介绍 Quartz 的使用
283 0
|
Java 应用服务中间件
Quartz - 基础篇(下)
Quartz - 基础篇(下)
136 0
Quartz - 基础篇(下)
|
开发框架 Java 调度
Quartz的初认识(一)
Quartz的初认识(一)
197 0
Quartz的初认识(一)