def examine(lines, pic_kind): resolve = [-36, -5, 97, 44, -24] length, same, deltaes,days,opens,actuals,expecteds = 0, 0, [],[],[],[],[] for line in lines: record = History.get_from_historyline(line) record = History.norm(record) expected = get_expected(resolve, record) actual = record.closed_today delta = expected - actual deltaes.append(delta) days.append(record.day) opens.append(record.open_price) actuals.append(actual) expecteds.append(expected) print 'open: %s,actual: %s, expected: %s, delta: %s' % (record.open_price, actual, expected, delta) if (expected - record.open_price) * (actual - record.open_price) > 0: same += 1 length += 1 print 'direction_same: %d, length: %d, direction_same/length: %s' % (same, length, float(same)/length) x = [ i + 1 for i in range(len(opens))] if pic_kind == 'delta': pydrawer.draw(x, deltaes, 'bo') if pic_kind == 'lines': pydrawer.draw(x, opens,'k', x, actuals,'r-', x, expecteds,'bo')
def anneal_reducer(lines): # 开盘价, 昨结算, 最高价, 最低价 domain = [(-100, 100), (-100, 100), (-100, 100), (-100, 100), (-2000, 2000)] records = set() for line in lines: history_record = History.get_from_historyline(line) history_record = History.norm(history_record) records.add(history_record) while(True): best_cost, best_resolve = optimizations.annealing(domain, get_best_solution(records)) ave_cost = best_cost / len(records) if ave_cost < 3000: print 'best_cost: %s, best_resolve: %s, best_ave_cost: %f' % (best_cost, best_resolve, ave_cost) if ave_cost < 1000: break
def random_reducer(lines): # 开盘价, 昨结算, 最高价, 最低价, 加权平均价, 成交量(千克)持仓量 # domain = [(-100, 100), (-100, 100), (-100, 100), (-100, 100), (-100, 100), (-100, 100), (-100, 100), (-2000, 2000)] domain = [(-100, 100), (-100, 100), (-100, 100), (-100, 100), (-2000, 2000)] records = set() for line in lines: history_record = History.get_from_historyline(line) history_record = History.norm(history_record) records.add(history_record) best_cost,best_resolve = sys.maxint, None for i in range(20): cost, resolve = optimizations.randomoptimize(domain, get_best_solution(records)) # cost, resolve = optimizations.hill_climb(domain, get_best_solution(records)) print 'i: %s, cost: %s, resolve: %s, ave_cost: %f' % (i, cost, resolve, cost / len(records)) if cost < best_cost: best_cost = cost best_resolve = resolve # goal: daily_cost <= sqrt(100) if best_cost <= len(records) * 100: break print 'best_cost: %s, best_resolve: %s, best_ave_cost: %f' % (best_cost, best_resolve, best_cost / len(records))
def reducer(lines): positives, negatives, alters = [], [], [] for line in lines: history_record = History.get_from_historyline(line) if history_record.increase > 0: positives.append(history_record.increase) if len(negatives) != 0: alters.append(sum(negatives)) negatives = [] elif history_record.increase < 0: negatives.append(history_record.increase) if len(positives) != 0: alters.append(sum(positives)) positives = [] if len(positives) != 0: alters.append(sum(positives)) elif len(negatives) != 0: alters.append(sum(negatives)) odd_200 = float(sum([1 for alter in alters if abs(alter) <= 200])) / len(alters) print 'alters: %s, odd_200: %f' % (alters, odd_200) pydrawer.draw(alters, 'bo')
def reducer(lines, ABS): # print '[0, 3000), [3000, 4000), [4000, 5000), [5000, 6000), [6000,sys.maxint) ' rates = {} for line in lines: history_ag = History.get_from_historyline(line) if history_ag.average < 3000: grade = '[0, 3000)' elif history_ag.average >= 3000 and history_ag.average < 4000: grade = '[3000, 4000)' elif history_ag.average >= 4000 and history_ag.average < 5000: grade = '[4000, 5000)' elif history_ag.average >= 5000 and history_ag.average < 6000: grade = '[5000, 6000)' else: grade = '[6000,sys.maxint)' rates.setdefault(grade, []) rates[grade].append(history_ag.increase_rate) if ABS: for grade in rates: print '%s\t%s' % (grade, utils.abs_average(rates[grade])) else: for grade in rates: print '%s\t%s' % (grade, utils.average(rates[grade]))