1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > A股 港股 美股策略回测 RSI KDJ EMA 美股行情 美股数据 通达信转python

A股 港股 美股策略回测 RSI KDJ EMA 美股行情 美股数据 通达信转python

时间:2019-12-15 10:52:09

相关推荐

A股 港股 美股策略回测 RSI KDJ EMA 美股行情 美股数据 通达信转python

/download/repay3/16460847

A股 港股 K线数据

/download/repay3/16452858

美股策略回测 rsi kdj sma 美股行情 美股数据 通达信

AAPL 日线策略SMA 5 SMA 10 买卖回测图

AAPL 期权日线和15分钟数据

futu-api 富途程式交易核心代码 + SMA 5 10 策略

def place_(symbol, price, cash, side):global TRD_ENVvolume = int(cash//price) if side == 'buy' else get_one(symbol)trd_side = TrdSide.SELL if side == 'sell' else TrdSide.BUYprint(symbol,price,trd_side,volume)if TRD_ENV==TrdEnv.REAL:ret,data_err=trd_ctx.place_order(price=0, qty=volume, code=symbol, trd_side=trd_side, order_type=OrderType.MARKET, trd_env=TRD_ENV)else:ret,data_err=trd_ctx.place_order(price=price, qty=volume, code=symbol, trd_side=trd_side, trd_env=TRD_ENV)if ret==-1:def_txt('place_order '+data_err)return(ret, data_err)def ma(df, n):MA = pd.Series(df['close'].rolling(n, min_periods=n).mean(), name='MA_' + str(n))df = df.join(MA)return dfdef slist_one(symbol):data=pd.DataFrame({})ret=-1while ret==-1:time.sleep(3.5)ret, data = quote_ctx.get_market_snapshot(symbol)if ret==-1:def_txt('slist_one -1 ')return(data)def five_back(df):# SMAif len(df)<10:print(' len < 10 ');returndf = ma(df,5);df = ma(df,10);print(df.tail(5))px_op=slist_one(symbol)if px_op.isnull().values.any():returnif df['MA_5'].iloc[i] > df['MA_10'].iloc[i] and df['MA_5'].iloc[i-1] < df['MA_10'].iloc[i-1]:# if df['MA_5'].iloc[i] > max(df['MA_10'].iloc[i], df['MA_20'].iloc[i], df['MA_30'].iloc[i], df['MA_60'].iloc[i]) and df['MA_5'].iloc[i-1] < max(df['MA_10'].iloc[i-1], df['MA_20'].iloc[i-1], df['MA_30'].iloc[i-1], df['MA_60'].iloc[i-1]):place_(symbol_op[0], px_op['ask_price'][0], 100, 'buy')elif df['MA_5'].iloc[i] < df['MA_10'].iloc[i] and df['MA_5'].iloc[i-1] > df['MA_10'].iloc[i-1]:place_(symbol, px_op['bid_price'][0], 100, 'sell')if __name__ == '__main__':FN_insert='FUTU.csv'# read local csv, or you can get data from web api# FN_insert='TSLA.csv'# switch to another csvsymbol=FN_insert.split('.')[0]print(type(symbol),symbol)with open(os.path.dirname(os.path.abspath(__file__))+'/'+FN_insert,'r') as csvfile:reader = csv.reader(csvfile)rows = [row for row in reader]csvfile.close()# rows=rows[-100:]# only get last 100 days dataif len(rows[-1]) < 4:for i in range(len(rows)):df=df.append({'datetime':rows[i][1],'close':float(rows[i][2])},ignore_index=True)else:for i in range(len(rows)):df=df.append({'datetime':rows[i][0],'open':float(rows[i][1]),'high':float(rows[i][2]),'low':float(rows[i][3]),'close':float(rows[i][4]),'volume':0},ignore_index=True)print(szm_hk(df))sys.exit()print(df.tail(5))def_all = 'symbol'+','+'trd side'+','+'price'+','+'position'+','+'remained position'+','+'datetime'+','+'balancesheet'+','+'profit'def_day(def_all);# write csv headlineprint('Backtest Running...')five_back(df);# call backtest functionprint('\nBacktest Done')

-------------------------------------------------------------------------------------------------

python futu-api 获取 港股 券商 席位 : 代码如下:

def exchange(word):if word.find('高盛')!=-1:new_word='GS'elif word.find('士丹利')!=-1:new_word='MS'elif word.find('摩根')!=-1:new_word='JP'elif word.find('花旗')!=-1:new_word='CT'elif word.find('瑞士信贷')!=-1:new_word='CS'elif word.find('汇丰')!=-1:new_word='HS'elif word.find('美林')!=-1:new_word='ML'elif word.find('国际金融')!=-1:new_word='CICC'elif word.find('中信证券')!=-1:new_word='csCN'elif word.find('中信証券经纪')!=-1:new_word='csHK'elif word.find('里昂')!=-1:new_word='csLY'elif word.find('中国投资')!=-1:new_word='CIC'elif word.find('创盈')!=-1:new_word='SZ--'elif word.find('耀才')!=-1:new_word='yaoC'elif word.find('工银')!=-1:new_word='ICBC'elif word.find('富途')!=-1:new_word='futu'elif word.find('中银')!=-1:new_word='BI'elif word.find('Eclipse')!=-1:new_word='Eclipse'elif word.find('Optiver')!=-1:new_word='Optiver'elif word.find('万邦')!=-1:new_word='TP ICAP'elif word.find('德意志')!=-1:new_word='DB'elif word.find('荷')!=-1:new_word='RB'elif word.find('巴黎')!=-1:new_word='BP'elif word.find('东亚')!=-1:new_word='EA'elif word.find('海通')!=-1:new_word='HT'elif word.find('华胜')!=-1:new_word='hst_'elif word.find('东方')!=-1:new_word='east'elif word.find('交银')!=-1:new_word='COMM'elif word.find('恒生')!=-1:new_word='heng'elif word.find('国泰')!=-1:new_word='guot'elif word.find('招银')!=-1:new_word='CMBI'elif word.find('招商')!=-1:new_word='CMB_'elif word.find('上银')!=-1:new_word='BOSC'elif word.find('巴克莱')!=-1:new_word='BC'elif word.find('法国兴业')!=-1:new_word='SG'elif word.find('盈透')!=-1:new_word='IB'elif word.find('瑞银')!=-1:new_word='UB'else:new_word=''return(new_word)ret, data_input = quote_ctx.get_order_book('HK.00700')ret_sub, err_message = quote_ctx.subscribe('HK.00700', [SubType.BROKER], subscribe_push=False)if k%4!=0:returnask1_tmp='';bid1_tmp=''dict1 ={}ret,bid1,ask1=quote_ctx.get_broker_queue('HK.00700')BS='A'one=10-item_lfor i in ask1[['ask_broker_pos','ask_broker_name']].values[::-1]:if i.tolist()[0]==one:ask1_tmp=ask1_tmp+' '+exchange(i.tolist()[1])list1=ask1_tmp.split(' ')for element in list1:if element not in dict1:dict1[element] = 1else:dict1[element] += 1dict_s= sorted(dict1.items(), key=lambda d:d[1], reverse = True)#Falseif len(dict_s)<6:print(one-1,BS,int(data_input_a['Ask'][one-1][1]/kx_l),dict_s)else:print(one-1,BS,int(data_input_a['Ask'][one-1][1]/kx_l),dict_s[0:6])dict1 ={}BS='B'one=item_r+1for i in bid1[['bid_broker_pos','bid_broker_name']].values:if i.tolist()[0]==one:bid1_tmp=bid1_tmp+' '+exchange(i.tolist()[1])list1=bid1_tmp.split(' ')for element in list1:if element not in dict1:dict1[element] = 1else:dict1[element] += 1dict_s= sorted(dict1.items(), key=lambda d:d[1], reverse = True)if len(dict_s)<6:print(one-1,BS,int(data_input_a['Bid'][one-1][1]/kx_l),dict_s,'\n')else:print(one-1,BS,int(data_input_a['Bid'][one-1][1]/kx_l),dict_s[0:6],'\n')##########BS='Ask'one=1for i in ask1[['ask_broker_pos','ask_broker_name']].values[::-1]:if i.tolist()[0]==one:ask1_tmp=ask1_tmp+' '+exchange(i.tolist()[1])list1=ask1_tmp.split(' ')for element in list1:if element not in dict1:dict1[element] = 1else:dict1[element] += 1dict_s= sorted(dict1.items(), key=lambda d:d[1], reverse = True)#Falseif len(dict_s)<6:print(dict_s)else:print(dict_s[0:6])dict1 ={}BS='Bid'one=1for i in bid1[['bid_broker_pos','bid_broker_name']].values:if i.tolist()[0]==one:bid1_tmp=bid1_tmp+' '+exchange(i.tolist()[1])list1=bid1_tmp.split(' ')for element in list1:if element not in dict1:dict1[element] = 1else:dict1[element] += 1dict_s= sorted(dict1.items(), key=lambda d:d[1], reverse = True)if len(dict_s)<6:print(dict_s,'\n')else:print(dict_s[0:6],'\n')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。