from jqdatasdk import * from datetime import datetime as dt import pandas as pd from jqdatasdk.technical_analysis import * from sqlalchemy import create_engine import threading auth('18616891214', 'Ea?*7f68nD.dafcW34d!') # futures = ['IF9999.CCFX', 'IC9999.CCFX','IH9999.CCFX', 'IM9999.CCFX', 'FU9999.XSGE', 'RB9999.XSGE', 'MA9999.XZCE', 'TA9999.XZCE', 'SA9999.XZCE', 'M9999.XDCE', 'LH9999.XDCE'] # futures = ['IF9999.CCFX', 'IC9999.CCFX','IH9999.CCFX', 'IM9999.CCFX'] futures = ['FU9999.XSGE', 'RB9999.XSGE', 'MA9999.XZCE', 'TA9999.XZCE', 'SA9999.XZCE', 'M9999.XDCE', 'LH9999.XDCE'] # futures = ['FU9999.XSGE'] engine = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/futures?charset=utf8') # 获取各stock的去包含dataframe fut = locals() print(dt.now(), '开始赋值!') for fre in ['30m']: for future in futures: try: fut[future] = pd.read_sql_query('select date,open,close,high,low,volume,money from `%s_%s`' % (future, fre), engine) except BaseException: continue print(dt.now(), '数据库数据已赋值!') # print(fut['IF9999.CCFX']) start = dt.now() print(start) for f in futures: fut[f] = pd.concat([fut[f], pd.DataFrame(columns=['MA5', 'derta'])],axis=1) print(fut[f]) for i in range(len(fut[f])): MA1 = MA(f, check_date=fut[f].loc[i, 'date'], timeperiod=5) MA1 = MA1[f] fut[f].loc[i, 'MA5'] = MA1 # print(fut[f].loc[i, ['close','high','low']]) if fut[f].loc[i, 'close'] > MA1: derta = fut[f].loc[i, 'high']/MA1 - 1 else: derta = (fut[f].loc[i, 'low']/MA1 -1) fut[f].loc[i, 'derta'] = derta print('___________________________________') print(fut[f]) fut[f].to_excel('/Users/daniel/Downloads/MA_derta/30m_%s.xlsx'% f) end= dt.now() print('总时长:', (end - start).seconds) # MA1 = MA('MA9999.XZCE', check_date='2022-09-25', timeperiod=5) # print(MA1['MA9999.XZCE'])