Exemplo n.º 1
0
def getTSdate(sdate, edate):
    '''获取天软日期'''

    d3 = ts.RemoteCallFunc('MarketTradeDayQk', [sdate, edate], {})
    if d3[0] == 0:
        return d3[1]
    else:
        print(d3[2])
Exemplo n.º 2
0
def CallTSFunc(FuncName, FuncParam=[], SysParam={}, outtype='list'):

    data = tp.RemoteCallFunc(FuncName, FuncParam, SysParam)
    a = tsbytestostr(data[1])
    if outtype == 'list':
        return a
    elif outtype == 'df':
        df = pd.DataFrame(a)
        return df
Exemplo n.º 3
0
def getTSdata(sdate, stockID, cy):
    '''通过天软获取高频数据,只提取某一日的数据'''

    d2 = ts.RemoteCallFunc('MyGetTimeSeries', [sdate, sdate, stockID, cy], {})

    if d2[0] == 0:
        return d2[1]
    else:
        print(d2[2])
Exemplo n.º 4
0
def getTSdata_day(sdate, edate, stockID, cy):
    '''通过天软获取日线'''

    d2 = ts.RemoteCallFunc('MyGetTimeSeries', [sdate, edate, stockID, cy], {})

    if d2[0] == 0:
        return d2[1]
    else:
        print(d2[2])
Exemplo n.º 5
0
def autoOrderZT():
    now = datetime.datetime.now()
    #print(now)
    hour = int(now.strftime("%H%M"))
    if hour > 1500 or hour < 930:
        print('autoOrder not running time :' + str(hour))
        return
    dayOfWeek = int(now.strftime("%w"))
    if dayOfWeek == 0 or dayOfWeek == 6:
        print('autoOrder not running day :' + str(dayOfWeek))
        return
    date = now.strftime("%Y-%m-%d")

    stockInfo = TSLPy3.RemoteCallFunc("base_data_sheet", [20], {})
    data = stockInfo[1]
    dataLen = len(data) - 3
    orderLogNewList = []
    url = "http://47.100.100.244:3000/stock/publish?message="
    message = ""
    for i in range(3, dataLen):
        try:
            #print(data[i][3].decode('gbk'))
            stock = data[i][3].decode('gbk').split(',')
            if stock[1].find('ST') != -1:
                continue
            orderLog = OrderLog.objects.filter(datetime__contains=date,
                                               stockId=stock[2])
            if orderLog:
                continue
            if message == '':
                message = "b," + stock[2][2:] + ',' + stock[3] + ',100'
            else:
                message = message + ";b," + stock[2][2:] + ',' + stock[
                    3] + ',100'
            orderLogNew = OrderLog(datetime=datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S.%f"),
                                   stockId=stock[2],
                                   stockName=stock[1],
                                   orderPrice=float(stock[3]),
                                   orderQuantity=100,
                                   request="b," + stock[2][2:] + ',' +
                                   stock[3] + ',100')
            orderLogNewList.append(orderLogNew)
        except KeyError:
            break
    print(url + message)
    if message != '':
        req = Request(url + message)
        response = urlopen(req)
        responseData = response.read().decode('utf-8')
        if responseData.find("发布消息成功") != -1:
            orderLogNewList[0].response = responseData
            OrderLog.objects.bulk_create(orderLogNewList)
    insertTaskLog(now.strftime("%Y-%m-%d %H:%M:%S.%f"),
                  datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"),
                  'autoOrder', 'success', '', 0)
Exemplo n.º 6
0
def getIncreasePercentageFromTY(stockId):
    returnData = TSLPy3.RemoteCallFunc("stock_realtime_data", [stockId], {})
    if returnData[0] == 0:
        stock = returnData[1]
        if stock[b'close'] == 0 or stock[b'high'] == 0:
            return ''
        else:
            return getPercentage(stock[b'increaseRate'])
    else:
        return ''
Exemplo n.º 7
0
def tsl_fun(start_date: datetime.datetime, end_date:datetime.datetime):
    start_date_str = start_date.strftime("%Y-%m-%d")
    end_date_str = end_date.strftime("%Y-%m-%d")
    # data = ts.RemoteExecute("return 'return a string';",{}) #执行一条语句
    data = ts.RemoteCallFunc("big", [start_date_str, end_date_str, "SH000050"], {})
    df = pd.DataFrame(data[1])
    df.columns = df.columns.map(lambda x: x.decode("gbk"))
    for col, dtype in df.dtypes.iteritems():
        if dtype.name == "object":
            df[col] = df[col].str.decode("gbk")
