海龟策略一般用于 日线级别的国内期货。
用的是本地停止单,就比如就比如当前价格是100点,海龟策略发出信号,在下一根K线的120线发出买入:
若价格没突破到120点,继续挂着。
若价格从100涨到130,那么在120点的时候停止单变成市价单追上去保证尽可能成交。
若下一根K线的开盘价大于120,那么以开盘价来立刻成交
收到,这是个bug,我们尽快修复。
原因是查询持仓的回调函函数(onRspQryInvestorPosition)中是data['InstrumentID']这里插入数据报错, InstrumentID仅仅指的是合约代码,不包含交易所代码。所以插入套利合约(SPC c1907&cs1909)会报错。
除了委托价格外,还需要填写交易数量,如买1手,2手
请提供一下截图。
一个简单的方法是在ctp发单函数里面 print 合约,委托号,价格等; 然后在委托回报里面也print 同样的信息。
在cmd上查看是这类信息是否正常打印
发单既要填合约品种,也要填交易所。
如交易螺纹钢,那么交易所是SHFE,品种代码是rb1905
有时候第二套(盘后测试)ctp连接不了,会出现上面报错。
但是第一套ctp可以连接。
这是SimNow自身出现的问题
VtTIckData字段是对接ThostFtdcUserApiStruct.h文件中CThostFtdcDepthMarketDataField的结构体,你可以修改或者插入新的字段["Turnover"]
///深度行情
struct CThostFtdcDepthMarketDataField
{
///交易日
TThostFtdcDateType TradingDay;
///合约代码
TThostFtdcInstrumentIDType InstrumentID;
///交易所代码
TThostFtdcExchangeIDType ExchangeID;
///合约在交易所的代码
TThostFtdcExchangeInstIDType ExchangeInstID;
///最新价
TThostFtdcPriceType LastPrice;
///上次结算价
TThostFtdcPriceType PreSettlementPrice;
///昨收盘
TThostFtdcPriceType PreClosePrice;
///昨持仓量
TThostFtdcLargeVolumeType PreOpenInterest;
///今开盘
TThostFtdcPriceType OpenPrice;
///最高价
TThostFtdcPriceType HighestPrice;
///最低价
TThostFtdcPriceType LowestPrice;
///数量
TThostFtdcVolumeType Volume;
///成交金额
TThostFtdcMoneyType Turnover;
。。。。。。
请问是哪间期货公司?
并且再次一下他们申请产品名称、授权编码。
(因为这两样东西是6月前要求强制上线,当前还有些公司没有提供)
getContract函数是直接从内存上获取的dict类型数据的
请检查一下你Python/Anaconda版本 ; 和numpy版本
在ctp_gateway.py的持仓查询回报函数可以修改插入字段和逻辑,下面是该函数
def onRspQryInvestorPosition(self, data: dict, error: dict, reqid: int, last: bool):
""""""
if not data:
return
# Get buffered position object
key = f"{data['InstrumentID'], data['PosiDirection']}"
position = self.positions.get(key, None)
if not position:
position = PositionData(
symbol=data["InstrumentID"],
exchange=symbol_exchange_map[data["InstrumentID"]],
direction=DIRECTION_CTP2VT[data["PosiDirection"]],
gateway_name=self.gateway_name
)
self.positions[key] = position
# Get contract size, return if size value not collected
size = symbol_size_map.get(position.symbol, None)
if not size:
return
# For SHFE position data update
if position.exchange == Exchange.SHFE:
if data["YdPosition"] and not data["TodayPosition"]:
position.yd_volume = data["Position"]
# For other exchange position data update
else:
position.yd_volume = data["Position"] - data["TodayPosition"]
# Calculate previous position cost
cost = position.price * position.volume * size
# Update new position volume
position.volume += data["Position"]
position.pnl += data["PositionProfit"]
# Calculate average position price
if position.volume:
cost += data["PositionCost"]
position.price = cost / (position.volume * size)
# Get frozen volume
if position.direction == Direction.LONG:
position.frozen += data["ShortFrozen"]
else:
position.frozen += data["LongFrozen"]
if last:
for position in self.positions.values():
self.gateway.on_position(position)
self.positions.clear()
github网址:https://github.com/vnpy/vnpy
wiki上是老版本的vnpy开发文档,2.0版本的文档在以后会上线
project上是2.0版本的开发计划
这1.9.2版本trade copy模块是基于py2.7,32位写的。
报错内容是ui图形界面报错。
先检查一下你python版本对不对
deap库提供了scoop和multiprocessing库的支持。但是发现在jupter notebook上运行仍然是单进程(纯py文件正常),另外有时会无法输入最终结果pop。
多进程问题在修复中
1.9版本的应用模块是在trader/app文件夹内。
vnpy2.0把app文件移动至vnpy根目录。(当前暂时移植了cta策略模块)
vnpy\trader文件夹下的object有定义的vt_symbol,可以去看一下
这是查询持仓的回调函函数(onRspQryInvestorPosition)报错。
查看原函数后,发现是data['InstrumentID']这里插入数据报错, InstrumentID仅仅指的是合约代码,不包含交易所代码。所以插入套利合约(SPC c1905&cs1905)会报错。这个bug我们尽量修复一下
def onRspQryInvestorPosition(self, data: dict, error: dict, reqid: int, last: bool):
""""""
if not data:
return
# Get buffered position object
key = f"{data['InstrumentID'], data['PosiDirection']}"
position = self.positions.get(key, None)
if not position:
position = PositionData(
symbol=data["InstrumentID"],
exchange=symbol_exchange_map[data["InstrumentID"]],
direction=DIRECTION_CTP2VT[data["PosiDirection"]],
gateway_name=self.gateway_name
)
self.positions[key] = position
如果是trader文件夹,打开vnpy根目录就可以看到。
如果指的是vnTrader(GUI图形界面),则可以通过运行run.py来打开
在之前的一个帖子上可以提供了解决途径提问求助 VN trader里面选好接口按启动就没反应了,可以试试这个方法:
你是不是在启动页面选择底层接口时,选择了盈透证券那一个选项。你可以去掉盈透和富途证券选项以后试试,估计你的vnconda缺ib的接口文件。
http://interactivebrokers.github.io/#
在这里下载最新版本并安装TWS API\source\pythonclient\ibapi到site-packages
talib没装好,可以试一下另一种方法:手动安装
pip install TA_Lib‑0.4.17‑cp37‑cp37m‑win_amd64.whl