Esempio n. 1
0
def contractMap_mod_domain_utc():
    rq.init()
    # 为contractMap文件增加life_utc列
    cm = pd.read_csv(
        'D:\\002 MakeLive\DataCollection\public data\\contractMap.csv')
    domain_start_utc_list = []
    domain_end_utc_list = []
    cm['domain_start_date'] = cm['domain_start_date'].str.replace('\\', '-')
    cm['domain_end_date'] = cm['domain_end_date'].str.replace('\\', '-')
    cm['listed_date'] = cm['listed_date'].str.replace('\\', '-')
    cm['maturity_date'] = cm['maturity_date'].str.replace('\\', '-')
    for n, rows in cm.iterrows():
        first_date = rows['domain_start_date']
        predate = get_previous_trading_date(first_date, country='cn')
        domain_start_utc = int(
            time.mktime(
                time.strptime(
                    predate.strftime("%Y-%m-%d") + '  21:00:00',
                    '%Y-%m-%d %H:%M:%S')))
        domain_end_utc = int(
            time.mktime(
                time.strptime(rows['domain_end_date'] + ' 16:00:00',
                              '%Y-%m-%d %H:%M:%S')))
        domain_start_utc_list.append(domain_start_utc)
        domain_end_utc_list.append(domain_end_utc)
    cm['domain_start_utc'] = domain_start_utc_list
    cm['domain_end_utc'] = domain_end_utc_list
    #cm.drop('Unnamed: 0.1', axis=1, inplace=True)
    #cm['Unnamed: 0']=range(cm.shape[0])
    cm.to_csv('contractMap2.csv', index=False)
    pass
Esempio n. 2
0
    def auth(self, **kwargs):
        if self.isAuthed:
            return

        rq.init(**kwargs)
        self.isAuthed = True
        print("Rqdata has been authorized.")
    def prep_download(self):
        # self.start = datetime(2011, 1, 1)

        self.end = datetime.now().date()
        # read csv commodities futures list
        with open('cf_list.csv', 'r') as f:
            reader = csv.reader(f)
            cf_list = list(reader)

        rq.init()
        today = rq.get_latest_trading_date()
        prev_trading_day = rq.get_previous_trading_date(today, 1, market='cn')

        for instrument in cf_list:
            # check if changed the dominant contract for the latest trading day
            today_dominant = rq.futures.get_dominant(instrument[1], today)
            prev_day_dominant = rq.futures.get_dominant(
                instrument[1], prev_trading_day)
            if today_dominant[today] == prev_day_dominant[prev_trading_day]:
                self.start = prev_trading_day
            elif today_dominant[today] != prev_day_dominant[prev_trading_day]:
                self.start = datetime(2011, 1, 1)
                print(
                    f"品种 {instrument[1]} 的主力合约即日起从 {prev_day_dominant[prev_trading_day]} 换到 {today_dominant[today]}"
                )
            else:
                print("####### 检查主力合约过程中出错,请手动debug!")
            if self.download_full == True:
                self.start = datetime(2011, 1, 1)
            self.rq_download(instrument[0], '1m', self.start, self.end)
            self.rq_download(instrument[0], 'd', self.start, self.end)
Esempio n. 4
0
def before_trading(context, bar_dict):
    rqd.init(
        'license',
        'BZPntqmgrLH4lKAOjx671eO91m87PaKGRLpXoldWGCf-3Skw8oZ_VnjVSA-M4fRtcuye-HfX8velChxb0iLxDtpzt9DeTCVJsdSYOKQ4'
        'grrpqge2IYBUMKmrpFqMiuI6ZXw5d9eje7Qtu28Z-wgDKeWpoI4K0MNYf2aPt_ejSsM=MABNzwICqZ_LX_sk549IAzaYHdtWgAJwSkyRAe'
        'DQUq992HgGBL1nC_WicztRvUqa-WiwR-_cGj8-vfFakdVXqtNx9tapTpSuM5PKhfTfDJqOD7HH3jr2KpgI_IX4gNDbKT0a4W9mCKz6qka7'
        'KDTj_TlCpdV5_lIfAd7UaIgm9pc=', ('115.159.129.195', 443),
        proxy_info=('http', '172.20.0.2', 8086, 'yuxiaoqi', '0814xqYu'))
    trade_date = context.now.strftime('%Y-%m-%d')
    # print(trade_date)
    context.stock_lst = index_components('000300.XSHG', trade_date)
    # print(context.stock_lst)
    # factor_ret = rqd.get_factor_exposure(id_or_symbols=context.stock_lst, start_date=trade_date,
    #                                      end_date=trade_date,
    #                                      factors=['momentum'])
    # indexes = list(factor_ret.index)
    # values = list(factor_ret['momentum'])
    #
    # context.cached = defaultdict(list)
    # for idx, val in enumerate(indexes):
    #     book_id, date = val
    #     factor = values[idx]
    #     context.cached[date.strftime('%Y%m%d')].append((book_id, factor))
    query_fundamental(context)
    context.b_price = get_price('000300.XSHG',
                                start_date=trade_date,
                                end_date=trade_date,
                                fields='close').values[0]
    context.mtm = context.b_price * 300
