Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERROR: yhtrader.pyc: Can not fetch balance info #31

Closed
hhhcj opened this issue Mar 23, 2016 · 3 comments
Closed

ERROR: yhtrader.pyc: Can not fetch balance info #31

hhhcj opened this issue Mar 23, 2016 · 3 comments

Comments

@hhhcj
Copy link

hhhcj commented Mar 23, 2016

#-*- coding: utf-8 -*-

import easytrader

if __name__ == '__main__':
    user=easytrader.use('yh')
    user.prepare('yh.json')

执行到yhtrader.login的exchangeinfo = list((self.do(dict(self.config['account4stock']))))
进一步,webtrader.do的format_json_data = self.format_response_data(response_data)
时抛出这个错误ERROR: yhtrader.pyc: Can not fetch balance info,请问是什么原因呢。
环境win8 x64, python2.7,谢谢。。

[2016-03-23 14:32:54.621000] DEBUG: yhtrader.pyc: login params: {'……
[2016-03-23 14:32:54.849000] DEBUG: yhtrader.pyc: login response:……

[2016-03-23 14:34:01.540000] ERROR: yhtrader.pyc: Can not fetch balance info

如果继续运行就是这样了:

File "C:\Users\ccw\Desktop\arbitrage\stock.py", line 7, in <module>
  user.prepare('yh.json')
File "c:\Users\ccw\AppData\Local\Enthought\Canopy\User\Lib\site-packages\easytrader\webtrader.py", line 54, in prepare
  self.autologin()
File "c:\Users\ccw\AppData\Local\Enthought\Canopy\User\Lib\site-packages\easytrader\webtrader.py", line 58, in autologin
  is_login_ok = self.login()
File "c:\Users\ccw\AppData\Local\Enthought\Canopy\User\Lib\site-packages\easytrader\yhtrader.py", line 59, in login
  if exchangeinfo[i][TRADE_MARKET]['浜ゆ槗甯傚満'] == '娣盇':

TypeError: string indices must be integers

exchangeinfo的值是
[u'股东代码', u'交易市场', u'股东姓名', u'客户代码', u'设为主股东']

@shidenggui
Copy link
Owner

python 2.7 不支持银河,因为银河用到了 dict 的中文 key

@hhhcj
Copy link
Author

hhhcj commented Mar 23, 2016

@shidenggui 我又看了下,这个错误跟中文key无关,而是凡是有4个股东账户,都登不上银河的hytrader。Can not fetch balance info出自yhtrader.format_response_data方法

        columnlen = len(search_result_name)
        if columnlen == 0 or len(search_result_content) % columnlen != 0:
            log.error("Can not fetch balance info")
            retdata = json.dumps(search_result_name)
            retjsonobj = json.loads(retdata)
        else:
            rowlen = len(search_result_content) // columnlen
            retdata = list()
            for i in range(rowlen):
                retrowdata = list()
                for j in range(columnlen):
                    retdict = dict()
                    retdict[search_result_name[j]] = search_result_content[i * columnlen + j]
                    retrowdata.append(retdict)
                retdata.append(retrowdata)
            retlist = json.dumps(retdata)
            retjsonobj = json.loads(retlist)

有四个账户时,len(search_result_content) 并不等于20,而是18,“设为主股东”这一列只有2个值,还有两个非主股东是空值,所以进不了else

@hhhcj
Copy link
Author

hhhcj commented Mar 23, 2016

@shidenggui dict 的中文 key的问题,似乎在key前加u即可,YHTrader.login()

        if len(exchangeinfo) >= 2:
            for i in range(2):
                if exchangeinfo[i][TRADE_MARKET][u'交易市场'] == '深A':
                    self.exchange_stock_account['0'] = exchangeinfo[i][HOLDER_NAME][u'股东代码'][0:10]
                else:
                    self.exchange_stock_account['1'] = exchangeinfo[i][HOLDER_NAME][u'股东代码'][0:10]
        return login_status

目前这两问题fix之后,继续报错
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
然后程序中止

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants