fmzfiyan
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import json
import ssl
import logging
from datetime import datetime
name = 'XXXX' #策略名称
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('log-'+name+'.run')
fh.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
ssl._create_default_https_context = ssl._create_unverified_context
try:
import md5
import urllib2
from urllib import urlencode
except:
import hashlib as md5
import urllib.request as urllib2
from urllib.parse import urlencode
accessKey = '14XXXXXXXXXXXXX888'
secretKey = '98XXXXXXXXXXXXXXXXXXf2'
def api(method, *args):
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
return json.loads(urllib2.urlopen('https://www.youquant.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
logger.info('start.py start');
while True:
time.sleep(3)
try:
# rlist = api('GetRobotList', 0, 5, -1, '')
rlist = api('GetRobotList')
print (rlist)
for r in rlist['data']['result']['robots']:
if r['name'] != name:
continue
if datetime.now().isoweekday() < 6:
now_localtime = time.strftime("%H:%M:%S", time.localtime())
if "09:27:00" < now_localtime < "11:30:00" or "12:58:00" < now_localtime < "15:00:00": #股指合约交易时间
if r['status'] == 1:
logger.info(name+' is running')
else:
logger.info('RestartRobot '+str(r['id']))
logger.info(api('RestartRobot', r['id']))
continue
if r['status'] == 4:
logger.info(name + ' is stoped')
else:
logger.info(name + ' not stoped, status: ' + str(r['status']) + ' stop it!')
logger.info(api('StopRobot', r['id']))
except:
logger.info('error')
time.sleep(30)
'''
# 返回托管者列表
print(api('GetNodeList'))
# 返回交易所列表
print(api('GetPlatformList'))
# GetRobotList(offset, length, robotStatus, label),传-1代表获取全部
print(api('GetRobotList', 0, 5, -1, 'member2'))
# CommandRobot(robotId, cmd)向实盘发送命令
print(api('CommandRobot', 123, 'ok'))
# StopRobot(robotId)返回实盘状态代码
print(api('StopRobot', 123))
# RestartRobot(robotId)返回实盘状态代码
print(api('RestartRobot', 123))
# GetRobotDetail(robotId)返回实盘详细信息
print(api('GetRobotDetail', 123))
'''
2025-03-05 10:40:02