201501105

This commit is contained in:
msincenselee 2015-11-05 00:28:12 +08:00
parent 20e18eefa3
commit 43f96b1e05
5 changed files with 158 additions and 28 deletions

5
.gitignore vendored
View File

@ -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

View 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()

View File

@ -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

View File

@ -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()

View File

@ -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: # 平空仓 Cover
amount = 0 -float(tradeItem['Price'])*int(tradeItem['Volume'])
else: 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'])