Esempio n. 5
0
def update_bundle(data_bundle_path, rqdatac_uri, compression, concurrency):
    try:
        import rqdatac
    except ImportError:
        click.echo(
            _('rqdatac is required to update bundle. '
              'you can visit https://www.ricequant.com/welcome/rqdata to get rqdatac, '
              'or use "rqalpha download-bundle" to download monthly updated bundle.'
              ))
        return 1

    try:
        init_rqdatac_env(rqdatac_uri)
        rqdatac.init()
    except ValueError as e:
        click.echo(_('rqdatac init failed with error: {}').format(e))
        return 1

    if not os.path.exists(os.path.join(data_bundle_path, 'bundle')):
        click.echo(
            _('bundle not exist, use "rqalpha create-bundle" command instead'))
        return 1

    from rqalpha.data.bundle import update_bundle as update_bundle_
    update_bundle_(os.path.join(data_bundle_path, 'bundle'), False,
                   compression, concurrency)
Esempio n. 6
0
    def __init__(self, isSub=False):
        if not isSub:
            rq.init()
        else:
            rq.reset()

        self.columns = ["close", "open", "high", "low", "volume"]
        self.tickColumns = [
            "last", "open", "high", "low", "volume", "asks", "ask_vols",
            "bids", "bid_vols"
        ]

        self.HisKline = None
        self.HisKlineTime = None
        self.currentKline = {}
        self.preKline = None
        self.validDate = None
        self.kPeriod = 1
        self.TimeArea = []
        self.TimeDiffArea = []
        self.indexCodeList, self.indexMcodes = [], []  # 指数期货对应的行情代码
        self.indexMap = {}

        self.HisKlineTime = {}
        self.HisKline = {}
        # tick 触发持续状态,进程结束时返回false,用于终止ctp窗口
        self.tickStatus = True
Esempio n. 7
0
def for_test(mongo_url, db, _days, implied):
    rqdatac.init(uri='tcp://*****:*****@dev:16010')
    test = 'test'
    '''find n trading days before today'''
    my_mongo = CustomizedMongo(mongo_url, db, test)
    trading_days = list(get_previous_trading_days_customized(int(_days)))
    try:
        print('data_processing')
        data_processing(my_mongo, trading_days, implied, upsert=True)
    except ValueError:
        print('today\'s data is not reachable yet')
Esempio n. 8
0
def init_rqdatac(rqdatac_uri):
    try:
        import rqdatac
    except ImportError:
        return

    try:
        init_rqdatac_env(rqdatac_uri)
        rqdatac.init()
    except Exception as e:
        system_log.warn(_('rqdatac init failed, some apis will not function properly: {}').format(str(e)))
def get_barra_exposure(stock_list, date):

    rqdatac.init('rice', 'rice', ('192.168.10.64', 16008))

    style_factors = [
        'CNE5S_BETA', 'CNE5S_MOMENTUM', 'CNE5S_SIZE', 'CNE5S_EARNYILD',
        'CNE5S_RESVOL', 'CNE5S_GROWTH', 'CNE5S_BTOP', 'CNE5S_LEVERAGE',
        'CNE5S_LIQUIDTY', 'CNE5S_SIZENL'
    ]

    style_exposure = rqdatac.barra.get_factor_exposure(stock_list, date, date,
                                                       style_factors)

    style_exposure.index = style_exposure.index.droplevel('date')

    return style_exposure
