201501105
This commit is contained in:
parent
20e18eefa3
commit
43f96b1e05
5
.gitignore
vendored
5
.gitignore
vendored
@ -64,3 +64,8 @@ vn.lts/build/*
|
|||||||
*.pickle
|
*.pickle
|
||||||
=======
|
=======
|
||||||
>>>>>>> refs/remotes/vnpy/master
|
>>>>>>> refs/remotes/vnpy/master
|
||||||
|
vn.strategy/strategydemo/strategy01.py
|
||||||
|
tk.csv
|
||||||
|
vn.strategy/strategydemo/backtestingStrategy02.py
|
||||||
|
vn.strategy/strategydemo/strategy01.py
|
||||||
|
vn.strategy/strategydemo/strategy02.py
|
||||||
|
52
vn.data/mysql_createtable.py
Normal file
52
vn.data/mysql_createtable.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# encoding: UTF-8
|
||||||
|
|
||||||
|
import MySQLdb
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
try:
|
||||||
|
#连接数据库
|
||||||
|
conn = MySQLdb.connect(host='vnpy.cloudapp.net', user='stockcn', passwd='7uhb*IJN', db='stockcn', port=3306)
|
||||||
|
|
||||||
|
#获取指针
|
||||||
|
cur = conn.cursor(MySQLdb.cursors.DictCursor)
|
||||||
|
|
||||||
|
listSymbol = ['ag','al','au','ax','ay','b','bb','bu','c','cf','cs','cu','er','fb','fg','fu','hc','i','j','jd','jm','jr','l','lr','m','ma','me','ni','oi','p','pb','pm','pp','rb','ri','rm','ro','rs','ru','sf','sm','sn','sr9','sr','srx','sry','ta','tc','v','wh','wr','ws9','ws','wt','y','zn']
|
||||||
|
|
||||||
|
strSQL = 'CREATE TABLE if not exists TB_{0}{1}( ' \
|
||||||
|
'datetime datetime not null,' \
|
||||||
|
' date date Not NULL,' \
|
||||||
|
' time time Not NULL,' \
|
||||||
|
' open numeric(18, 3) NULL,' \
|
||||||
|
' high numeric(18, 3) NULL,' \
|
||||||
|
' low numeric(18, 3) NULL,' \
|
||||||
|
' close numeric(18, 3) NULL,' \
|
||||||
|
' volume int null,' \
|
||||||
|
' CONSTRAINT PK_TB_{0}{1} PRIMARY KEY (datetime)' \
|
||||||
|
' );'
|
||||||
|
|
||||||
|
for symbol in listSymbol:
|
||||||
|
|
||||||
|
print symbol, 'M1'
|
||||||
|
#执行脚本
|
||||||
|
cur.execute(strSQL.format(symbol, 'M1'))
|
||||||
|
conn.commit
|
||||||
|
|
||||||
|
print symbol, 'M5'
|
||||||
|
cur.execute(strSQL.format(symbol, 'M5'))
|
||||||
|
conn.commit
|
||||||
|
|
||||||
|
|
||||||
|
#关闭指针,关闭连接
|
||||||
|
cur.close()
|
||||||
|
conn.close()
|
||||||
|
except MySQLdb.Error, e:
|
||||||
|
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
@ -1,25 +1,65 @@
|
|||||||
# encoding: UTF-8
|
# encoding: UTF-8
|
||||||
import tushare as ts
|
import tushare as ts
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import ipdb
|
#import ipdb
|
||||||
|
import datetime
|
||||||
data = ts.get_hist_data('600848', start='2015-04-01', end='2015-10-20') #一次性获取全部日k线数据
|
|
||||||
|
|
||||||
print data.tail(10)
|
|
||||||
|
|
||||||
data.plot()
|
|
||||||
|
|
||||||
data.high.plot()
|
|
||||||
|
|
||||||
with pd.plot_params.use('x_compat',True):
|
|
||||||
data.open.plot(color = 'g')
|
|
||||||
data.close.plot(color = 'y')
|
|
||||||
data.high.plot(color = 'r')
|
|
||||||
data.low.plot(color = 'b')
|
|
||||||
|
|
||||||
|
|
||||||
with pd.plot_params.use('x_compat',True):
|
|
||||||
data.high.plot(color ='r', figsize = (10,4), grid ='on')
|
|
||||||
data.low.plot(color ='b', figsize = (10,4), grid ='on')
|
|
||||||
|
|
||||||
|
#data = ts.get_hist_data('600848', start='2015-04-01', end='2015-10-20') #一次性获取全部日k线数据
|
||||||
|
#
|
||||||
|
#print data.tail(10)
|
||||||
|
#
|
||||||
|
#data.plot()
|
||||||
|
#
|
||||||
|
#data.high.plot()
|
||||||
|
#
|
||||||
|
#with pd.plot_params.use('x_compat',True):
|
||||||
|
# data.open.plot(color = 'g')
|
||||||
|
# data.close.plot(color = 'y')
|
||||||
|
# data.high.plot(color = 'r')
|
||||||
|
# data.low.plot(color = 'b')
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#with pd.plot_params.use('x_compat',True):
|
||||||
|
# data.high.plot(color ='r', figsize = (10,4), grid ='on')
|
||||||
|
# data.low.plot(color ='b', figsize = (10,4), grid ='on')
|
||||||
|
#
|
||||||
#ipdb.set_trace()
|
#ipdb.set_trace()
|
||||||
|
#
|
||||||
|
|
||||||
|
ts.set_token('21768410ff5c2acb686264fa97635fa917a2ba1ae5122fa187b45849d92cfc70')
|
||||||
|
|
||||||
|
md = ts.Market()
|
||||||
|
|
||||||
|
#data = md.MktFutd(ticker='au1512',beginDate='20151008', endDate='20151028',
|
||||||
|
# field='tradeDate,ticker,openPrice,highestPrice,lowestPrice,closePrice,preClosePrice,CHG,CHG1,CHGPct')
|
||||||
|
|
||||||
|
data = md.MktFutd(tradeDate='20140201',
|
||||||
|
field='tradeDate,ticker,openPrice,highestPrice,lowestPrice,closePrice,preClosePrice,CHG,CHG1,CHGPct')
|
||||||
|
|
||||||
|
|
||||||
|
#data['TR'] = abs(data['closePrice']-data['openPrice'])
|
||||||
|
|
||||||
|
#atr = data.tail(10)['TR'].sum()/10
|
||||||
|
|
||||||
|
tradeDate= str(data.tail(1)['tradeDate'].values[0])
|
||||||
|
|
||||||
|
predate = datetime.datetime.strptime(tradeDate, '%Y-%m-%d')
|
||||||
|
|
||||||
|
preOpen = float(data.tail(1)['openPrice'])
|
||||||
|
preHigh = float(data.tail(1)['highestPrice'])
|
||||||
|
preLow = float(data.tail(1)['lowestPrice'])
|
||||||
|
preClose = float(data.tail(1)['closePrice'])
|
||||||
|
|
||||||
|
print data
|
||||||
|
|
||||||
|
#print atr
|
||||||
|
|
||||||
|
print predate
|
||||||
|
print preOpen
|
||||||
|
print preHigh
|
||||||
|
print preLow
|
||||||
|
print preClose
|
||||||
|
|
||||||
|
print data.columns
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
# encoding: UTF-8
|
||||||
from api import *
|
from api import *
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
def test_config():
|
def test_config():
|
||||||
cfig = Config()
|
cfig = Config()
|
||||||
@ -99,9 +101,38 @@ def test_mktbar_M1_get_interM():
|
|||||||
api = PyApi(Config())
|
api = PyApi(Config())
|
||||||
api.get_equity_M1_interMonth(db=db, id=0, tasks=['000001.XSHE','000002.XSHE'])
|
api.get_equity_M1_interMonth(db=db, id=0, tasks=['000001.XSHE','000002.XSHE'])
|
||||||
|
|
||||||
|
def test_mktfutd():
|
||||||
|
|
||||||
|
api = PyApi(Config())
|
||||||
|
|
||||||
|
data = api.get_future_D1(ticker='au1512',start='20151010', end='20151029',field='tradeDate,ticker,openPrice,highestPrice,lowestPrice,closePrice,preClosePrice,CHG,CHG1,CHGPct').body.tail(10)
|
||||||
|
|
||||||
|
print data
|
||||||
|
|
||||||
|
#data['TR'] = abs(data['closePrice']-data['openPrice'])
|
||||||
|
|
||||||
|
#atr = 0.0
|
||||||
|
|
||||||
|
#atr = (data['TR'].sum())/10
|
||||||
|
|
||||||
|
#print atr
|
||||||
|
|
||||||
|
def test_MktEqudGet():
|
||||||
|
|
||||||
|
api = PyApi(Config())
|
||||||
|
|
||||||
|
# DataAPI.MktEqudGet返回pandas.DataFrame格式
|
||||||
|
MarketEqud = api.get_equity_D1(secID = "000002.XSHE",
|
||||||
|
field = ["shortNM", "closePrice", "turnoverValue", "capitalInflow"],
|
||||||
|
start = "20000106",
|
||||||
|
end = "20140110").body
|
||||||
|
|
||||||
|
# 绘制返回的数据
|
||||||
|
plt(MarketEqud, settings = {'x':'tradeDate','y':'closePrice', 'title':u'万科历史收盘价格'})
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
#test_config()
|
#test_config()
|
||||||
test_mktbar_D1()
|
#test_mktbar_D1()
|
||||||
#test_bond_D1()
|
#test_bond_D1()
|
||||||
#test_fut_D1()
|
#test_fut_D1()
|
||||||
#test_fund_D1()
|
#test_fund_D1()
|
||||||
@ -117,3 +148,5 @@ if __name__ == '__main__':
|
|||||||
#test_mktbar_M1_get_drudgery()
|
#test_mktbar_M1_get_drudgery()
|
||||||
#test_mktbar_M1_get_all()
|
#test_mktbar_M1_get_all()
|
||||||
#test_mktbar_M1_get_interM()
|
#test_mktbar_M1_get_interM()
|
||||||
|
#test_mktfutd()
|
||||||
|
test_MktEqudGet()
|
||||||
|
@ -553,15 +553,15 @@ class BacktestingEngine(object):
|
|||||||
|
|
||||||
if tradeItem['Direction'] == '0':
|
if tradeItem['Direction'] == '0':
|
||||||
|
|
||||||
if tradeItem['OffsetFlag'] == '0' :
|
if tradeItem['OffsetFlag'] == '0': # 开多仓 Buy
|
||||||
amount = 0-float(tradeItem['Price'])*int(tradeItem['Volume'])
|
amount = 0-float(tradeItem['Price'])*int(tradeItem['Volume'])
|
||||||
else:
|
else: # 平空仓 Cover
|
||||||
|
amount = 0 -float(tradeItem['Price'])*int(tradeItem['Volume'])
|
||||||
|
else:
|
||||||
|
if tradeItem['OffsetFlag'] == '0': # 开空 Short
|
||||||
amount = float(tradeItem['Price'])*int(tradeItem['Volume'])
|
amount = float(tradeItem['Price'])*int(tradeItem['Volume'])
|
||||||
else :
|
else: # 平多 sell
|
||||||
if tradeItem['OffsetFlag'] == '0' :
|
|
||||||
amount = float(tradeItem['Price'])*int(tradeItem['Volume'])
|
amount = float(tradeItem['Price'])*int(tradeItem['Volume'])
|
||||||
else:
|
|
||||||
amount = 0 - float(tradeItem['Price'])*int(tradeItem['Volume'])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user