Exemplo n.º 8
0
def get_data(date, stocks):
    '''
	
	:param stocks: 可以是个list
	:param date: 字符串形式:2019-01-01
	:return:
	'''
    d = ts.RemoteCallFunc("GetFutureTick", [date, stocks], {})
    print(tsbytestostr(d[1]))

    return tsbytestostr(d[1])
Exemplo n.º 9
0
def get_appoint_contract(date, code):
    '''
	
	:param date:
	:param stocks:
	:return: 指定日的指定标的物期权合约
	'''
    d = ts.RemoteCallFunc("Get_Appoint_Contract", [date, code], {})
    #print (tsbytestostr (d [1]))

    return (tsbytestostr(d[1]))
Exemplo n.º 10
0
def getTSdata_optionchain_pub(stockID, endt):
    '''通过天软公共函数,获取期权基础信息'''

    d4 = ts.RemoteCallFunc('OP_GetOptionChain', [stockID, endt], {})

    if d4[0] == 0:
        # #data[0]==0 表示成功,data[1] 运行结果,
        # Data[2] 如果错误的错误信息
        return d4[1]
    else:
        print(d4[2])
Exemplo n.º 11
0
def getTSdata_MyGetTimeSeriesLOHC(sdate, edate, stockID, cy):
    '''获取某只股票低开高收数据'''

    d2 = ts.RemoteCallFunc('MyGetTimeSeriesLOHC', [sdate, edate, stockID, cy],
                           {})

    if d2[0] == 0:

        # #data[0]==0 表示成功,data[1] 运行结果,
        # Data[2] 如果错误的错误信息

        return d2[1]
    else:
        print(d2[2])
Exemplo n.º 12
0
def getDividendInfo(start_date, end_date):
    """
    从天软客户端提取股票分红信息
    """
    start_date = int(start_date)
    end_date = int(end_date)
    data = tsl.RemoteCallFunc('getBKDividendInfo', ('A股', end_date, start_date, end_date), {})
    divd_table = parseByStock(data, date_parse=['截止日','股权登记日','除权除息日','预案公布日'])
    divd_table.rename(columns={
        '截止日': 'date', '股权登记日': 'record_date', '除权除息日':'ex_divd_date', '预案公布日': 'ann_date',
        '红利比': 'cash_per_share', '实得比': 'real_cash_per_share', '送股比': 'total_share', '红股比': 'bonus_share',
        '转增比': 'inc_share'}, inplace=True)
    divd_table = divd_table.reset_index().set_index(['date', 'IDs']).sort_index()
    h5.save_factor(divd_table, '/stock_financial_data/dividends/')
Exemplo n.º 13
0
    def start(self):
        """开始归因"""
        trades = self.trades.to_dict('record')
        portfolio = self.portfolio.to_dict('record')
        asset = self.asset[['截止日', '资产净值', '现金市值']].to_dict('record')

        start = int(self.start_date.strftime("%Y%m%d"))
        end = int(self.end_date.strftime("%Y%m%d"))

        print("正在归因...")
        res = tsl.RemoteCallFunc(
            "BrinsonAttr",
            [start, end, self.benchmark, trades, portfolio, asset], {})
        res_df = convert_df(res)
        print("归因结束...")
        return res_df
Exemplo n.º 14
0
def synToTysoftHandler():
    '''
    重构成独立的函数,以便可以单独调用
    '''
    start = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    sectionFileName = StockConfig.TSL_PATH + r'\section.xls'
    stockFileName = StockConfig.TSL_PATH + r'\stock.xls'
    writeSectionsToExcelFile(sectionFileName)
    writeStockSectionsToExcelFile(stockFileName)
    synResult = TSLPy3.RemoteCallFunc("synData",
                                      [sectionFileName, stockFileName], {})
    print(synResult)
    end = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    if synResult[0] == 0:
        insertTaskLog(start, end, 'synToTysoftHandler', 'success', '同步成功', 2)
        return '同步成功'
    else:
        insertTaskLog(start, end, 'synToTysoftHandler', 'failed',
                      synResult[2].decode('gbk'), 2)
        return synResult[2].decode('gbk')
Exemplo n.º 15
0
def getTS_optClose(stockID, endt):
    '''获取收盘价数据,把代码获取放在天软函数中进行
    能在天软中的,尽量在天软中完成

       ret2:=OP_GetOptionChain(StockID,endt) ;
       //获取期权基础信息

       //选中数组某列
       ret:=select['StockID'] from ret2 end  ;

       天软这一段很重要
    '''

    d5 = ts.RemoteCallFunc('getOptionPriceDayArray', [stockID, endt], {})

    if d5[0] == 0:
        # #data[0]==0 表示成功,data[1] 运行结果,
        # Data[2] 如果错误的错误信息
        return d5[1]
    else:
        print(d5[2])
