예제 #1
0
def insert_data(parameter):
    db = MySQLUtils(user='******', passwd='1988', dbname='stock', source='stock')
    # print parameter
    for stock in parameter:
        data = mlab.csv2rec(stock, delimiter='\t')

        pattern = re.compile("[SH]*[SZ]*[0-9]{6}", re.IGNORECASE)
        m = pattern.findall(stock)
        if len(m) == 1:
            # print data
            db.insert_ohlc_data(data, m[0])
예제 #2
0
파일: test_ohlc.py 프로젝트: minghui/lquant
    def test_something(self):
        db = MySQLUtils('root', '1988', 'test', 'stock')
        data = db.get_array('sh600741', begin='2015-01-01', end='2016-01-01')
        ohlc = OHLCVD(data)
        ohlc.add_macd()
        ohlc.add_ma(10)
        ohlc.add_rsi_feature()
        ohlc.add_raise_day(5)
        ohlc.add_raise_day(10)
        ohlc.add_recent_down_v_turn()
        data = ohlc.get_array()

        print data.shape[1]
예제 #3
0
    def test_ohlc_add_all_feature(self):
        data = pd.read_csv('d:/stock/new-data/SH600741.TXT', sep='\t')
        ohlc = OHLCVD(data.values)
        ohlc.add_all_ta_feature()
        data = ohlc.get_dataframe()
        result = data.replace(np.nan,
                              -1.0).replace(np.inf,
                                            -2.0).replace(-np.inf, -3.0)

        sql_line = '''insert into stock_with_feature values('sh600741', '%s', %s )''' % (
            result.values[1, 0],
            ','.join([str(x) for x in result.values[1, 1:]]),
        )

        print sql_line
        db = MySQLUtils('root', '1988', 'stock', 'stock_with_feature')

        db.execute_sql(sql_line)
        self.assertEqual(ohlc.data.shape[1], 149)
예제 #4
0
def build_stock_list(data_path):
    stock_list = []
    for root, _, files in os.walk(data_path):
        for f in files:
            stock_list.append(os.path.join(root, f))
    return stock_list


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-n', type=int, help='thread number')
    parser.add_argument('-path', type=str, help='path to the data')
    try:
        db = MySQLUtils(user='******',
                        passwd='1988',
                        dbname='stock',
                        source='stock')
        # db.create_db("test")
        args = parser.parse_args()
        print args.n
        stock_list = build_stock_list(args.path)
        print stock_list
        length = len(stock_list) / args.n
        stock_cache = [
            stock_list[i:i + length] for i in range(0, len(stock_list), length)
        ]
        if len(stock_list) % length != 0:
            begin = len(stock_list) / length * length
            stock_cache.append(stock_list[begin:begin +
                                          len(stock_list) % length])
        print stock_cache
예제 #5
0
# coding=utf-8
__author__ = 'squall'

import talib
import numpy as np
import pandas as pd
from backtest.utils.mysql import MySQLUtils

db = MySQLUtils('root', '1988', 'test', 'stock')

data = db.get_array(id='sh600741', begin='2010-01-01', end='2016-12-31')
print data

print np.exp(data[:, 5].astype(np.float64))
# note that all ndarrays must be the same length!
inputs = {
    'open': data[:, 1].astype(np.float64),
    'high': data[:, 2].astype(np.float64),
    'low': data[:, 3].astype(np.float64),
    'close': data[:, 4].astype(np.float64),
    'volume': np.exp(data[:, 5].astype(np.float64))
}


macd_result = talib.abstract.MACD(inputs)
macd_result = np.vstack(macd_result)
macd_data_frame = pd.DataFrame(data=macd_result.T, index=data[:, 0])
x = macd_result.T
y = x[:, 1] - x[:, 0]
print y*2
# macd_data_frame.plot()
예제 #6
0
            ohlc.add_raise_day(5)
            ohlc.add_raise_day(3)
            ohlc.add_ma(60)
            # ohlc.add_rsi_feature()
            ohlc.add_jump_empty_down()
            ohlc.normalize()
            results.append(ohlc.data)
            label = ohlc.future_return(5)
            labels.append(label)
        print len(results)
        print len(labels)
    return results


if __name__ == '__main__':
    db = MySQLUtils('root', '1988', 'stock', 'stock_with_feature')
    import pandas as pd
    data = pd.read_csv('d:/stock/new-data/sh600741.txt', sep='\t')
    result = OHLCVD(data.values)
    result.add_all_ta_feature()
    result = result.data_frame.replace(np.nan, -1.0).replace(np.inf,
                                                             -2.0).replace(
                                                                 -np.inf, -3.0)
    db_name = "stock_with_feature"
    db.create_feature_db(db_name)
    db.insert_feature_data(db_name, result.values, 'sh600741')
    # result = db.get_array('sh600741', begin='2007-10-10', end='2015-12-12')
    # ohlc = OHLCVD(data=result)
    # ohlc.add_macd()
    # ohlc.add_fall_days(5)
    # ohlc.add_raise_day(5)