stable/parallel/generator.py

92 lines
2.8 KiB
Python
Raw Normal View History

2018-03-26 22:19:20 +00:00
#!/usr/bin/env python3
import math, sys, os, time, pp, math, re
from io import StringIO
# tuple of all parallel python servers to connect with
ppservers = ()
#ppservers = ("10.0.0.1",)
2018-03-27 01:28:45 +00:00
# Number of jobs to run
2018-03-27 01:23:59 +00:00
parts = 1280000
2018-03-27 01:28:45 +00:00
2018-03-27 01:23:59 +00:00
jobs = []
current = 0
2018-03-26 22:19:20 +00:00
2018-03-27 01:28:45 +00:00
2018-03-26 22:19:20 +00:00
def backtesting(ind):
er1 = str(ind)
ou1 = str(ind * 1024)
import threading, traceback
from io import StringIO
from freqtrade.main import main, set_loggers
old_stdout = sys.stdout
old_stderr = sys.stderr
ind1 = sys.stdout = StringIO()
ind2 = sys.stderr = StringIO()
dat = threading.Thread(target=main(['backtesting']))
dat.start()
dat.join()
er1 = ind2.getvalue()
ou1 = ind1.getvalue()
sys.stdout = old_stdout
sys.stderr = old_stderr
return er1, ou1
if len(sys.argv) > 1:
ncpus = int(sys.argv[1])
2018-03-27 02:12:55 +00:00
# Creates jobserver with ncpus workers
2018-03-27 01:39:40 +00:00
job_server = pp.Server(ncpus, ppservers=ppservers)
2018-03-26 22:19:20 +00:00
else:
# Creates jobserver with automatically detected number of workers
2018-03-27 01:39:40 +00:00
job_server = pp.Server(ppservers=ppservers)
2018-03-26 22:19:20 +00:00
print("Starting pp with", job_server.get_ncpus(), "workers")
start_time = time.time()
2018-03-27 01:28:45 +00:00
for index in range(parts):
jobs.append(job_server.submit(backtesting, (index,)))
# print(index)
while True:
for job in jobs:
try:
res = job()
2018-03-27 02:12:55 +00:00
if res is not None:
string = str(res)
params = re.search(r'~~~~(.*)~~~~', string).group(1)
mfi = re.search(r'MFI Value(.*)XXX', string)
fastd = re.search(r'FASTD Value(.*)XXX', string)
adx = re.search(r'ADX Value(.*)XXX', string)
rsi = re.search(r'RSI Value(.*)XXX', string)
2018-03-27 04:28:31 +00:00
tot = re.search(r'TOTAL (.*)', string).group(1)
total = float(tot)
2018-03-27 02:12:55 +00:00
if total and (float(total) > float(current)):
current = total
print('total better profit paremeters: ')
print(total)
if params:
print(params)
print('~~~~~~')
print('Only enable the above settings, not all settings below are used!')
print('~~~~~~')
if mfi:
print('~~~MFI~~~')
print(mfi.group(1))
if fastd:
print('~~~FASTD~~~')
print(fastd.group(1))
if adx:
print('~~~ADX~~~')
print(adx.group(1))
if rsi:
print('~~~RSI~~~')
print(rsi.group(1))
2018-03-27 02:18:35 +00:00
print("Time elapsed: ", time.time() - start_time, "s")
job_server.print_stats()
except:
2018-03-27 02:12:55 +00:00
pass