Exemplo n.º 16
0
def initTradeDayFlag():
    startDayStr = '2018-01-01'
    day = datetime.datetime.strptime(startDayStr, "%Y-%m-%d")
    result = TSLPy3.DefaultConnectAndLogin('jyu')
    print(result)
    #if result[0] == 0:
    while day.strftime("%Y-%m-%d") != '2018-06-20':
        tradeDayData = TSLPy3.RemoteCallFunc(
            "isTradeDayDS",
            [int(day.strftime("%Y%m%d")),
             int(day.strftime("%Y%m%d"))], {})
        if tradeDayData[1]:
            print(day.strftime("%Y-%m-%d") + ': Y')
            StockTradeDay.objects.create(date=day.strftime("%Y-%m-%d"),
                                         isTradeDay='Y')
        else:
            print(day.strftime("%Y-%m-%d") + ': N')
            StockTradeDay.objects.create(date=day.strftime("%Y-%m-%d"),
                                         isTradeDay='N')
        day = day + datetime.timedelta(days=1)
    TSLPy3.Disconnect()
Exemplo n.º 17
0
def get_code():
    r = ts.RemoteCallFunc('Option_Contract', {}, {})
    print(r[1])

    return tsbytestostr(r[1])
Exemplo n.º 18
0
def m_options_daily_market(date):
    d = ts.RemoteCallFunc("m_options_daily_market", [date], {})
    return (tsbytestostr(d[1]))
Exemplo n.º 19
0
def get_date_option(code, date):
    d = ts.RemoteCallFunc("Option_byDateFuture", [code, date], {})
    return (tsbytestostr(d[1]))
Exemplo n.º 20
0
def autoOrder():
    now = datetime.datetime.now()
    hour = int(now.strftime("%H%M"))
    #if hour > 1500 or hour < 930:
    #    print('autoOrder not running time :' + str(hour))
    #    return
    #dayOfWeek = int(now.strftime("%w"))
    #if dayOfWeek == 0 or dayOfWeek == 6:
    #    print('autoOrder not running day :' + str(dayOfWeek))
    #    return
    date = now.strftime("%Y-%m-%d")

    orderRuleList = OrderRule.objects.using('stockdb').filter(
        isvalid="1", expiretime__gt=date + ' 23:59:59')
    orderLogNewList = []
    url = "http://47.100.100.244:3000/stock/publish?message="
    message = ""
    for orderRule in orderRuleList:
        try:
            #判断当天该股票是否已经自动下单
            orderLog = OrderLog.objects.filter(datetime__contains=date,
                                               stockId=orderRule.stockId)
            print(orderRule.stockId)
            if orderLog:
                print('already order')
                continue
            #判断因子是否达标
            isMatch = matchRule(orderRule, date)
            print(isMatch)
            if not isMatch:
                continue
            #获取实时价格,获取失败时不发送信息
            orderPrice = orderRule.orderPrice
            if orderPrice == 0.00:
                returnData = TSLPy3.RemoteCallFunc("stock_realtime_data",
                                                   [orderRule.stockId], {})
                if returnData[0] == 0:
                    orderPrice = returnData[1][b'close']
                else:
                    print(returnData[2].decode('gbk'))
                    continue
            #拼装消息字符串
            stockMessage = "b," + orderRule.stockId[2:] + ',' + str(
                orderPrice) + ',' + str(orderRule.orderQuantity)
            if message == '':
                message = stockMessage
            else:
                message = message + ";" + stockMessage
            #初始化下单日志对象
            orderLogNew = OrderLog(datetime=datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S.%f"),
                                   stockId=orderRule.stockId,
                                   stockName=orderRule.stockName,
                                   orderPrice=orderPrice,
                                   orderQuantity=orderRule.orderQuantity,
                                   request=stockMessage,
                                   response=str(orderRule.id))
            orderLogNewList.append(orderLogNew)
        except KeyError:
            break
    print(url + message)
    #消息不为空时发送消息
    if message != '':
        req = Request(url + message)
        response = urlopen(req)
        responseData = response.read().decode('utf-8')
        if responseData.find("发布消息成功") != -1:
            #发送成功将规则设置为失效,并更新日志的返回信息字段
            for log in orderLogNewList:
                rule = OrderRule.objects.using('stockdb').get(
                    id=int(log.response))
                rule.isvalid = '0'
                rule.ordertime = log.datetime
                rule.save()
                log.response = responseData
            OrderLog.objects.bulk_create(orderLogNewList)
    insertTaskLog(now.strftime("%Y-%m-%d %H:%M:%S.%f"),
                  datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"),
                  'autoOrderRule', 'success', '', 0)