Beispiel #1
0
def doRSITrade(pool, prices, period, up, down):
	global highest
	
	sname = 'RSI_' + str(period) + '_' + str(up) + '_' + str(down)
	rsis = rsi.calc_rsi(prices, period)
	t = Trader(sname)
	
	for i in range(period, len(prices)):
		if rsis['rsi'][i] < down and rsis['rsi'][i-1] >= down:
			notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(rsis['rsi'][i-1]) + ';down: ' + str(down)
			t.buy(prices[i]['date'], prices[i]['time'], prices[i]['rmb'], notes)
			
		if rsis['rsi'][i] >= down and rsis['rsi'][i - 1] < down:
			notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(rsis['rsi'][i-1]) + ';down: ' + str(down)
			t.sell(prices[i]['date'], prices[i]['time'], prices[i]['rmb'], notes, True)
		
		if rsis['rsi'][i] > up and rsis['rsi'][i-1] <= up:
			notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(rsis['rsi'][i-1]) + ';up: ' + str(up)
			t.sell(prices[i]['date'], prices[i]['time'], prices[i]['rmb'], notes)
			
		if rsis['rsi'][i] <= up and rsis['rsi'][i-1] > up:
			notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(rsis['rsi'][i-1]) + ';up: ' + str(up)
			t.buy(prices[i]['date'], prices[i]['time'], prices[i]['rmb'], notes, True)
		
		t.show(prices[i]['date'], prices[i]['time'], prices[i]['rmb'])
	
	pool.estimate(t)
	
	
Beispiel #2
0
def doTrade(pool, prices, ps, fast, slow, rsiPeriod, rsiGuage):
	
	sname = 'L2_' + str(fast) + '_' + str(slow) + '_' + str(rsiPeriod) + '_' + str(rsiGuage)
	macds = macd.calc_macd(prices, fast, slow, 7)
	rsis = rsi.calc_rsi(prices, rsiPeriod)
	
	front = max(fast, slow, rsiPeriod)
	
	t = Trader(sname)
	
	direct = odirect = 0
	for i in range(front, len(prices)):
		#print macds['macd'][i], rsis['rsi'][i], odirect , direct
		price = prices[i]
		
		if macds['macd'][i] > 0 and rsis['rsi'][i] > rsiGuage:
			direct = 1
		elif macds['macd'][i] < 0 and rsis['rsi'][i] < rsiGuage:
			direct = -1
		
		volume = 0
		if odirect == -1 and direct == 1:
			volume = 1
		elif odirect == 1 and direct == -1:
			volume = -1
			
		odirect = direct
		t.processOrder(price['dt'], price['rmb'], volume * 1000, cntNo=0, notes='')
	
	pool.estimate(t)
	return
Beispiel #3
0
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
Beispiel #4
0
def doRSITrade(pool, prices, period, up, down):
    global highest

    sname = 'RSI_' + str(period) + '_' + str(up) + '_' + str(down)
    rsis = rsi.calc_rsi(prices, period)
    t = Trader(sname)

    for i in range(period, len(prices)):
        if rsis['rsi'][i] < down and rsis['rsi'][i - 1] >= down:
            notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(
                rsis['rsi'][i - 1]) + ';down: ' + str(down)
            t.buy(prices[i]['date'], prices[i]['time'], prices[i]['rmb'],
                  notes)

        if rsis['rsi'][i] >= down and rsis['rsi'][i - 1] < down:
            notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(
                rsis['rsi'][i - 1]) + ';down: ' + str(down)
            t.sell(prices[i]['date'], prices[i]['time'], prices[i]['rmb'],
                   notes, True)

        if rsis['rsi'][i] > up and rsis['rsi'][i - 1] <= up:
            notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(
                rsis['rsi'][i - 1]) + ';up: ' + str(up)
            t.sell(prices[i]['date'], prices[i]['time'], prices[i]['rmb'],
                   notes)

        if rsis['rsi'][i] <= up and rsis['rsi'][i - 1] > up:
            notes = 'RSI: ' + str(rsis['rsi'][i]) + ';pre: ' + str(
                rsis['rsi'][i - 1]) + ';up: ' + str(up)
            t.buy(prices[i]['date'], prices[i]['time'], prices[i]['rmb'],
                  notes, True)

        t.show(prices[i]['date'], prices[i]['time'], prices[i]['rmb'])

    pool.estimate(t)
