# 常见问题 FAQ
# 行情网关订阅合约列表为空
这是因为不同的网关合约来源不同:
对于CTP网关,合约来源有两个,要么是开通了实盘账号,要么是开通了数据服务。若没有CTP合约,可使用模拟合约,详情参考 模拟行情下的模拟交易
# 数据服务已经配置了secret,但请求仍然报401或者403
这代表你的SECRET配置没有生效。打开jshell环境验证一下
jshell> System.getenv("NS_DS_SECRET")
# 能否增加期货公司选项
可以,详情参考 CTP网关 (opens new window)
# 监控台登录时,显示“服务端未启动”
常见于前后端启动的profile不一致造成。
注意,在开发环境下,前后端用http通信;在生产环境下,前后端用https通信。
服务端默认是以dev模式启动,桌面监控台则是production模式启动。
若前端使用桌面监控台,服务端必须以prod模式启动;
若开发环境下,前端监控台用 npm start
启动 northstar-monitor
项目。
# 监控台登录时,显示“使用了非法登录时间戳,请同步校准电脑时间”
这个错误意味着监控台系统时间与服务器时间之时的时差过大,容许的误差必须在60秒以内。
# 启动程序报错,找不到BuildProperties
该问题也有可能在Eclipse中出现。
解决方法是,要先对 northstar
目录运行 mvn install
(注意:要skip test,否则会构建失败)
# 为什么开发环境与生产环境不能统一使用http或https
生产环境不使用http一是出于安全考虑;二是electron桌面端对https更友好,使用http会有问题。
开发环境不使用https是由于证书问题,导致websocket连接会默认被拒绝,尽管能通过一些操作解决这个问题,但这个坑比较深,比上述提及到的前后端环境不统一的处理还要麻烦。
所以综合考虑下来,便让开发环境使用http,而生产环境使用https。
# CTP网关无法连线
- 请确保当前是开市时间。CTP网关正常工作时间:交易日日盘8:30至15:30,夜盘20:30至2:30
- 请确保开通了宏源实盘账户
- 请确保账户名与密码无误
- 请确保选择了正确的主次席选项
# 手动干预账户持仓,模组账户的持仓没有同步
首先要明确的是,账户
与 模组账户
是两个完全独立的概念。
账户
是指在账户管理页面能创建的账户实例;
模组账户
则是指在创建模组时,为模组创建的一个虚拟账本,它主要是为了方便统计模组的绩效而设置的。
由于一个 账户
会关联多个模组,因此 账户
与 模组账户
是一对多的关系。所以,当对 账户
持仓进行手工干预时,模组账户
是无法自行同步。同理,如果手工调整 模组账户
的持仓也不会对 账户
持仓产生任何影响。
所以,当 账户
持仓与 模组账户
持仓不一致时,可以手动干预任何一边,使两边同步。具体操作请参考【如何同步模组持仓】
需要特别注意,当一个账户关联了多个模组账户时,请务必核对持仓总数,以免出错造成不必要的损失。
# 开仓下单如何带上止损
由于止损价是基于交易所接口的实现,并非所有的交易所都能支持开仓带止损,因此为了避免不可控的情况,建议在策略层自行实现止损的逻辑。
此外,止损逻辑也属于交易策略的一部分,有些止损是会按实际情况动态变动的,所以应该按实际情况自行实现。
# 为什么控制台看不到模组日志
因为模组的日志被单独输出。可从模组管理页面的【日志】入口在监控台查看,也可以找到日志文件夹以模组命名的目录查找日志文件
# 为什么不支持SIMNOW
SIMNOW是上期技术开发的CTP测试平台,仅对接口开发时有用。Northstar
已经为用户踩过相应的坑,因此用户没有使用SIMNOW的必要。更关键的是,SIMNOW平台经常性不靠谱,用户不熟悉时,会分不清楚是程序有问题还是SIMNOW有问题。所以,这就是 Northstar
不支持SIMNOW的原因。
# 为什么使用redis而没有使用一般常见的数据库
首先,从程序的设计上看,作者为了简化用户的维护难度,把历史数据的维护剥离了。用户无需维护繁杂的来自不同交易所接口的历史行情数据,直接通过调用第三方服务来获取历史数据。
因此,剩下的数据存储需求便只有一些基本的配置信息,以及缓存当天的实时行情数据。在作者看来,正因为redis既能当缓存又能当数据库,能很简单地满足业务需求;加上IO读写效率要远高于一般的数据库,采用redis可谓是再合适不过了。
# 为什么回测股票历史行情时不要做复权处理
因为策略在实盘运行时,是无法进行复权处理的。如果回测时做了复权处理,到了实盘运行就会导致策略变形。
# 为什么实盘运行时无法进行复权处理
因为历史数据不能被改写。假设N日的数据已经加载到内存中,第N+1日出现了除权。如果采用后复权处理,就会导致计算的价格与实盘下单价格不一致;如果采用前复权处理,就需要把内存中的历史全部计一次。但历史数据是不能被改写的。
← 如何使用IDEA的进行开发 业务知识 →