This commit is contained in:
Wei guangjing 2022-06-09 12:03:03 +08:00
commit 5f44063755
2 changed files with 215 additions and 0 deletions

40
README.md Normal file
View File

@ -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])
```

175
pyTSLPy.py Normal file
View File

@ -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