Esempio n. 10
0
def init_rqdatac(rqdatac_uri):
    try:
        import rqdatac
    except ImportError:
        return

    import warnings

    try:
        init_rqdatac_env(rqdatac_uri)
        with warnings.catch_warnings(record=True):
            rqdatac.init()
    except Exception as e:
        system_log.warn(
            _('rqdatac init failed, some apis will not function properly: {}').
            format(str(e)))
Esempio n. 11
0
def init_rqdatac(rqdatac_uri):
    try:
        import rqdatac
    except ImportError:
        system_log.info(
            _('rqdatac is not available, some apis will not function properly')
        )
        return

    try:
        init_rqdatac_env(rqdatac_uri)
        rqdatac.init()
    except ValueError as e:
        system_log.warn(
            _('rqdatac init failed, some apis will not function properly: {}').
            format(str(e)))
def get_gics_exposure(stock_list, date):
    rqdatac.init('rice', 'rice', ('192.168.10.64', 16008))

    industry_factors = [
        'CNE5S_ENERGY', 'CNE5S_CHEM', 'CNE5S_CONMAT', 'CNE5S_MTLMIN',
        'CNE5S_MATERIAL', 'CNE5S_AERODEF', 'CNE5S_BLDPROD', 'CNE5S_CNSTENG',
        'CNE5S_ELECEQP', 'CNE5S_INDCONG', 'CNE5S_MACH', 'CNE5S_TRDDIST',
        'CNE5S_COMSERV', 'CNE5S_AIRLINE', 'CNE5S_MARINE', 'CNE5S_RDRLTRAN',
        'CNE5S_AUTO', 'CNE5S_HOUSEDUR', 'CNE5S_LEISLUX', 'CNE5S_CONSSERV',
        'CNE5S_MEDIA', 'CNE5S_RETAIL', 'CNE5S_PERSPRD', 'CNE5S_BEV',
        'CNE5S_FOODPROD', 'CNE5S_HEALTH', 'CNE5S_BANKS', 'CNE5S_DVFININS',
        'CNE5S_REALEST', 'CNE5S_SOFTWARE', 'CNE5S_HDWRSEMI', 'CNE5S_UTILITIE'
    ]

    industry_exposure = rqdatac.barra.get_factor_exposure(
        stock_list, date, date, industry_factors)

    industry_exposure.index = industry_exposure.index.droplevel('date')

    return industry_exposure
Esempio n. 13
0
def get_data(start, end, symbol, exchange, level):
    """ using rqdatac to make an example """
    import rqdatac as rq
    from rqdatac import get_price, id_convert
    username = "******"
    password = "******" \
               "t7AbdBZEBqRK74fIJH5vsaAfFQgl-tuB8l03axrW8cyN6-nBUho_6Y5VCRI63Mx_PN54nsQOpc1psIGEz" \
               "gND8c6Y=bqMVlABkpSlrDNk4DgG-1QXNknJtk0Kkw2axvFDa0E_XPMqOcBxifuRa_DFI2svseXU-8A" \
               "eLjchnTkeuvQkKh6nrfehVDiXjoMeq5sXgqpbgFAd4A5j2B1a0gpE3cb5kXb42n13fGwFaGris" \
               "8-eKzz_jncvuAamkJEQQV0aLdiw="
    host = "rqdatad-pro.ricequant.com"
    port = 16011
    rq.init(username, password, (host, port))
    symbol_rq = id_convert(symbol)
    data = get_price(symbol_rq,
                     start_date=start,
                     end_date=end,
                     frequency=level,
                     fields=None,
                     adjust_type='pre',
                     skip_suspended=False,
                     market='cn',
                     expect_df=False)
    origin = data.to_dict(orient='records')
    result = []
    for x in origin:
        do = {}
        do['open_price'] = x['open']
        do['low_price'] = x['low']
        do['high_price'] = x['high']
        do['close_price'] = x['close']
        do['datetime'] = datetime.strptime(str(x['trading_date']),
                                           "%Y-%m-%d %H:%M:%S")
        do['symbol'] = symbol
        do['local_symbol'] = symbol + "." + exchange
        do['exchange'] = exchange
        result.append(do)
    return result