Beispiel #5
0
def runStrategy(in_prices):
	global prices, ps, phs, pls, rsis
	
	log.debug('beginning s6 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, 140, 7, 1.0, -1.0)
	#pool.showStrategies()
	#return
	
	direction = -1
	starttime = time.time() 
	for i in range(50, 200)[::10]:
		for j in range(2, 20)[::3]:
			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
Beispiel #6
0
def calcTickets(pool, prices, period):
	vname = 'RSI_' + str(period)
	rsis = rsi.calc_rsi(prices, period)
	front = period
	l = len(prices)
	ops = [0] * l
	for i in range(front, l):
		if rsis['rsi'][i] < 30 and rsis['rsi'][i] > rsis['rsi'][i-1]:
			ops[i] = 1
		elif ops[i-1] == 1 and rsis['rsi'][i] > rsis['rsi'][i-1]:
			ops[i] = 1
		elif rsis['rsi'][i] > 70 and rsis['rsi'][i] < rsis['rsi'][i-1]:
			ops[i] = -1
		elif ops[i-1] == -1 and rsis['rsi'][i] < rsis['rsi'][i-1]:
			ops[i] = -1
	
	pool.estimate(vname, ops, front)
		
	
Beispiel #7
0
def calcTickets(pool, prices, ps, fPeriod, sPeriod):
    vname = 'FAB_' + str(period)

    rsis = rsi.calc_rsi(prices, period)
    front = period
    l = len(prices)
    ops = [0] * l
    for i in range(front, l):
        high = max(ps[i - fPeriod + 1:i + 1])
        low = min(ps[i - fPeriod + 1:i + 1])
        slope, y = calc_slope(ps[i - sPeriod + 1:i + 1])

        if rsis['rsi'][i] < 30 and rsis['rsi'][i] > rsis['rsi'][i - 1]:
            ops[i] = 1
        elif ops[i - 1] == 1 and rsis['rsi'][i] > rsis['rsi'][i - 1]:
            ops[i] = 1
        elif rsis['rsi'][i] > 70 and rsis['rsi'][i] < rsis['rsi'][i - 1]:
            ops[i] = -1
        elif ops[i - 1] == -1 and rsis['rsi'][i] < rsis['rsi'][i - 1]:
            ops[i] = -1

    pool.estimate(vname, ops, front)
Beispiel #8
0
def calcTickets(pool, prices, ps, fPeriod, sPeriod):
	vname = 'FAB_' + str(period)
	
	rsis = rsi.calc_rsi(prices, period)
	front = period
	l = len(prices)
	ops = [0] * l
	for i in range(front, l):
		high = max(ps[i - fPeriod + 1 : i + 1])
		low = min(ps[i - fPeriod + 1 : i + 1])
		slope, y = calc_slope(ps[i - sPeriod + 1 : i + 1])
		
		
	
		if rsis['rsi'][i] < 30 and rsis['rsi'][i] > rsis['rsi'][i-1]:
			ops[i] = 1
		elif ops[i-1] == 1 and rsis['rsi'][i] > rsis['rsi'][i-1]:
			ops[i] = 1
		elif rsis['rsi'][i] > 70 and rsis['rsi'][i] < rsis['rsi'][i-1]:
			ops[i] = -1
		elif ops[i-1] == -1 and rsis['rsi'][i] < rsis['rsi'][i-1]:
			ops[i] = -1
	
	pool.estimate(vname, ops, front)
Beispiel #9
0
def doTrade(pool, prices, ps, fast, slow, rsiPeriod, rsiGuage):

    sname = 'L2_' + str(fast) + '_' + str(slow) + '_' + str(
        rsiPeriod) + '_' + str(rsiGuage)
    macds = macd.calc_macd(prices, fast, slow, 7)
    rsis = rsi.calc_rsi(prices, rsiPeriod)

    front = max(fast, slow, rsiPeriod)

    t = Trader(sname)

    direct = odirect = 0
    for i in range(front, len(prices)):
        #print macds['macd'][i], rsis['rsi'][i], odirect , direct
        price = prices[i]

        if macds['macd'][i] > 0 and rsis['rsi'][i] > rsiGuage:
            direct = 1
        elif macds['macd'][i] < 0 and rsis['rsi'][i] < rsiGuage:
            direct = -1

        volume = 0
        if odirect == -1 and direct == 1:
            volume = 1
        elif odirect == 1 and direct == -1:
            volume = -1

        odirect = direct
        t.processOrder(price['dt'],
                       price['rmb'],
                       volume * 1000,
                       cntNo=0,
                       notes='')

    pool.estimate(t)
    return