Skip to content

Commit

Permalink
修改BarData和TickData数据类型
Browse files Browse the repository at this point in the history
  • Loading branch information
vnpy-dev-01 committed May 15, 2017
1 parent 426f92c commit b043f45
Show file tree
Hide file tree
Showing 17 changed files with 111 additions and 188 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Release/
*.local
*.temp
*.vt
*.log

vn.ctp/build/*
vn.lts/build/*
Expand Down
9 changes: 5 additions & 4 deletions vnpy/trader/ctaStrategy/ctaBacktesting.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import pymongo

from vnpy.trader.vtGlobal import globalSetting
from vnpy.trader.vtObject import VtTickData, VtBarData
from vnpy.trader.vtConstant import *
from vnpy.trader.vtGateway import VtOrderData, VtTradeData

Expand Down Expand Up @@ -127,10 +128,10 @@ def loadHistoryData(self):

# 首先根据回测模式,确认要使用的数据类
if self.mode == self.BAR_MODE:
dataClass = CtaBarData
dataClass = VtBarData
func = self.newBar
else:
dataClass = CtaTickData
dataClass = VtTickData
func = self.newTick

# 载入初始化需要用的数据
Expand Down Expand Up @@ -163,10 +164,10 @@ def runBacktesting(self):

# 首先根据回测模式,确认要使用的数据类
if self.mode == self.BAR_MODE:
dataClass = CtaBarData
dataClass = VtBarData
func = self.newBar
else:
dataClass = CtaTickData
dataClass = VtTickData
func = self.newTick

self.output(u'开始回测')
Expand Down
2 changes: 0 additions & 2 deletions vnpy/trader/ctaStrategy/ctaBase.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@

# CTA引擎中涉及的数据类定义
from vnpy.trader.vtConstant import EMPTY_UNICODE, EMPTY_STRING, EMPTY_FLOAT, EMPTY_INT
from vnpy.trader.vtObject import VtBarData as CtaBarData
from vnpy.trader.vtObject import VtTickData as CtaTickData


########################################################################
Expand Down
18 changes: 7 additions & 11 deletions vnpy/trader/ctaStrategy/ctaEngine.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
from vnpy.event import Event
from vnpy.trader.vtEvent import *
from vnpy.trader.vtConstant import *
from vnpy.trader.vtObject import VtTickData, VtBarData
from vnpy.trader.vtGateway import VtSubscribeReq, VtOrderReq, VtCancelOrderReq, VtLogData
from vnpy.trader.vtFunction import todayDate

Expand Down Expand Up @@ -252,19 +253,14 @@ def processTickEvent(self, event):

# 推送tick到对应的策略实例进行处理
if tick.vtSymbol in self.tickStrategyDict:
# 将vtTickData数据转化为ctaTickData
ctaTick = CtaTickData()
d = ctaTick.__dict__
for key in d.keys():
if key != 'datetime':
d[key] = tick.__getattribute__(key)
# 添加datetime字段
ctaTick.datetime = datetime.strptime(' '.join([tick.date, tick.time]), '%Y%m%d %H:%M:%S.%f')
if not tick.datetime:
tick.datetime = datetime.strptime(' '.join([tick.date, tick.time]), '%Y%m%d %H:%M:%S.%f')

# 逐个推送到策略实例中
l = self.tickStrategyDict[tick.vtSymbol]
for strategy in l:
self.callStrategyFunc(strategy, strategy.onTick, ctaTick)
self.callStrategyFunc(strategy, strategy.onTick, tick)

#----------------------------------------------------------------------
def processOrderEvent(self, event):
Expand Down Expand Up @@ -330,7 +326,7 @@ def registerEvent(self):

#----------------------------------------------------------------------
def insertData(self, dbName, collectionName, data):
"""插入数据到数据库(这里的data可以是CtaTickData或者CtaBarData)"""
"""插入数据到数据库(这里的data可以是VtTickData或者VtBarData)"""
self.mainEngine.dbInsert(dbName, collectionName, data.__dict__)

#----------------------------------------------------------------------
Expand All @@ -343,7 +339,7 @@ def loadBar(self, dbName, collectionName, days):

l = []
for d in barData:
bar = CtaBarData()
bar = VtBarData()
bar.__dict__ = d
l.append(bar)
return l
Expand All @@ -358,7 +354,7 @@ def loadTick(self, dbName, collectionName, days):

l = []
for d in tickData:
tick = CtaTickData()
tick = VtTickData()
tick.__dict__ = d
l.append(tick)
return l
Expand Down
14 changes: 7 additions & 7 deletions vnpy/trader/ctaStrategy/ctaHistoryData.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

from vnpy.trader.vtGlobal import globalSetting
from vnpy.trader.vtConstant import *
from vnpy.trader.vtObject import VtBarData

from vnpy.trader.ctaStrategy.ctaBase import *
from vnpy.trader.ctaStrategy.datayesClient import DatayesClient


Expand Down Expand Up @@ -137,7 +137,7 @@ def downloadFuturesDailyBar(self, symbol):
unique=True)

for d in data:
bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = symbol
bar.symbol = symbol
try:
Expand Down Expand Up @@ -205,7 +205,7 @@ def downloadFuturesIntradayBar(self, symbol):
unique=True)

for d in data:
bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = symbol
bar.symbol = symbol
try:
Expand Down Expand Up @@ -289,7 +289,7 @@ def downloadEquityDailyBar(self, symbol):
unique=True)

for d in data:
bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = symbol
bar.symbol = symbol
try:
Expand Down Expand Up @@ -340,7 +340,7 @@ def downloadEquityDailyBarts(self, symbol):
unique=True)

for index, d in data.iterrows():
bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = symbol
bar.symbol = symbol
try:
Expand Down Expand Up @@ -378,7 +378,7 @@ def loadMcCsv(fileName, dbName, symbol):
# 读取数据和插入到数据库
reader = csv.DictReader(file(fileName, 'r'))
for d in reader:
bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = symbol
bar.symbol = symbol
bar.open = float(d['Open'])
Expand Down Expand Up @@ -412,7 +412,7 @@ def loadTdxCsv(fileName, dbName, symbol):
# 读取数据和插入到数据库
reader = csv.reader(file(fileName, 'r'))
for d in reader:
bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = symbol
bar.symbol = symbol
bar.open = float(d[2])
Expand Down
3 changes: 2 additions & 1 deletion vnpy/trader/ctaStrategy/strategy/strategyAtrRsi.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import talib
import numpy as np

from vnpy.trader.vtObject import VtBarData
from vnpy.trader.vtConstant import EMPTY_STRING
from vnpy.trader.ctaStrategy.ctaTemplate import CtaTemplate

Expand Down Expand Up @@ -124,7 +125,7 @@ def onTick(self, tick):
if self.bar:
self.onBar(self.bar)

bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = tick.vtSymbol
bar.symbol = tick.symbol
bar.exchange = tick.exchange
Expand Down
3 changes: 2 additions & 1 deletion vnpy/trader/ctaStrategy/strategy/strategyDualThrust.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from datetime import time

from vnpy.trader.vtObject import VtBarData
from vnpy.trader.vtConstant import EMPTY_STRING
from vnpy.trader.ctaStrategy.ctaTemplate import CtaTemplate

Expand Down Expand Up @@ -100,7 +101,7 @@ def onTick(self, tick):
if self.bar:
self.onBar(self.bar)

bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = tick.vtSymbol
bar.symbol = tick.symbol
bar.exchange = tick.exchange
Expand Down
4 changes: 3 additions & 1 deletion vnpy/trader/ctaStrategy/strategy/strategyEmaDemo.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
也希望社区能做出一个解决了以上潜在风险的Demo出来。
"""

from __future__ import division

from vnpy.trader.vtObject import VtBarData
from vnpy.trader.vtConstant import EMPTY_STRING, EMPTY_FLOAT
from vnpy.trader.ctaStrategy.ctaTemplate import CtaTemplate

Expand Down Expand Up @@ -101,7 +103,7 @@ def onTick(self, tick):
if self.bar:
self.onBar(self.bar)

bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = tick.vtSymbol
bar.symbol = tick.symbol
bar.exchange = tick.exchange
Expand Down
5 changes: 3 additions & 2 deletions vnpy/trader/ctaStrategy/strategy/strategyKingKeltner.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import talib
import numpy as np

from vnpy.trader.vtObject import VtBarData
from vnpy.trader.vtConstant import EMPTY_STRING
from vnpy.trader.ctaStrategy.ctaTemplate import CtaTemplate

Expand Down Expand Up @@ -110,7 +111,7 @@ def onTick(self, tick):
if self.bar:
self.onBar(self.bar)

bar = CtaBarData()
bar = VtBarData()
bar.vtSymbol = tick.vtSymbol
bar.symbol = tick.symbol
bar.exchange = tick.exchange
Expand Down Expand Up @@ -154,7 +155,7 @@ def onBar(self, bar):
else:
# 如果没有缓存则新建
if not self.fiveBar:
fiveBar = CtaBarData()
fiveBar = VtBarData()

fiveBar.vtSymbol = bar.vtSymbol
fiveBar.symbol = bar.symbol
Expand Down
4 changes: 2 additions & 2 deletions vnpy/trader/ctaStrategy/tools/ctaLineBar.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# WeChat/QQ: 28888502

from vtConstant import *
from ctaBase import *
from vnpy.trader.vtObject import VtBarData

from datetime import datetime

Expand Down Expand Up @@ -240,7 +240,7 @@ def onBar(self, bar):

def __firstTick(self,tick):
""" K线的第一个Tick数据"""
self.bar = CtaBarData() # 创建新的K线
self.bar = VtBarData() # 创建新的K线

self.bar.vtSymbol = tick.vtSymbol
self.bar.symbol = tick.symbol
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

from __future__ import division

from vnpy.trader.vtObject import VtTickData, VtBarData
from ctaBacktesting import *

class BacktestEngineMultiTF(BacktestingEngine):
Expand Down Expand Up @@ -84,10 +85,10 @@ def loadHistoryData(self):
# 首先根据回测模式,确认要使用的数据类
# Choose data type based on backtest mode
if self.mode == self.BAR_MODE:
self.dataClass = CtaBarData
self.dataClass = VtBarData
self.func = self.newBar
else:
self.dataClass = CtaTickData
self.dataClass = VtTickData
self.func = self.newTick

# Load initializing data
Expand Down Expand Up @@ -164,7 +165,7 @@ def checkInformationData(self):
if (data is not None) and (data['datetime'] <= self.dt):

try:
temp[info_symbol] = CtaBarData()
temp[info_symbol] = VtBarData()
temp[info_symbol].__dict__ = data
self.infobar[info_symbol] = next(self.InfoCursor[info_symbol])
except StopIteration:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
This file tweaks ctaTemplate Module to suit multi-TimeFrame strategies.
"""


from strategyAtrRsi import *
from ctaBase import *
from ctaTemplate import CtaTemplate
Expand Down
Loading

0 comments on commit b043f45

Please sign in to comment.