VeighNa量化社区
你的开源社区量化交易平台
egge's Avatar
Member
离线
14 帖子
声望: 0

请教:
1)
我在普通的Python文件中执行如下代码,结果为True。即exec()函数正常执行。
p_par = '2 > 1'
p_result = False
exec('p_result = %s' % p_par)
print(p_result)

2)
但在策略的on_start(0函数中,执行却为False。即exec()不起作用,请问是为什么,该如何修改?
def on_start(self):
p_par = '2 > 1'
p_result = False
exec('p_result = %s' % p_par)
print(p_result)

VeighNa Trader 3.2.0报错,找不到列 turnover。只是启动了行情记录功能,还没跑策略呢,就报这个错误,请问如何解决???

Traceback (most recent call last):
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3197, in execute_sql
cursor.execute(sql, params or ())
sqlite3.OperationalError: table dbbardata has no column named turnover

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\veighna_studio\lib\site-packages\vnpy_datarecorder\ui\widget.py", line 157, in process_exception_event
raise exc_info[1].with_traceback(exc_info[2])
File "C:\veighna_studio\lib\site-packages\vnpy_datarecorder\engine.py", line 86, in run
self.database.save_bar_data(data)
File "C:\veighna_studio\lib\site-packages\vnpy_sqlite\sqlite_database.py", line 159, in save_bar_data
DbBarData.insert_many(c).on_conflict_replace().execute()
File "C:\veighna_studio\lib\site-packages\peewee.py", line 1927, in inner
return method(self, database, args, **kwargs)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 1998, in execute
return self._execute(database)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 2798, in _execute
return super(Insert, self)._execute(database)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 2511, in _execute
cursor = database.execute(self)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3210, in execute
return self.execute_sql(sql, params, commit=commit)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3194, in execute_sql
with exception_wrapper:
File "C:\veighna_studio\lib\site-packages\peewee.py", line 2970, in exit
reraise(new_type, new_type(exc_value,
exc_args), traceback)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 191, in reraise
raise value.with_traceback(tb)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3197, in execute_sql
cursor.execute(sql, params or ())
peewee.OperationalError: table dbbardata has no column named turnover

青青子荆 wrote:

是的,status是部分成交。
收到,谢谢啦

青青子荆 wrote:

多次成交时候,一个trade对应了多个trade id,没有对OrderData做特殊处理。
traded就是当时成交了多少,price是实际下单的委托价格,status是当时的状态。

是不是可以理解成:
第二次以70元的价格成交40手,此时OrderData的traded=40,price=70。那么status=“全部成交”还是“部分成交”?

由于在SimNow中一直没抓取到委托分多次成交的状态,故求助各位大佬帮助解答,谢谢啦!
请问:
当委托不是一次性全部成交,而是分多次成交时,OrderData中的traded、price、status如何变化?
例如:以委托价80元买入100手时,OrderData的属性是这么变化的吗?
第一次以50元的价格成交60手,此时OrderData的traded=60,price=50,status=部分成交?
第二次以70元的价格成交40手,此时OrderData的traded=100,price=(50+70)/2,status=全部成交?

就是说,我在上海商品交易所注册后,可以直接交易焦炭,不需要再在大连商品交易所注册了吗?

请问,如果用VN.PY交易黄金和焦炭,是需要在上海商品交易所和大连商品交易所分别注册,然后分别启动两个vnstation程序进行CTP连接,各自买卖吗?有通过类似simnow或博易交易软件这样的,连接一次CTP购买所有国内期货品种的方式吗?

xiaohe wrote:

想弄清楚建议用虚拟环境测一遍就知道了
好的,谢谢

xiaohe wrote:

你既然用这个orderid去执行撤单操作了,那么就是已撤销吧

非常感谢,关于部分成交的状态能帮我捋一捋吗?
例如:开仓买入了100手,如果这100手不是一次性全部成交的,会是下面的这几种情况吗?
100手分成了80手的orderid1和20手的orderid2。
20手一次性全部成交了,那么orderid2的成交手数是20手,状态是“全部成交”。
80手分成trade1和trade2分别成交,共成交50手,成交价格分别是price1和price2,剩下的30手在等待成交时被撤单了。那么orderid2的成交手数是50手,对应的状态是“撤单”吗,从order看成交价格是多少呢?

用Python的交易员 wrote:

前者,成交是每次一有变化就会推送

请问,1、当剩下的2手都成交了,是否在on_order()中收到“全部成交”的状态?2、如果剩下的2手撤单了,OrderData的状态是什么呢?

请问是怎么解决的?我这边也是提交中 和 未成交,在on_order()也是同一个orderid,推送了两次重复的信息

还想请教一下,我的米筐账号试用到期了,以后跑策略在simnow上自动仿真交易,还要申请米筐的正式账号才行吗?

是用代理上网吗?是的话去掉

申请了RQData的试用帐号后,下载完了IF88的历史数据,回测时报错。
报错如下:
description
当电脑重新联网后,回测就正常了。
请问:
回测数据下载成功后,还需要机器是联网的状态吗?

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】