init
This commit is contained in:
commit
5f44063755
|
|
@ -0,0 +1,40 @@
|
|||
# pyTSLPy
|
||||
|
||||
用pyTSL模拟TSLPy。
|
||||
|
||||
|
||||
|
||||
## 范例
|
||||
|
||||
|
||||
|
||||
```python
|
||||
import pyTSLPy as ts
|
||||
|
||||
ts.SetConnectConfig('tslclient.ini')
|
||||
dl = ts.DefaultConnectAndLogin('test')
|
||||
if dl[0] == 0:
|
||||
print("登陆成功")
|
||||
data = ts.RemoteExecute("return 'return a string';", {}) # 执行一条语句
|
||||
print("数据:", data)
|
||||
Close = ts.RemoteExecute("return close();", {"StockID": "SH000001"})
|
||||
print("Close:", Close)
|
||||
ts.Disconnect() # 断开连接
|
||||
else:
|
||||
print(dl[1])
|
||||
```
|
||||
|
||||
```python
|
||||
import pyTSLPy as ts
|
||||
|
||||
ts.ConnectServer('tsl.tinysoft.com.cn', 443)
|
||||
dl = ts.LoginServer('user', 'password')
|
||||
if dl[0] == 0:
|
||||
print("登陆成功")
|
||||
data = ts.RemoteExecute("return 'return a string';", {}) # 执行一条语句
|
||||
print("数据:", data)
|
||||
ts.Disconnect() # 断开连接
|
||||
else:
|
||||
print(dl[1])
|
||||
```
|
||||
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
# coding: utf8
|
||||
import pyTSL
|
||||
import datetime
|
||||
import configparser
|
||||
|
||||
connectConfig = {}
|
||||
defaultConnection = None
|
||||
connectConfigFile = None
|
||||
|
||||
|
||||
def SetConnectConfig(fn):
|
||||
global connectConfigFile
|
||||
connectConfigFile = fn
|
||||
|
||||
|
||||
def connectOptions(alias):
|
||||
global connectConfigFile
|
||||
if connectConfigFile:
|
||||
f = connectConfigFile
|
||||
else:
|
||||
f = 'tslclient.ini'
|
||||
config = configparser.ConfigParser()
|
||||
config.read(f)
|
||||
if alias in config:
|
||||
return config[alias]
|
||||
return {}
|
||||
|
||||
|
||||
def DefaultConnectAndLogin(alias):
|
||||
global defaultConnection
|
||||
opts = connectOptions(alias)
|
||||
if opts:
|
||||
defaultConnection = pyTSL.Client(
|
||||
opts['LoginName']
|
||||
, opts['LoginPass']
|
||||
, opts['Address']
|
||||
, int(opts['Port'])
|
||||
)
|
||||
if defaultConnection.login():
|
||||
return 0, ''
|
||||
else:
|
||||
return defaultConnection.last_error()
|
||||
|
||||
|
||||
def ConnectServer(host, port, proxy={}):
|
||||
global connectConfig
|
||||
connectConfig['host'] = host
|
||||
connectConfig['port'] = port
|
||||
connectConfig['proxy'] = proxy
|
||||
|
||||
|
||||
def LoginServer(user, passwd):
|
||||
global defaultConnection
|
||||
host = connectConfig['host']
|
||||
port = connectConfig['port']
|
||||
defaultConnection = pyTSL.Client(user, passwd, host, port)
|
||||
if defaultConnection.login():
|
||||
return 0, ''
|
||||
else:
|
||||
return defaultConnection.last_error()
|
||||
|
||||
|
||||
def Disconnect():
|
||||
global defaultConnection
|
||||
if defaultConnection:
|
||||
defaultConnection.logout()
|
||||
|
||||
|
||||
def Logined():
|
||||
global defaultConnection
|
||||
if defaultConnection:
|
||||
return defaultConnection.login()
|
||||
return 0
|
||||
|
||||
|
||||
def SetService(service):
|
||||
global defaultConnection
|
||||
if defaultConnection:
|
||||
defaultConnection.default_service(service)
|
||||
|
||||
|
||||
def SetComputeBitsOption(opt):
|
||||
pass
|
||||
|
||||
|
||||
def GetComputeBitsOption():
|
||||
pass
|
||||
|
||||
|
||||
def GetService():
|
||||
global defaultConnection
|
||||
if defaultConnection:
|
||||
defaultConnection.default_service()
|
||||
|
||||
|
||||
def parse_params(params):
|
||||
pp = {}
|
||||
if 'StockID' in params:
|
||||
pp['stock'] = params['StockID']
|
||||
if 'Cycle' in params:
|
||||
pp['cycle'] = params['Cycle']
|
||||
if 'CurrentDate' in params:
|
||||
pp['time'] = params['CurrentDate']
|
||||
if 'bRate' in params:
|
||||
pp['rate'] = params['bRate']
|
||||
if 'RateDay' in params:
|
||||
pp['rateday'] = params['RateDay']
|
||||
if 'nDay' in params:
|
||||
pp['nday'] = params['nDay']
|
||||
if 'Precision' in params:
|
||||
pp['precision'] = params['Precision']
|
||||
if 'ReportMode' in params:
|
||||
pp['reportmode'] = params['ReportMode']
|
||||
if 'EmptyMode' in params:
|
||||
pp['emptymode'] = params['EmptyMode']
|
||||
if 'viewpoint' in params:
|
||||
pp['viewpoint'] = params['viewpoint']
|
||||
return pp
|
||||
|
||||
|
||||
def RemoteExecute(script, params):
|
||||
global defaultConnection
|
||||
if defaultConnection:
|
||||
pp = parse_params(params)
|
||||
r = defaultConnection.exec(script, **pp)
|
||||
return r.error(), r.value()
|
||||
return -1, '连接错误'
|
||||
|
||||
|
||||
def RemoteCallFunc(func, args, params):
|
||||
global defaultConnection
|
||||
if defaultConnection:
|
||||
pp = parse_params(params)
|
||||
r = defaultConnection.clas(func, *args, **pp)
|
||||
return r.error(), r.value()
|
||||
return -1, '连接错误'
|
||||
|
||||
|
||||
def SetSysParam():
|
||||
assert 0
|
||||
|
||||
|
||||
def GetSysParam():
|
||||
assert 0
|
||||
|
||||
|
||||
def EncodeDate(y, m, d):
|
||||
return pyTSL.DatetimeToDouble(datetime.datetime(y, m, d))
|
||||
|
||||
|
||||
def EncodeTime(h, m, s, ss):
|
||||
return h / 24.0 + m / 24.0 / 60.0 + s / 24.0 / 3600.0 + ss / 24.0 / 3600000.0
|
||||
|
||||
|
||||
def EncodeDateTime(Y, M, D, h, m, s, ss):
|
||||
return pyTSL.DatetimeToDouble(datetime.datetime(Y, M, D, h, m, s, ss * 1000))
|
||||
|
||||
|
||||
def DecodeDate(dt):
|
||||
d = pyTSL.DoubleToDatetime(dt)
|
||||
return d.year, d.month, d.day
|
||||
|
||||
|
||||
def DecodeTime(dt):
|
||||
d = pyTSL.DoubleToDatetime(dt)
|
||||
return d.hour, d.minute, d.second, d.microsecond * 1000
|
||||
|
||||
|
||||
def DecodeDateTime(dt):
|
||||
d = pyTSL.DoubleToDatetime(dt)
|
||||
return d.year, d.month, d.day, d.hour, d.minute, d.second, d.microsecond * 1000
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pass
|
||||
Loading…
Reference in New Issue