Esempio n. 14
0
def create_bundle(data_bundle_path, rqdatac_uri, compression, concurrency):
    """create bundle using rqdatac"""
    try:
        import rqdatac
    except ImportError:
        click.echo(
            _('rqdatac is required to create bundle. '
              'you can visit https://www.ricequant.com/welcome/rqdata to get rqdatac, '
              'or use "rqalpha download-bundle" to download monthly updated bundle.'
              ))
        return 1

    try:
        init_rqdatac_env(rqdatac_uri)
        rqdatac.init()
    except ValueError as e:
        click.echo(_('rqdatac init failed with error: {}').format(e))
        return 1

    os.makedirs(os.path.join(data_bundle_path, 'bundle'), exist_ok=True)
    from rqalpha.data.bundle import update_bundle as update_bundle_
    update_bundle_(os.path.join(data_bundle_path, 'bundle'), True, compression,
                   concurrency)
Esempio n. 15
0
    def start_up(self, env, mod_config):
        if os.environ.get("RQDATAC2_CONF") or os.environ.get("RQDATAC_CONF"):
            system_log.info('rqdatac use RQDATAC2_CONF or RQDATAC_CONF')
            rqdatac.init()
        else:
            addr = (mod_config.rqdata_client_addr, mod_config.rqdata_client_port)
            env.system_log.info('rqdatac use address {}', addr)
            rqdatac.init(
                username=mod_config.rqdata_client_username,
                password=mod_config.rqdata_client_password,
                addr=addr,
                lazy=True
            )

        # noinspection PyUnresolvedReferences
        from rqdatac import fundamentals, Fundamentals, financials, Financials, fenji, query
        from rqalpha.api.api_base import register_api

        register_api("fundamentals", fundamentals)
        register_api("Fundamentals", Fundamentals)
        register_api("financials", financials)
        register_api("Financials", Financials)
        register_api("fenji", fenji)
        register_api("query", query)
                    (data_filter['spread_on'] < 0) &
                    (data_filter['spread_pre'] > 0.001 * order)).sum()
                if (data_filter['spread_pre'] > 0.001 * order).sum():
                    statistical_details.loc[order, 'ratio_inverse'] = statistical_details.loc[order, 'count_inverse'] \
                                                                      / statistical_details.loc[order, 'count_all']
                    statistical_details.loc[
                        order, 'return_avg'] = data_filter['spread_on'][
                            data_filter['spread_pre'] > 0.001 * order].mean()
        statistical_details.drop(index=[0], inplace=True)
        statistical_dict[time_on] = statistical_details

    return statistical_dict


if __name__ == '__main__':
    rq.init("ricequant", "8ricequant8", ('10.29.135.119', 16010))

    # 参数 回测区间及合约代码
    startDate = '20170101'
    endDate = '20200531'
    underlyingList = ('IF', 'IH')
    timeYes = "14:59:00"
    timeList = [
        "09:31:00", "09:35:00", "09:40:00", "09:45:00", "09:50:00", "09:55:00",
        "10:00:00"
    ]

    underlying_list = underlyingList
    start_date = startDate
    end_date = endDate
    time_list = timeList
Esempio n. 17
0
from time import time

import rqdatac as rq

from vnpy.trader.database import DbBarData, DB

USERNAME = ""
PASSWORD = ""
FIELDS = ["open", "high", "low", "close", "volume"]

rq.init(USERNAME, PASSWORD, ("rqdatad-pro.ricequant.com", 16011))


def generate_bar_from_row(row, symbol, exchange):
    """"""
    bar = DbBarData()

    bar.symbol = symbol
    bar.exchange = exchange
    bar.interval = "1m"
    bar.open_price = row["open"]
    bar.high_price = row["high"]
    bar.low_price = row["low"]
    bar.close_price = row["close"]
    bar.volume = row["volume"]
    bar.datetime = row.name.to_pydatetime()
    bar.gateway_name = "DB"
    bar.vt_symbol = f"{symbol}.{exchange}"

    return bar
Esempio n. 18
0
import numpy as np
import pandas as pd
import scipy.optimize as sc_opt
from datetime import datetime
from datetime import timedelta

import rqdatac

rqdatac.init('rice', 'rice', ('192.168.10.64', 16030))


