在组合策略中如何能像cta策略中的on_trade和on_order那样获取所需的信息。
怎么同时跑多个脚本策略?
请问一下期权的策略有模板么?写好之后是应该放在哪个目录?
如果相反,那是不是买入方向的停止单和限价单 跟卖出方向的完全相反?
也就是怎样能调用到get_history_data()这个方法。
Traceback (most recent call last):
File "D:\python\vnpy-2.0.8\vnpy-2.0.8\vnpy\trader\ui\mainwindow.py", line 278, in open_widget
widget = widget_class(self.main_engine, self.event_engine)
File "D:\python\vnpy-2.0.8\vnpy-2.0.8\vnpy\app\cta_backtester\ui\widget.py", line 43, in init
self.backtester_engine.init_engine()
File "D:\python\vnpy-2.0.8\vnpy-2.0.8\vnpy\app\cta_backtester\engine.py", line 60, in init_engine
self.init_rqdata()
File "D:\python\vnpy-2.0.8\vnpy-2.0.8\vnpy\app\cta_backtester\engine.py", line 66, in init_rqdata
result = rqdata_client.init()
File "D:\python\vnpy-2.0.8\vnpy-2.0.8\vnpy\trader\rqdata.py", line 56, in init
use_pool=True,
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\rqdatac\client.py", line 167, in init
remaining_days = quota["remaining_days"]
TypeError: 'NoneType' object is not subscriptable、
请问经常出现这个问题的原因是什么?
Traceback (most recent call last):
File "C:\vnstudio\lib\site-packages\vnpy\trader\ui\mainwindow.py", line 265, in open_widget
widget = widget_class(self.main_engine, self.event_engine)
File "C:\vnstudio\lib\site-packages\vnpy\app\cta_backtester\ui\widget.py", line 43, in init
self.backtester_engine.init_engine()
File "C:\vnstudio\lib\site-packages\vnpy\app\cta_backtester\engine.py", line 60, in init_engine
self.init_rqdata()
File "C:\vnstudio\lib\site-packages\vnpy\app\cta_backtester\engine.py", line 66, in init_rqdata
result = rqdata_client.init()
File "C:\vnstudio\lib\site-packages\vnpy\trader\rqdata.py", line 56, in init
df = rqdata_all_instruments(date=datetime.now())
File "C:\vnstudio\lib\site-packages\rqdatac\decorators.py", line 131, in wrap
return func(args, **kwargs)
File "C:\vnstudio\lib\site-packages\rqdatac\services\basic.py", line 320, in all_instruments
ins_ret = filter(cond, _all_instruments_list(market))
File "C:\vnstudio\lib\site-packages\rqdatac\decorators.py", line 111, in wrapper
value = user_function(args, kwargs)
File "C:\vnstudio\lib\site-packages\rqdatac\services\basic.py", line 108, in _all_instruments_list
return [Instrument(i) for i in get_client().execute("all_instruments", market=market)]
File "C:\vnstudio\lib\site-packages\rqdatac\decorators.py", line 59, in wrap
return func(*args, kwargs)
File "C:\vnstudio\lib\site-packages\rqdatac\thread_local.py", line 43, in execute
return self._execute(self._get_connection(), method, args, kwargs)
File "C:\vnstudio\lib\site-packages\rqdatac\thread_local.py", line 39, in _execute
raise e
File "C:\vnstudio\lib\site-packages\rqdatac\thread_local.py", line 34, in _execute
return conn.execute(method, *args, **kwargs)
File "C:\vnstudio\lib\site-packages\rqdatac\connection.py", line 132, in execute
msg_type, body = self._read_one_packet()
File "C:\vnstudio\lib\site-packages\rqdatac\connection.py", line 102, in _read_one_packet
raise get_error(code)(msg)
rqdatac.share.errors.QuotaExceeded: login session num reached MAX limit
Traceback (most recent call last):
File "D:\python\vnpy-2.0.6\vnpy\trader\ui\mainwindow.py", line 265, in open_widget
widget = widget_class(self.main_engine, self.event_engine)
File "D:\python\vnpy-2.0.6\vnpy\app\cta_strategy\ui\widget.py", line 37, in init
self.cta_engine.init_engine()
File "D:\python\vnpy-2.0.6\vnpy\app\cta_strategy\engine.py", line 112, in init_engine
self.load_strategy_data()
File "D:\python\vnpy-2.0.6\vnpy\app\cta_strategy\engine.py", line 779, in load_strategy_data
self.strategy_data = load_json(self.data_filename)
File "D:\python\vnpy-2.0.6\vnpy\trader\utility.py", line 91, in load_json
data = json.load(f)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json__init.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json\init__.py", line 348, in loads
return _default_decoder.decode(s)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 14 column 22 (char 259)
这个错误该怎么解决啊?谢谢
day_count = 0
ix = 0
for ix, data in enumerate(self.history_data):
if self.datetime and data.datetime.day != self.datetime.day:
day_count += 1
print(self.days)
if day_count >= self.days:
break
self.datetime = data.datetime
self.callback(data)
self.strategy.inited = True
self.output("策略初始化完成")
请问执行buy(bar.close_price, 1)之后self.pos并没有变化,导致后面重复执行self.pos == 0的这个分支,之后self.pos再突然加上这个漏掉的1,这到底是什么原因?(只有多开和多平,都是1手,pos是不可能为2的啊,正常来说列表只有两个元素,因为这原因多执行了一次,出现了列表有4个元素),是线程的问题么???
再次调用on_bar之后self.pos为 1 ######
[2128.0, 2092.0]
再次调用on_bar之后self.pos为 1 ######
[2128.0, 2092.0]
sell(price, 1)
再次调用on_bar之后self.pos为 0 ######
再次调用on_bar之后self.pos为 0 ######
再次调用on_bar之后self.pos为 0 ######
buy(price, 1)
再次调用on_bar之后self.pos为 0 ######
再次调用on_bar之后self.pos为 0 ######
buy(price, 1)
再次调用on_bar之后self.pos为 1 ######
[2492.0, 2400.0, 2747.0, 2608.0]
再次调用on_bar之后self.pos为 1 ######
[2492.0, 2400.0, 2747.0, 2608.0]
再次调用on_bar之后self.pos为 2 ######
[2492.0, 2400.0, 2747.0, 2608.0]
再次调用on_bar之后self.pos为 2 ######
def on_bar(self, bar: BarData):
"""
Callback of new bar data update.
"""
if self.pos > 0:
if bar.close_price < self.bars1[1].low_price:
self.cover(bar.close_price, 1)
self.bars1 = []
self.bars = []
elif bar.close_price > 2 * abs(self.bars[0] - self.bars1[1].low_price):
self.cover(bar.close_price, 1)
self.bars1 = []
self.bars = []
else:
pass
elif self.pos == 0:
if len(self.bars1) < 2:
gains = (bar.close_price - bar.open_price) / bar.open_price
if gains > self.point:
self.bars1.append(bar)
else:
self.bars1 = []
else:
self.buy(bar.open_price, 1)
# 买入价
self.bars.append(bar.open_price)
self.put_event()
以上代码出现这个问题,是哪里写错了?怎么解决?希望大家能帮助一下,谢谢。
Exception in thread Thread-4:
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "D:\python\vnpy-2.0.6\vnpy\app\cta_backtester\engine.py", line 158, in run_backtesting
engine.run_backtesting()
File "D:\python\vnpy-2.0.6\vnpy\app\cta_strategy\backtesting.py", line 294, in run_backtesting
func(data)
File "D:\python\vnpy-2.0.6\vnpy\app\cta_strategy\backtesting.py", line 709, in new_bar
self.strategy.on_bar(bar)
File "D:\python\vnpy-2.0.6\vnpy\app\cta_strategy\strategies\my_gao_strategy2.py", line 72, in on_bar
if bar.close_price < self.bars1[1].low_price:
IndexError: list index out of range
vnpy-2.0.7里的vnpy包下面没有event,trader,gateway等包和模块,导致run.py无法导入这些模块,这是什么原因?