想调试一下Lib\site-packages\vnpy_ctp\api\vnctp下继承自CTP的接口,有现成的脚本可以执行编译吗?
用VSCODE运行python时可以有办法在C文件中加断点调试吗?
安装完成后运行run.py
C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy>python run.py
Traceback (most recent call last):
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3192, in connect
self._state.set_connection(self._connect())
File "C:\veighna_studio\lib\site-packages\peewee.py", line 4149, in _connect
conn = mysql.connect(db=self.database, autocommit=True,
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 358, in init
self.connect()
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 664, in connect
self._request_authentication()
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 954, in _request_authentication
auth_packet = self._read_packet()
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 772, in _read_packet
packet.raise_for_error()
File "C:\veighna_studio\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
err.raise_mysql_exception(self._data)
File "C:\veighna_studio\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.OperationalError: (1045, "Access denied for user 'Master'@'localhost' (using password: NO)")
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\run.py", line 106, in <module>
main()
File "C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\run.py", line 80, in main
main_engine.add_app(CtaStrategyApp)
File "C:\veighna_studio\lib\site-packages\vnpy\trader\engine.py", line 102, in add_app
engine: BaseEngine = self.add_engine(app.engine_class)
File "C:\veighna_studio\lib\site-packages\vnpy\trader\engine.py", line 73, in add_engine
engine: BaseEngine = engine_class(self, self.event_engine)
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\engine.py", line 97, in init
self.database: BaseDatabase = get_database()
File "C:\veighna_studio\lib\site-packages\vnpy\trader\database.py", line 158, in get_database
database = module.Database()
File "C:\veighna_studio\lib\site-packages\vnpy_mysql\mysql_database.py", line 162, in init
self.db.connect()
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3191, in connect
with exception_wrapper:
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3019, in exit
reraise(new_type, new_type(exc_value, *exc_args), traceback)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 192, in reraise
raise value.with_traceback(tb)
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3192, in connect
self._state.set_connection(self._connect())
File "C:\veighna_studio\lib\site-packages\peewee.py", line 4149, in _connect
conn = mysql.connect(db=self.database, autocommit=True,
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 358, in init
self.connect()
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 664, in connect
self._request_authentication()
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 954, in _request_authentication
auth_packet = self._read_packet()
File "C:\veighna_studio\lib\site-packages\pymysql\connections.py", line 772, in _read_packet
packet.raise_for_error()
File "C:\veighna_studio\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
err.raise_mysql_exception(self._data)
File "C:\veighna_studio\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
raise errorclass(errno, errval)
peewee.OperationalError: (1045, "Access denied for user 'Master'@'localhost' (using password: NO)")
安装好veighna_studio-3.8.0,装好mysql, 在github上找到run.py,放到某个目录下运行,即出现以下错误:
C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy>python run.py
找不到数据库驱动vnpy_mysql,使用默认的SQLite数据库
Traceback (most recent call last):
File "C:\veighna_studio\lib\site-packages\vnpy\trader\database.py", line 152, in get_database
module: ModuleType = import_module(module_name)
File "C:\veighna_studio\lib\importlib__init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\veighna_studio\lib\site-packages\vnpy_mysql\init__.py", line 26, in <module>
from .mysql_database import MysqlDatabase as Database
File "C:\veighna_studio\lib\site-packages\vnpy_mysql\mysql_database.py", line 4, in <module>
from peewee import (
ModuleNotFoundError: No module named 'peewee'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\run.py", line 28, in <module>
main()
File "C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\run.py", line 18, in main
main_engine.add_app(CtaStrategyApp)
File "C:\veighna_studio\lib\site-packages\vnpy\trader\engine.py", line 102, in add_app
engine: BaseEngine = self.add_engine(app.engine_class)
File "C:\veighna_studio\lib\site-packages\vnpy\trader\engine.py", line 73, in add_engine
engine: BaseEngine = engine_class(self, self.event_engine)
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\engine.py", line 97, in init
self.database: BaseDatabase = get_database()
File "C:\veighna_studio\lib\site-packages\vnpy\trader\database.py", line 155, in get_database
module: ModuleType = import_module("vnpy_sqlite")
File "C:\veighna_studio\lib\importlib__init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\veighna_studio\lib\site-packages\vnpy_sqlite\init__.py", line 26, in <module>
from .sqlite_database import SqliteDatabase as Database
File "C:\veighna_studio\lib\site-packages\vnpy_sqlite\sqlite_database.py", line 4, in <module>
from peewee import (
ModuleNotFoundError: No module named 'peewee'
以前用的是veighna_studio-3.5.0,没有这样的问题,比较了一下2个版本相关的文件,也没有找到什么不同,论坛里大概翻了一下,没有找到相应的贴子,
可以看下问题出在哪里吗?
看到TB群里说要升级软件,政府要求增加商密的功能。
VNpy也会面对同样的问题要升级吗?
另外商密是什么?是需要什么APP产生PIN码验证这个东西吗?
交易中发现锁仓占用了大量的保证金。
跟期货公司的小哥讨论,他说是大商所给快期的特权,如下:
https://doc.shinnytech.com/q72/latest/6.html
大商所 :支持实时在客户端发起组合申请,实时释放保证金;盘中未发起组合的合约,盘后在CTP柜台内会将其组合。
不那么信,是不是在下单的时候有参数可以来确定是否释放组合中的保证金呢?
是扫描CTA窗口的句柄然后执行按钮操作?
还是给CTA窗口进程发一个信号让它响应呢?
这2个技能都没用过,不熟,哪一个更合理或好用一点?
有更简单的方法吗?
在项目中有没有类似的应用可以借鉴?
下载了3.5.0后默认安装,然后去gitee上下载了vnpy/ examples / veighna_trader下的run.py
在替换了很多中文符号的问题后,运行了python run.py后出现错误
C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy>python run.py
File "C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\run.py", line 1
<!DOCTYPE html>
^
SyntaxError: invalid syntax
这就超出我的知识范围了,看了一下这个文件提交是9个月前,那别人应该不会有这个问题吧?
针对我这个问题怎么解决呢?
run.py的文件的前面几行是这样的:
<!DOCTYPE html>
<html lang='zh-CN'>
<head>
<title>examples/veighna_trader/run.py vn.py官方/vn.py - Gitee.com</title>
<meta content='on' http-equiv='x-dns-prefetch-control'>
<link href='//e.gitee.com' rel='dns-prefetch'>
<link href='//files.gitee.com' rel='dns-prefetch'>
<link href='//toscode.gitee.com' rel='dns-prefetch'>
<link href='https://cn-assets.gitee.com' rel='dns-prefetch'>
<link href='https://portrait.gitee.com' rel='dns-prefetch'>
<link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://cn-assets.gitee.com/assets/favicon-9007bd527d8a7851c8330e783151df58.ico" />
<link rel="canonical" href="https://gitee.com/vnpy/vnpy" />
<meta content='gitee.com/vnpy/vnpy git https://gitee.com/vnpy/vnpy.git' name='go-import'>
<meta charset='utf-8'>版本2.9有时候会毫无征兆的退出,通过run.py运行,
自己也修改了一些东西,尤其是加了一个线程,用来等上一个合约平仓后移仓到新合约,
每分钟会检查一次合约持仓状态,前一段时间运行得挺好,这几天发生好几次毫无征兆的退出
从log文件中没有看到什么提示
有什么办法可以排查问题啊?
run.py中含以下几个模块
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp
from vnpy_chartwizard import ChartWizardApp
from vnpy_datamanager import DataManagerApp
from vnpy_datarecorder import DataRecorderApp
from vnpy_ctastrategy.base import EVENT_CTA_LOG #add log to file
C:\vnstudio\Lib\site-packages\vnpy\trader\ui\widget.py中TradingWidget-->process_tick_event中:
tick = event.data
打印这个tick,可以看到tick中并没有vt_symbol成员,
但是下面却直接引用了tick.vt_symbol,它还真的有值,并且值是symbol.exchange,这是怎么做到的?
DIRECTION.LONG是多,
DIRECTION.SHORT是空,
DIRECTION.NET是什么?
跟volume什么关系,冻结了一手后,这2个值都没有变化啊。是昨仓的意思吗?
vnpy 2.9.0中trader/ui/widget.py中有
signal_tick = QtCore.pyqtSignal(Event)
和
self.signal_tick.connect(self.process_tick_event)
self.event_engine.register(EVENT_TICK, self.signal_tick.emit)
为什么不像vnpy_strategy/engine.py中直接注册呢?
self.event_engine.register(EVENT_TICK, self.process_tick_event)
中间通过一个信号传递跟直接注册有什么不同?
可能价格设置不对,可能资金不足,这个会不会对账户有影响,比如禁止下单或别的惩罚?
class OrderData(BaseData):
"""
Order data contains information for tracking lastest status
of a specific order.
"""
symbol: str
exchange: Exchange
orderid: str
type: OrderType = OrderType.LIMIT
direction: Direction = None
offset: Offset = Offset.NONE
price: float = 0
volume: float = 0
traded: float = 0
status: Status = Status.SUBMITTING
datetime: datetime = None
reference: str = ""
拒单的理由是存在这个reference里吗?
同一个CTA策略用在不同的品种上,修改了策略添加了一个参数,
为什么有的品种上在cta_strategy_setting.json中显示了这个参数和相应的值(不全是默认值或非默认值),有的却没有?
但是在cta策略的界面中都能显示,
这其间经过了几次开盘收盘重启和几次交易。
CTA策略中,
又怎么在双向开仓的情况下判断仓位?在有双向仓位但绝对值仓位是0时怎样发出平仓的指令代替开仓?
有没有现在的例子呢?
策略中超价下单,如果超过了涨停跌停价,系统会处理成用涨停跌停价下单么?
还是需要策略中自己去处理?
需要用到什么工具呢?
VNPY中有没有内置的可以直接用的?
都需要怎么做啊?
不知道转到哪个版面了
或者甚至删掉了?
怎样能找到呢?
用关键字搜索也找不到
手动交易时平昨和平今还不一样,
那么自动交易时候在 CTA_STATEGY 的代码里面需要特别指定吗?
是通过什么参数呢?没有找到相关的参数啊