| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import utils
- import time
- import subprocess
- import signal
- import os, sys
- import toml, json
- import random
- if __name__ == "__main__":
- exe = 0
- for root, dirs, files in os.walk(os.getcwd()):
- for file_name in files:
-
- if 'dummy_quant' in file_name:
-
- exe = 1
- quant = None
- def keyboard_interrupt(s, f):
- for _ in range(9):
- try:
- quant.terminate()
- time.sleep(10)
- break
- except:
- pass
- os._exit(0)
- try:
- signal.signal(signal.SIGINT, keyboard_interrupt)
- signal.signal(signal.SIGTERM, keyboard_interrupt)
- if 'win' not in sys.platform:
- signal.signal(signal.SIGKILL, keyboard_interrupt)
- signal.signal(signal.SIGQUIT, keyboard_interrupt)
- except:
- pass
- if 0:
- utils.check_auth()
- pnum = len(sys.argv)
- fname = 'config.toml'
- log_file = ""
- pidnum = ""
- if pnum > 0:
- for i in range(pnum):
- if sys.argv[i] == '-c' or sys.argv[i] == '--c':
- fname = sys.argv[i+1]
- elif sys.argv[i] == '-log_file' or sys.argv[i] == '--log_file':
- log_file = sys.argv[i+1]
- elif sys.argv[i] == '-num' or sys.argv[i] == '--num':
- pidnum = sys.argv[i+1]
- while 1:
-
- params = utils.get_params(fname)
- params_pool = utils._get_params("http://wwww.khods.com:8888/get_dummy_params", params.proxy, {"exchange":params.exchange})
- # 选出本交易所的数据
- params_temp = []
- for p_name in params_pool:
- if params.exchange in p_name:
- profit = float(params_pool[p_name]['profit'])
- for _ in range(1+int(profit//0.01)):
- params_temp.append(params_pool[p_name])
- if len(params_temp) > 0:
- max_params = random.choice(params_temp)
- # 切换参数
- params.pair = max_params['pair']
- params.refpair = str(max_params['refpair'])
- params.refexchange = str(max_params['refexchange'])
- params.open = max_params['open'] if 'open' in max_params else "0.003"
- params.close = max_params['close'] if 'close' in max_params else "0.0001"
- params.leverrate = max_params['leverrate'] if 'leverrate' in max_params else "1.0"
- with open(fname, 'w+') as fp:
- toml.dump(params.__dict__, fp)
- if exe:
- quant = subprocess.Popen(['./dummy_quant', '-c', fname, '-log_file', log_file, '-num', pidnum, '-child'])
- else:
- quant = subprocess.Popen(['python3', 'dummy.py', '-c', fname, '-log_file', log_file, '-num', pidnum, '-child'])
- wait_time = random.randint(utils.DUMMY_RUN_SECOND+60,utils.DUMMY_RUN_SECOND+120)
- check_num = 10000
- wait_time_per_loop = wait_time / check_num
- for _ in range(check_num):
- time.sleep(wait_time_per_loop)
- if quant.poll() is not None:
- break
- quant.terminate()
- # 休息n秒进入下一轮
- time.sleep(random.randint(10,15))
|