def get_shenwan_industry_exposure(stock_list, date):

    industry_classification = rqdatac.shenwan_instrument_industry(
        stock_list, date)

    if date > '2014-01-01':

        shenwan_industry_name = ['农林牧渔', '采掘', '化工', '钢铁', '有色金属', '电子', '家用电器', '食品饮料', '纺织服装', '轻工制造',\
                                 '医药生物', '公用事业', '交通运输', '房地产', '商业贸易', '休闲服务','综合', '建筑材料',  '建筑装饰', '电气设备',\
                                 '国防军工', '计算机', '传媒', '通信', '银行', '非银金融', '汽车', '机械设备']
    else:

        shenwan_industry_name = [
            '金融服务', '房地产', '医药生物', '有色金属', '餐饮旅游', '综合', '建筑建材', '家用电器',
            '交运设备', '食品饮料', '电子', '信息设备', '交通运输', '轻工制造', '公用事业', '机械设备',
            '纺织服装', '农林牧渔', '商业贸易', '化工', '信息服务', '采掘', '黑色金属'
        ]

    industry_exposure_df = pd.DataFrame(0,
                                        index=industry_classification.index,
# encoding: UTF-8
import rqdatac as rq
from rqdatac import *
import pandas as pd
import sys
import datetime
import os

DATA_PATH = "E:\\future_data\\all_data\\"
NO_MAKER_DATA_PATH = "other_table\\"
SAVE_PATH = DATA_PATH + NO_MAKER_DATA_PATH
reload(sys)
loop_count = 0
sys.setdefaultencoding('utf8')
rq.init()
need_to_monitor_future_list = [
    'RB', 'TA', 'CF', 'L', 'PP', 'M', 'Y', 'AG', 'MA', 'SR'
]
margin_rate_list = []
contract_multiplier_list = []
symbol_list = []
time_of_today = datetime.datetime.now().strftime("%Y%m%d")


def get_current_domain_future_info():
    for temp_future in need_to_monitor_future_list:
        temp_future_name = rq.get_dominant_future(temp_future,
                                                  time_of_today)[-1]
        temp_info = rq.instruments(temp_future_name)
        margin_rate = temp_info.margin_rate  # 保证金率
        contract_multiplier = temp_info.contract_multiplier  # 合约乘数
Esempio n. 20
0
from intermediate_variables import *
from operators import *

import numpy as np
import pandas as pd
from datetime import datetime
from datetime import timedelta


import rqdatac
rqdatac.init("ricequant", "Ricequant123", ('rqdatad-pro.ricequant.com', 16004))


def get_market_portfolio_beta(stock_excess_return, market_portfolio_excess_return, market_cap_on_current_day):

    exp_weight = get_exponential_weight(half_life=63, length=252)

    weighted_stock_excess_return = stock_excess_return.T.multiply(exp_weight).T

    weighted_market_portfolio_excess_return = market_portfolio_excess_return.multiply(exp_weight).T

    weighted_market_portfolio_variance = weighted_market_portfolio_excess_return.var()

    beta = [weighted_market_portfolio_excess_return.cov(
        weighted_stock_excess_return[stock]) / weighted_market_portfolio_variance for stock in
            stock_excess_return.columns]

    market_portfolio_beta = pd.Series(beta, index=stock_excess_return.columns)

    market_portfolio_beta_exposure = winsorization_and_market_cap_weighed_standardization(market_portfolio_beta,
import rqdatac
from rqdatac import *
rqdatac.init("ricequant", "8ricequant8")

import datetime as dt
import itertools
import matplotlib.pyplot as plt
import numpy as np
from math import *
import pandas as pd
from optimizer_tests.stock_test.ptfopt_cov_shrink import *


def get_stock_test_suite(start_t='2013-01-01', end_t='2017-07-05'):
    """
    get alive stock test suite between dates (for test use between 20140101 to 2017)
    make sure it has IPO for at least one year and is never ST between dates
    :param start_t:
    :param end_t:
    :return: dic
        return a dic, key is 0-99.
        0 is the biggest 100
        1 is the second 101 ~ 200 stocks
        2 is the smallest -200 ~ -101 stocks
        3 is the smallest -100 ~ -1 stocks
        4 is the biggest 50 + smallest 50
        5 ~ 99 is the 28*3 combo (28: shenwan_industry category, 3: we split each cate by market cap)
    """
    # get all stocks
    all_stocks0 = list(all_instruments(type='CS').order_book_id)
Esempio n. 22
0
# 加载配置
config = open('config.json')
setting = json.load(config)

MONGO_HOST = setting['MONGO_HOST']
MONGO_PORT = setting['MONGO_PORT']
SYMBOLS = setting['SYMBOLS']

mc = MongoClient(MONGO_HOST, MONGO_PORT)  # Mongo连接
db = mc[MINUTE_DB_NAME]  # 数据库
db2 = mc[DAILY_DB_NAME]

USERNAME = setting['USERNAME']
PASSWORD = setting['PASSWORD']
rq.init(USERNAME, PASSWORD)

FIELDS = ['open', 'high', 'low', 'close', 'volume']


#----------------------------------------------------------------------
def generateVtBar(row, symbol):
    """生成K线"""
    bar = VtBarData()

    bar.symbol = symbol
    bar.vtSymbol = symbol
    bar.open = row['open']
    bar.high = row['high']
    bar.low = row['low']
    bar.close = row['close']
Esempio n. 23
0
from time import time

import rqdatac as rq

from fcs_trade.trader.object import BarData
from fcs_trade.trader.constant import Exchange, Interval
from fcs_trade.trader.database import database_manager

USERNAME = ""
PASSWORD = ""
FIELDS = ["open", "high", "low", "close", "volume"]

rq.init(USERNAME, PASSWORD, ("rqdatad-pro.ricequant.com", 16011))


def generate_bar_from_row(row, symbol, exchange):
    """"""
    bar = BarData(symbol=symbol,
                  exchange=Exchange(exchange),
                  interval=Interval.MINUTE,
                  open_price=row["open"],
                  high_price=row["high"],
                  low_price=row["low"],
                  close_price=row["close"],
                  volume=row["volume"],
                  datetime=row.name.to_pydatetime(),
                  gateway_name="DB")
    return bar


def download_minute_bar(vt_symbol):
Esempio n. 24
0
def main():
    rq.init()
    update_minute_lib()
    update_daily_lib()
Esempio n. 25
0
# -*- coding:utf-8 -*-
from factor.base_factor import BaseFactor
from data.data_module import DataModule
import rqdatac as rqd

rqd.init()
"""
PE因子
"""


class PEFactor(BaseFactor):
    def __init__(self):
        BaseFactor.__init__(self, 'pe_ratio_ttm')

    def compute_one_day(self, date):
        # 用不到,只是为了练习,实际取米筐数据存
        # dm = DataModule()
        # 某天所有股票数据
        # df_daily = dm.get_all_price_one_day(date)
        stocklist = rqd.all_instruments('CS', date)['order_book_id'].tolist()
        pe = rqd.get_factor(stocklist, self.name, date, date)
        factors = []
        for code in pe.index:
            factors.append({
                'date': date,
                'code': code,
                self.name: round(pe[code], 2)
            })

        return factors
Esempio n. 26
0
#coding=utf-8

import rqdatac
from rqdatac import *
rqdatac.init()
from rqalpha.api import *

import numpy as np
import pandas as pd
import lightgbm
import talib
from sklearn import metrics


def init(context):
    # 在context中保存全局变量
    context.symbols = list(get_all_ins(context).index.values)
    context.train_days = 40  #用45-5日前的数据做训练
    context.test_days = 5  #预测五日收益
    scheduler.run_weekly(rebalance, 1)
    # 实时打印日志
    logger.info("there are : {}".format(len(context.symbols)))


def rebalance(context, bar_dict):
    '''    换仓    '''
    #训练预测
    train_x, train_y, test_x = get_data(context)

    test_y_pred = fit_transform(context, train_x, train_y, test_x)
Esempio n. 27
0
#%%
import rqdatac as rq 
from rqdatac import * 
rq.init('13581903798','hun829248')
import talib
import pandas as pd
import numpy as np
#%%
data = get_price("RB2010", start_date="2020-01-02", end_date="2020-01-03", frequency="tick")
#%%
# rb888_excel = pd.ExcelWriter('D:\\期货自动化交易\\8-CTA_Development\\1-常用模板\\1-rqdata\\螺纹钢期货tick数据.xlsx')  # 定义一个向Excel写入数据的对象
# data.to_excel(rb888_excel, "RB888tick数据")  # 向该Excel中写入df1到Data1这个sheet
# rb888_excel.save()  # 保存Excel表格
# rb888_excel.close()  # 关闭Excel表格
#%%
print(data)
#%%
data['cci'] = talib.CCI(data['high'], data['low'], data['close'], timeperiod=14)
print("cci值为:", data['cci'])
data1 = np.array(data['cci'])
print("data1:", data1)
print("data1[-1]:", data1[-1])
print("data1[-2]:", data1[-2])
print("data1[-3]:", data1[-3])

a = data1[-1]
b = data1[-2]
c = data1[-3]

print(data1[-1] < 100)
# %%
Esempio n. 28
0
from rqdatac import *

import talib

import datetime
import pandas as pd
import numpy as np
from pandas.tseries.offsets import *

import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

############################## Initialize rqdatac and plotly environments ################################
# initialize rqdatac to enable online functions such as get_price() and get_next_trading_date()
rqdatac.init('xinjin', '123456', ('172.19.182.162', 16003))

# initialize plotly to enable offline mode
init_notebook_mode(connected=True)
############################## Initialize rqdatac and plotly environments ################################

## helper functions
# keep only year and moth(year-month) as string of datetime object
# return example: 2017-01-01
def date2ym_str(date):
    y = date.year
    m = date.month
    ym = '{}-{}'.format(y, m)
    return ym

def date2ymd_str(date):
Esempio n. 29
0
                                                 TICK_DB_NAME)

import rqdatac as rq

# 加载配置
config = open('config.json')
setting = json.load(config)

mc = MongoClient()                  # Mongo连接
dbMinute = mc[MINUTE_DB_NAME]       # 数据库
dbDaily = mc[DAILY_DB_NAME]
dbTick = mc[TICK_DB_NAME]

USERNAME = setting['rqUsername']
PASSWORD = setting['rqPassword']
rq.init(USERNAME, PASSWORD)

FIELDS = ['open', 'high', 'low', 'close', 'volume']

#----------------------------------------------------------------------
def generateVtBar(row, symbol):
    """生成K线"""
    bar = VtBarData()
    
    bar.symbol = symbol
    bar.vtSymbol = symbol
    bar.open = row['open']
    bar.high = row['high']
    bar.low = row['low']
    bar.close = row['close']
    bar.volume = row['volume']
Esempio n. 30
0
import rqdatac as rd
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
import numpy as np
import keras
import matplotlib.pyplot as plt
import pandas as pd

rd.init()

spot_input_data = rd.get_price('510050.XSHG',
                               start_date='2015-06-01',
                               end_date='2019-01-23',
                               frequency='10m')
future_data = rd.get_price('IH88',
                           start_date='2015-06-01',
                           end_date='2019-01-23',
                           frequency='10m')
future_data.drop(columns=['trading_date', 'limit_up', 'limit_down'],
                 inplace=True)
spot_output_data = rd.get_price('510050.XSHG',
                                start_date='2015-06-02',
                                end_date='2019-01-24',
                                frequency='1d',
                                fields=['open', 'close'])
spot_output_data = spot_output_data['close'] > spot_output_data['open']


def combine_spot_future(spot, future, direction):
    spot1 = spot.copy()
Esempio n. 31
0
import numpy as np
import pandas as pd
import rqdatac
from rqdatac import *
rqdatac.init('ricequant', '8ricequant8')




def get_risk_indicators(previous_weight, current_weight, cov_matrix, asset_type):
    """
    Calculate the risk indicators
    :param previous_weight: list or array
    :param current_weight: list or array
    :param cov_matrix: data_frame
    :param asset_type: str
                    'fund' or 'stock'
    :return: list
            HRCs, HRCGs, Herfindahl, turnover_rate
    """

    # change list to array for later process
    # previous_weight_array = np.array(previous_weight)
    current_weight_array = np.array(current_weight)

    # refer to paper formula 2.19 2.20
    production_i = current_weight_array * (cov_matrix.dot(current_weight_array))
    productions = current_weight_array.dot(cov_matrix).dot(current_weight_array)


    # calculate individual's risk contributions
Esempio n. 32
0
# encoding: UTF-8

# 在python3下运行
import rqdatac
from rqdatac import *
rqdatac.init('Dajia','------')

# 获取螺纹钢的指数数据,15分钟周期
df = get_price('RB99', start_date='2009-01-01', end_date='2017-03-12', frequency='15m')
# 导出到文件
df.to_csv('RB99_20090101_20170312_M15.csv')