def runStrategy(prices, front): #prices = SqliteDB().getAllPrices(table) ps = [p['close'] for p in prices] pool = StrategyPool(100) doMaTrade(pool, prices, ps, front, 'MA', 6, 9, 35) pool.showStrategies() return for i in range(2, 9): for j in range(4, 20): if i >= j: continue doMaTrade(pool, prices, ps, front, 'MA', i, j) doMaTrade(pool, prices, ps, front, 'EMA', i, j) doMaTrade(pool, prices, ps, front, 'SMA', i, j) log.debug(' ========= ' + str(i) + ',' + str(j) + ' ===========') for k in range(6, 40): if j >= k: continue doMaTrade(pool, prices, ps, front, 'MA', i, j, k) doMaTrade(pool, prices, ps, front, 'EMA', i, j, k) doMaTrade(pool, prices, ps, front, 'SMA', i, j, k) continue for l in range(8, 60): if k >= l: continue doMaTrade(pool, prices, ps, front, 'MA', i, j, k, l) doMaTrade(pool, prices, ps, front, 'EMA', i, j, k, l) doMaTrade(pool, prices, ps, front, 'SMA', i, j, k, l) pool.showStrategies()
def runStrategy(in_prices): global prices, ps, phs, pls, rsis log.debug('beginning s5 strategy ...') prices = in_prices ps = [p['close'] for p in prices] phs = [p['high'] for p in prices] pls = [p['low'] for p in prices] rsis = rsi.calc_rsi(prices, 14) pool = StrategyPool(50) doTrade(pool, 1, 180, 12, 0.5, -0.6) pool.showStrategies() return direction = 1 starttime = time.time() for i in range(30, 150)[::10]: for j in range(2, 30)[::5]: if i < j: continue elapsed = long(time.time() - starttime) log.debug('== ' + str(elapsed) + ', ' + str(i) + ',' + str(j) + ' ==') for kp in [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3]: for kl in [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3]: doTrade(pool, direction, i, j, kp, -kl) pool.showStrategies() return
def runStrategy_2(in_prices): global mas, emas, smas, std, prices log.debug('beginning first strategy ...') prices = in_prices ps = [p['close'] for p in prices] std = [0] * 51 l = len(prices) for period in range(2, 51): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round( np.std(ps[i - period + 1:i + 1], dtype=np.float64, ddof=0), 3) mas = [0] * 61 emas = [0] * 61 smas = [0] * 61 for period in range(2, 61): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) log.debug('running first strategy ...') starttime = datetime.datetime.now() strat_as = [ ['MA', 7, 'SMA', 10, 'SMA', 12], ['MA', 7, 'SMA', 14, 'EMA', 33], ['MA', 7, 'SMA', 16, 'EMA', 27], ] strat_bs = [ ['SMA', 7, 'MA', 12, 'MA', 12], ['SMA', 7, 'MA', 12, 'MA', 36], ['MA', 7, 'SMA', 14, 'EMA', 33], ] pool = StrategyPool(100) for stdPeriod in [25]: stdGuage = 1.3 while stdGuage <= 1.3: elapsed = (datetime.datetime.now() - starttime).seconds log.debug('== ' + str(elapsed) + ',' + str(stdPeriod) + ',' + str(stdGuage) + ' ==') for sa in strat_as: for sb in strat_bs: doTrade(pool, stdPeriod, stdGuage, sa[0], sa[1], sa[2], sa[3], sa[4], sa[5], sb[0], sb[1], sb[2], sb[3], sb[4], sb[5]) stdGuage += 0.02 pool.showStrategies() return
def runStrategy_2(in_prices): global mas, emas, smas, std, prices log.debug('beginning first strategy ...') prices = in_prices ps = [p['close'] for p in prices] std = [0] * 51 l = len(prices) for period in range(2, 51): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round(np.std(ps[i-period+1 : i+1], dtype=np.float64, ddof=0), 3) mas = [0] * 61 emas = [0] * 61 smas = [0] * 61 for period in range(2, 61): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) log.debug('running first strategy ...') starttime = datetime.datetime.now() strat_as = [ ['MA',7,'SMA',10,'SMA',12], ['MA',7,'SMA',14,'EMA',33], ['MA',7,'SMA',16,'EMA',27], ] strat_bs = [ ['SMA',7,'MA',12,'MA',12 ], ['SMA',7,'MA',12,'MA',36 ], ['MA',7,'SMA',14,'EMA',33], ] pool = StrategyPool(100) for stdPeriod in [25]: stdGuage = 1.3 while stdGuage <= 1.3: elapsed = (datetime.datetime.now() - starttime).seconds log.debug('== ' + str(elapsed) + ',' + str(stdPeriod) + ',' + str(stdGuage) + ' ==') for sa in strat_as: for sb in strat_bs: doTrade(pool, stdPeriod, stdGuage, sa[0], sa[1], sa[2], sa[3], sa[4], sa[5], sb[0], sb[1], sb[2], sb[3], sb[4], sb[5]) stdGuage += 0.02 pool.showStrategies() return
def runStrategy(prices): logs.info('STRATEGY,BUY TIMES, SELL TIMES, FINAL EQUITY') #prices = SqliteDB().getAllPrices(table) ps = [p['close'] for p in prices] pool = StrategyPool(100) doRSITrade(pool, prices, 14, 70, 30) pool.showStrategies() return for i in range(3, 30): for j in range(70, 100): for k in range(1, 31): doRSITrade(pool, prices, i, j, k)
def runStrategy(prices): log.debug('beginning l4 strategy ...') ps = [p['close'] for p in prices] pool = StrategyPool(50) #doTrade(pool, prices, ps, 3, 9) #pool.showStrategies() #return for i in range(5, 40)[::2]: for j in range(3, 30)[::2]: doTrade(pool, prices, ps, i, j) pool.showStrategies()
def runStrategy(prices): log.debug('beginning l3 strategy ...') ps = [p['close'] for p in prices] pool = StrategyPool(50) #doTrade(pool, prices, ps, 3, 9) #pool.showStrategies() #return for i in range(5, 40)[::2]: for j in range(3, 30)[::2]: doTrade(pool, prices, ps, i, j) pool.showStrategies()
def runStrategy(prices): logs.info('STRATEGY,BUY TIMES, SELL TIMES, FINAL EQUITY') #prices = SqliteDB().getAllPrices(table) ps = [p['close'] for p in prices] pool = StrategyPool(100) #doBollingTrade(pool, prices, ps, 12, 2.4) #pool.showStrategies() #return for i in range(2, 40): j = 0 log.debug(i) while j <= 5: doBollingTrade(pool, prices, ps, i, j) j += 0.1 pool.showStrategies()
def runStrategy(prices): log.debug('beginning l2 strategy ...') ps = [p['close'] for p in prices] pool = StrategyPool(50) #doTrade(pool, prices, ps, 14, 21, 14) #pool.showStrategies() #return for i in range(5, 20)[::2]: for j in range(12, 50)[::2]: if i >= j: continue for k in range(10, 40)[::3]: for l in [20, 30, 40, 50, 60, 70]: doTrade(pool, prices, ps, i, j, k, l) #doMacdTrade(pool, prices, ps, i, j, k) pool.showStrategies()
def runStrategy(in_prices): log.debug("beginning s3 strategy ...") prices = in_prices ps = [p["close"] for p in prices] pool = StrategyPool(50) doTrade(pool, prices, ps, 90, 17, 45) pool.showStrategies() return for i in range(10, 100)[::10]: for j in range(2, 30)[::5]: log.debug("== " + str(i) + " , " + str(j) + " ==") for k in range(5, 100)[::20]: doTrade(pool, prices, ps, i, j, k) pool.showStrategies() return
def runStrategy(in_prices): global prices, ps, phs, pls log.debug('beginning s4 strategy ...') prices = in_prices ps = [p['close'] for p in prices] phs = [p['high'] for p in prices] pls = [p['low'] for p in prices] pool = StrategyPool(100) doTrade(pool, 110, 17, 17) pool.showStrategies() return starttime = time.time() for i in range(10, 250)[::10]: for j in range(2, 50)[::5]: if i < j: continue elapsed = long(time.time() - starttime) log.debug('== ' + str(elapsed) + ', ' + str(i) + ',' + str(j) + ' ==') for k in range (2, 50)[::5]: if i < k: continue doTrade(pool, i, j, k) pool.showStrategies() return
def runStrategy(in_prices): global mas, emas, smas, lwmas, prices log.debug('beginning ma strategy ...') prices = in_prices ps = [p['close'] for p in prices] log.debug('generating mas ...') mas = [0] * 61 emas = [0] * 61 smas = [0] * 61 lwmas = [0] * 61 for period in range(2, 61): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) lwmas[period] = ma.calc_lwma(ps, period) pool = StrategyPool(20) doMaTrade(pool, 'SMA', 19, 'MA', 40, 'LWMA', 60) pool.showStrategies() return log.debug('running ma strategy ...') starttime = datetime.datetime.now() matypes = ['MA', 'EMA', 'SMA', 'LWMA'] pool = StrategyPool(100) for ft, f in [(matype, period) for matype in matypes for period in range(2, 10)]: for s1t, s1 in [(matype, period) for matype in matypes for period in range(4, 21)]: elapsed = (datetime.datetime.now() - starttime).seconds log.debug('== ' + str(elapsed) + ',' + ft + '_' + str(f) + ',' + s1t + '_' + str(s1) + ' ==') for s2t, s2 in [(matype, period) for matype in matypes for period in range(0, 41)]: if s2 != 0 and s2 <= s1: continue if s2 == 0 and (s2t == 'EMA' or s2t == 'SMA' or s2t == 'LWMA'): continue doMaTrade(pool, ft, f, s1t, s1, s2t, s2) pool.showStrategies()
def runStrategy(in_prices): log.debug('beginning s3 strategy ...') prices = in_prices ps = [p['close'] for p in prices] pool = StrategyPool(50) doTrade(pool, prices, ps, 90, 17, 45) pool.showStrategies() return for i in range(10, 100)[::10]: for j in range(2, 30)[::5]: log.debug('== ' + str(i) + ' , ' + str(j) + ' ==') for k in range(5, 100)[::20]: doTrade(pool, prices, ps, i, j, k) pool.showStrategies() return
def runStrategy(prices): logs.info('STRATEGY,BUY TIMES, SELL TIMES, FINAL EQUITY') ps = [p['close'] for p in prices] pool = StrategyPool(100) doMacdTrade(pool, prices, ps, 12, 26, 9) pool.showStrategies() return for i in range(5, 20): for j in range(12, 50): if i >= j: continue for k in range(2, 20): doMacdTrade(pool, prices, ps, i, j, k) pool.showStrategies()
def runStrategy_1(in_prices): global mas, emas, smas, std, prices log.debug("beginning first strategy ...") prices = in_prices ps = [p["close"] for p in prices] std = [0] * 51 l = len(prices) for period in range(2, 51): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round(np.std(ps[i - period + 1 : i + 1], dtype=np.float64, ddof=0), 3) mas = [0] * 61 emas = [0] * 61 smas = [0] * 61 for period in range(2, 61): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) log.debug("running first strategy ...") starttime = datetime.datetime.now() strat_as = [ ["MA", 6, "SMA", 14, "EMA", 39], ["MA", 7, "SMA", 10, "SMA", 12], ["MA", 7, "SMA", 12, "EMA", 18], ["MA", 7, "SMA", 12, "MA", 27], ["MA", 7, "SMA", 12, "SMA", 12], ["MA", 7, "SMA", 14, "EMA", 27], ["MA", 7, "SMA", 14, "EMA", 30], ["MA", 7, "SMA", 14, "EMA", 33], ["MA", 7, "SMA", 14, "EMA", 45], ["MA", 7, "SMA", 14, "MA", 27], ["MA", 7, "SMA", 14, "SMA", 15], ["MA", 7, "SMA", 14, "SMA", 30], ["MA", 7, "SMA", 16, "EMA", 24], ["MA", 7, "SMA", 16, "EMA", 27], ["MA", 7, "SMA", 16, "EMA", 30], ["MA", 7, "SMA", 16, "MA", 30], ] strat_bs = [ ["EMA", 3, "EMA", 16, "MA", 42], ["EMA", 3, "EMA", 16, "MA", 45], ["EMA", 6, "SMA", 6, "MA", 30], ["EMA", 7, "MA", 4, "EMA", 51], ["MA", 6, "SMA", 16, "EMA", 45], ["MA", 6, "SMA", 18, "MA", 36], ["MA", 6, "SMA", 20, "MA", 36], ["MA", 6, "SMA", 20, "MA", 39], ["MA", 7, "EMA", 18, "EMA", 45], ["MA", 7, "SMA", 12, "EMA", 42], ["MA", 7, "SMA", 12, "SMA", 21], ["MA", 7, "SMA", 14, "EMA", 42], ["MA", 7, "SMA", 14, "MA", 45], ["MA", 7, "SMA", 14, "SMA", 21], ["SMA", 2, "EMA", 16, "MA", 42], ["SMA", 4, "MA", 4, "EMA", 51], ["SMA", 5, "MA", 4, "MA", 15], ["SMA", 5, "MA", 6, "MA", 42], ["SMA", 6, "EMA", 10, "MA", 36], ["SMA", 6, "MA", 12, "MA", 12], ["SMA", 7, "MA", 12, "EMA", 18], ["SMA", 7, "MA", 12, "EMA", 27], ["SMA", 7, "MA", 12, "EMA", 36], ["SMA", 7, "MA", 12, "EMA", 45], ["SMA", 7, "MA", 12, "EMA", 48], ["SMA", 7, "MA", 12, "MA", 12], ["SMA", 7, "MA", 12, "MA", 18], ["SMA", 7, "MA", 12, "MA", 33], ["SMA", 7, "MA", 12, "MA", 36], ["SMA", 7, "MA", 12, "MA", 51], ["SMA", 7, "MA", 12, "SMA", 15], ] pool = StrategyPool(100) for stdPeriod in [5, 8, 10, 12, 15, 18, 19, 20, 21, 22, 25, 30, 32, 34, 38, 40]: stdGuage = 0.6 while stdGuage <= 2: elapsed = (datetime.datetime.now() - starttime).seconds log.debug("== " + str(elapsed) + "," + str(stdPeriod) + "," + str(stdGuage) + " ==") for sa in strat_as: for sb in strat_bs: doTrade( pool, stdPeriod, stdGuage, sa[0], sa[1], sa[2], sa[3], sa[4], sa[5], sb[0], sb[1], sb[2], sb[3], sb[4], sb[5], ) stdGuage += 0.1 pool.showStrategies() return
def runStrategy(in_prices): global mas, emas, smas, std, prices log.debug('beginning first strategy ...') prices = in_prices ps = [p['close'] for p in prices] std = [0] * 51 l = len(prices) for period in range(2, 51): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round(np.std(ps[i-period+1 : i+1], dtype=np.float64, ddof=0), 3) mas = [0] * 61 emas = [0] * 61 smas = [0] * 61 for period in range(2, 61): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) pool = StrategyPool(100) #t = doTrade(pool, 25, 1.0, 'MA', 7, 'SMA', 12, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) t = doTrade(pool, 25, 1.3, 'MA', 7, 'SMA', 13, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.0, 'MA', 7, 'SMA', 13, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.0, 'MA', 7, 'SMA', 12, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) # #t = doTrade(pool, 25, 1.1, 'MA', 7, 'SMA', 12, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.1, 'MA', 7, 'SMA', 13, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.1, 'MA', 7, 'SMA', 13, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.1, 'MA', 7, 'SMA', 12, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) # #t = doTrade(pool, 25, 1.2, 'MA', 7, 'SMA', 12, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.2, 'MA', 7, 'SMA', 13, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.2, 'MA', 7, 'SMA', 13, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.2, 'MA', 7, 'SMA', 12, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) # #t = doTrade(pool, 25, 1.3, 'MA', 7, 'SMA', 12, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.3, 'MA', 7, 'SMA', 13, 'EMA', 31, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.3, 'MA', 7, 'SMA', 13, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.3, 'MA', 7, 'SMA', 12, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 13) #t = doTrade(pool, 25, 1.0, 'MA', 7, 'SMA', 13, 'EMA', 26, 'SMA', 7, 'MA', 12, 'MA', 12) pool.showStrategies() return log.debug('running first strategy ...') starttime = datetime.datetime.now() matypes = ['MA', 'EMA', 'SMA'] #farr = [2, 3, 4, 5, 6, 7, ] #s1arr = [4, 6, 8, 10, 12, 14, 16, 18, 20, ] #s2arr = [0, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, ] farr = [2,] s1arr = [4, ] s2arr = [0, ] pool = StrategyPool(100) for stdPeriod in [20, ]: stdGuage = 0.5 for stdGuage in [1.3, ]: maxAEquity = maxBEquity = 0 poola = StrategyPool(5) poolb = StrategyPool(5) for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: elapsed = (datetime.datetime.now() - starttime).seconds log.debug('== ' + str(elapsed) + ',' + ft + '_' + str(f) + ',' + s1t + '_' + str(s1) + ' ==') for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 < s1: continue if s2 == 0 and (s2t == 'EMA' or s2t == 'SMA'): continue t = doTrade(poola, stdPeriod, stdGuage, ft, f, s1t, s1, s2t, s2, '', 0, '', 0, '', 0) if t.equity > maxAEquity: maxAEquity = t.equity maxEAs = [ft, f, s1t, s1, s2t, s2] elapsed = (datetime.datetime.now() - starttime).seconds log.info('find A time: ' + str(elapsed) + ' ') #poola.showStrategies() for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: elapsed = (datetime.datetime.now() - starttime).seconds log.debug('== ' + str(elapsed) + ',' + ft + '_' + str(f) + ',' + s1t + '_' + str(s1) + ' ==') for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 < s1: continue if s2 == 0 and (s2t == 'EMA' or s2t == 'SMA'): continue t = doTrade(poolb, stdPeriod, stdGuage, '', 0, '', 0, '', 0, ft, f, s1t, s1, s2t, s2) if t.equity > maxBEquity: maxBEquity = t.equity maxEBs = [ft, f, s1t, s1, s2t, s2] elapsed = (datetime.datetime.now() - starttime).seconds log.info('find B time: ' + str(elapsed) + ' ') #poolb.showStrategies() logb.info(str(stdPeriod) + ',' + str(stdGuage) + ',' + str(maxAEquity) + ',' + str(maxBEquity)) logb.info(str(maxEAs)) logb.info(str(maxEBs)) for i in range(5): sa = poola.strategies[i] sb = poolb.strategies[i] t = doTrade(pool, stdPeriod, stdGuage, sa[0].args[2], sa[0].args[3], sa[0].args[4], sa[0].args[5], sa[0].args[6], sa[0].args[7], sb[0].args[8], sb[0].args[9], sb[0].args[10], sb[0].args[11], sb[0].args[12], sb[0].args[13]) t.generateGraph() #pool.estimate(t) #stdGuage += 0.1 pool.showStrategies()
def runStrategy_0(in_prices): global mas, emas, smas, std, prices log.debug('beginning first strategy ...') prices = in_prices ps = [p['close'] for p in prices] std = [0] * 51 l = len(prices) for period in range(2, 51): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round( np.std(ps[i - period + 1:i + 1], dtype=np.float64, ddof=0), 3) mas = [0] * 61 emas = [0] * 61 smas = [0] * 61 for period in range(2, 61): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) log.debug('running first strategy ...') starttime = datetime.datetime.now() matypes = ['MA', 'EMA', 'SMA'] farr = [ 2, 3, 4, 5, 6, 7, ] s1arr = [ 4, 6, 8, 10, 12, 14, 16, 18, 20, ] s2arr = [ 0, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, ] pool = StrategyPool(100) for stdPeriod in [20, 30, 40]: stdGuage = 1.0 while stdGuage <= 1.3: maxAEquity = maxBEquity = 0 poola = StrategyPool(5) poolb = StrategyPool(5) for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: elapsed = (datetime.datetime.now() - starttime).seconds log.debug('== ' + str(elapsed) + ',' + ft + '_' + str(f) + ',' + s1t + '_' + str(s1) + ' ==') for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 < s1: continue if s2 == 0 and (s2t == 'EMA' or s2t == 'SMA'): continue t = doTrade(poola, stdPeriod, stdGuage, ft, f, s1t, s1, s2t, s2, '', 0, '', 0, '', 0) if t.equity > maxAEquity: maxAEquity = t.equity maxEAs = [ft, f, s1t, s1, s2t, s2] elapsed = (datetime.datetime.now() - starttime).seconds log.info('find A time: ' + str(elapsed) + ' ') poola.showStrategies() for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: elapsed = (datetime.datetime.now() - starttime).seconds log.debug('== ' + str(elapsed) + ',' + ft + '_' + str(f) + ',' + s1t + '_' + str(s1) + ' ==') for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 < s1: continue if s2 == 0 and (s2t == 'EMA' or s2t == 'SMA'): continue t = doTrade(poolb, stdPeriod, stdGuage, '', 0, '', 0, '', 0, ft, f, s1t, s1, s2t, s2) if t.equity > maxBEquity: maxBEquity = t.equity maxEBs = [ft, f, s1t, s1, s2t, s2] elapsed = (datetime.datetime.now() - starttime).seconds log.info('find B time: ' + str(elapsed) + ' ') poolb.showStrategies() logb.info( str(stdPeriod) + ',' + str(stdGuage) + ',' + str(maxAEquity) + ',' + str(maxBEquity)) logb.info(str(maxEAs)) logb.info(str(maxEBs)) for i in range(5): sa = poola.strategies[i] sb = poolb.strategies[i] t = doTrade(pool, stdPeriod, stdGuage, sa[0].args[2], sa[0].args[3], sa[0].args[4], sa[0].args[5], sa[0].args[6], sa[0].args[7], sb[0].args[8], sb[0].args[9], sb[0].args[10], sb[0].args[11], sb[0].args[12], sb[0].args[13]) t.generateGraph() pool.estimate(t) stdGuage += 0.1 pool.showStrategies()
def runStrategy(in_prices): global mas, emas, smas, lwmas, std, prices log.debug('beginning one strategy ...') prices = in_prices ps = [p['close'] for p in prices] std = [0] * 51 l = len(prices) for period in range(20, 21): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round(np.std(ps[i-period+1 : i+1], dtype=np.float64, ddof=0), 3) mas = [0] * 181 emas = [0] * 181 smas = [0] * 181 lwmas = [0] * 181 for period in range(2, 181): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) lwmas[period] = ma.calc_lwma(ps, period) #pool = StrategyPool(100) #t = doTrade(pool, 20, 0.1, 0.2, 'SMA', 20, 'SMA', 34, 'LWMA', 40, 'SMA', 20, 'SMA', 34, 'LWMA', 120) #pool.showStrategies() #return log.debug('running first strategy ...') starttime = time.time() matypes = ['MA', 'EMA', 'SMA', 'LWMA'] #farr = [2, 3, 4, 5, 6, 7, ] #s1arr = [4, 6, 8, 10, 12, 14, 16, 18, 20, ] #s2arr = [0, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, ] #farr = [20,] #s1arr = [40, ] #s2arr = [0, ] farr = range(40, 41)[::3] s1arr = range(4, 121)[::6] s2arr = range(0, 181)[::15] stdGuage1, stdGuage2 = 0.1, 0.2 pool = StrategyPool(50) poola = StrategyPool(10) poolb = StrategyPool(10) for stdPeriod in [20, ]: for no in ['A', 'B', ]: for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: if s1 < f: continue elapsed = long(time.time() - starttime) log.debug('== ' + str(elapsed) + ',' + ft + '_' + str(f) + ',' + s1t + '_' + str(s1) + ' ==') for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 <= s1: continue if s2 == 0 and (s2t == 'EMA' or s2t == 'SMA' or s2t == 'LWMA'): continue if no == 'A': doTrade(poola, stdPeriod, stdGuage1, stdGuage2, ft, f, s1t, s1, s2t, s2, '', 0, '', 0, '', 0) elif no == 'B': doTrade(poolb, stdPeriod, stdGuage1, stdGuage2, '', 0, '', 0, '', 0, ft, f, s1t, s1, s2t, s2) elapsed = long(time.time() - starttime) log.info('find ' + no + ' time: ' + str(elapsed) + ' ') for i in range(10): sa = poola.strategies[i] sb = poolb.strategies[i] t = doTrade(pool, stdPeriod, stdGuage1, stdGuage2, sa[0].args[0], sa[0].args[1], sa[0].args[2], sa[0].args[3], sa[0].args[4], sa[0].args[5], sb[0].args[6], sb[0].args[7], sb[0].args[8], sb[0].args[9], sb[0].args[10], sb[0].args[11]) #t.generateGraph() pool.showStrategies()
def runStrategy_0(in_prices): global mas, emas, smas, std, prices log.debug("beginning first strategy ...") prices = in_prices ps = [p["close"] for p in prices] std = [0] * 51 l = len(prices) for period in range(2, 51): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round(np.std(ps[i - period + 1 : i + 1], dtype=np.float64, ddof=0), 3) mas = [0] * 61 emas = [0] * 61 smas = [0] * 61 for period in range(2, 61): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) log.debug("running first strategy ...") starttime = datetime.datetime.now() matypes = ["MA", "EMA", "SMA"] farr = [2, 3, 4, 5, 6, 7] s1arr = [4, 6, 8, 10, 12, 14, 16, 18, 20] s2arr = [0, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51] pool = StrategyPool(100) for stdPeriod in [20, 30, 40]: stdGuage = 1.0 while stdGuage <= 1.3: maxAEquity = maxBEquity = 0 poola = StrategyPool(5) poolb = StrategyPool(5) for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: elapsed = (datetime.datetime.now() - starttime).seconds log.debug("== " + str(elapsed) + "," + ft + "_" + str(f) + "," + s1t + "_" + str(s1) + " ==") for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 < s1: continue if s2 == 0 and (s2t == "EMA" or s2t == "SMA"): continue t = doTrade(poola, stdPeriod, stdGuage, ft, f, s1t, s1, s2t, s2, "", 0, "", 0, "", 0) if t.equity > maxAEquity: maxAEquity = t.equity maxEAs = [ft, f, s1t, s1, s2t, s2] elapsed = (datetime.datetime.now() - starttime).seconds log.info("find A time: " + str(elapsed) + " ") poola.showStrategies() for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: elapsed = (datetime.datetime.now() - starttime).seconds log.debug("== " + str(elapsed) + "," + ft + "_" + str(f) + "," + s1t + "_" + str(s1) + " ==") for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 < s1: continue if s2 == 0 and (s2t == "EMA" or s2t == "SMA"): continue t = doTrade(poolb, stdPeriod, stdGuage, "", 0, "", 0, "", 0, ft, f, s1t, s1, s2t, s2) if t.equity > maxBEquity: maxBEquity = t.equity maxEBs = [ft, f, s1t, s1, s2t, s2] elapsed = (datetime.datetime.now() - starttime).seconds log.info("find B time: " + str(elapsed) + " ") poolb.showStrategies() logb.info(str(stdPeriod) + "," + str(stdGuage) + "," + str(maxAEquity) + "," + str(maxBEquity)) logb.info(str(maxEAs)) logb.info(str(maxEBs)) for i in range(5): sa = poola.strategies[i] sb = poolb.strategies[i] t = doTrade( pool, stdPeriod, stdGuage, sa[0].args[2], sa[0].args[3], sa[0].args[4], sa[0].args[5], sa[0].args[6], sa[0].args[7], sb[0].args[8], sb[0].args[9], sb[0].args[10], sb[0].args[11], sb[0].args[12], sb[0].args[13], ) t.generateGraph() pool.estimate(t) stdGuage += 0.1 pool.showStrategies()
def runStrategy(in_prices): global mas, emas, smas, lwmas, std, prices log.debug('beginning one strategy ...') prices = in_prices ps = [p['close'] for p in prices] std = [0] * 51 l = len(prices) for period in range(5, 41): std[period] = [0] * l for i in range(period - 1, l): std[period][i] = round( np.std(ps[i - period + 1:i + 1], dtype=np.float64, ddof=0), 3) mas = [0] * 181 emas = [0] * 181 smas = [0] * 181 lwmas = [0] * 181 for period in range(2, 181): mas[period] = ma.calc_ma(ps, period) emas[period] = ma.calc_ema(ps, period) smas[period] = ma.calc_sma(ps, period) lwmas[period] = ma.calc_lwma(ps, period) #pool = StrategyPool(100) #t = doTrade(pool, 20, 0.1, 0.2, 'SMA', 20, 'SMA', 34, 'LWMA', 40, 'SMA', 20, 'SMA', 34, 'LWMA', 120, 'MA', 20, 'SMA', 34, 'LWMA', 120) #pool.showStrategies() #return log.debug('running first strategy ...') starttime = time.time() matypes = ['MA', 'EMA', 'SMA', 'LWMA'] #farr = [2, 3, 4, 5, 6, 7, ] #s1arr = [4, 6, 8, 10, 12, 14, 16, 18, 20, ] #s2arr = [0, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, ] #farr = [20,] #s1arr = [40, ] #s2arr = [0, ] farr = range(40, 41)[::3] s1arr = range(4, 121)[::6] s2arr = range(0, 181)[::15] stdGuage1, stdGuage2 = 0.1, 0.2 pool = StrategyPool(50) poola = StrategyPool(10) poolb = StrategyPool(10) poolc = StrategyPool(10) for stdPeriod in [ 20, ]: for no in ['A', 'B', 'C']: for ft, f in [(matype, period) for matype in matypes for period in farr]: for s1t, s1 in [(matype, period) for matype in matypes for period in s1arr]: if s1 < f: continue elapsed = long(time.time() - starttime) log.debug('== ' + str(elapsed) + ',' + ft + '_' + str(f) + ',' + s1t + '_' + str(s1) + ' ==') for s2t, s2 in [(matype, period) for matype in matypes for period in s2arr]: if s2 != 0 and s2 <= s1: continue if s2 == 0 and (s2t == 'EMA' or s2t == 'SMA' or s2t == 'LWMA'): continue if no == 'A': doTrade(poola, stdPeriod, stdGuage1, stdGuage2, ft, f, s1t, s1, s2t, s2, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0) elif no == 'B': doTrade(poolb, stdPeriod, stdGuage1, stdGuage2, '', 0, '', 0, '', 0, ft, f, s1t, s1, s2t, s2, '', 0, '', 0, '', 0) elif no == 'C': doTrade(poolc, stdPeriod, stdGuage1, stdGuage2, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, ft, f, s1t, s1, s2t, s2) elapsed = long(time.time() - starttime) log.info('find ' + no + ' time: ' + str(elapsed) + ' ') for i in range(10): sa = poola.strategies[i] sb = poolb.strategies[i] sc = poolc.strategies[i] t = doTrade(pool, stdPeriod, stdGuage1, stdGuage2, sa[0].args[0], sa[0].args[1], sa[0].args[2], sa[0].args[3], sa[0].args[4], sa[0].args[5], sb[0].args[6], sb[0].args[7], sb[0].args[8], sb[0].args[9], sb[0].args[10], sb[0].args[11], sc[0].args[12], sc[0].args[13], sc[0].args[14], sc[0].args[15], sc[0].args[16], sc[0].args[17]) #t.generateGraph() pool.showStrategies()