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

本人的1 和 3 情况排除
尝试排除 2 防火墙的因素

知乎上有篇帖子,讲防火墙和jupyter notebook的
《Anaconda中的Jupyter打不开网页解决大全!》
https://zhuanlan.zhihu.com/p/408165098

依葫芦画瓢
控制面板→系统与安全→允许应用通过Windows防火墙→更改设置
允许其他应用→浏览→
添加veighna_studio路径下的python.exe和veighna_studio的script路径下的jupyter-lab.exe, jupyter.exe 最终点击确认
该方法确实有效,不过第二天(关机之后)症状依旧
于是第二天 继续添加 veighna_studio的script路径下的 跟 jupyter有关的文件,例如jupyter-lab,jupyter-kernel,每天添加一个,续命一天(不知道全部添加会不会持续有效)

封装的合约信息好像没有涨跌停字段,在结合竞价阶段,没有tick数据推送吧?如何获取合约的涨跌停价格?

to_jq_symbol函数其实可以不用自己定义,聚宽有个normalize_code函数,可以将symbol转化成聚宽的代码格式

description

3.1.0版本,如果想通过 数据管理 模块的“下载数据”按钮,进行下载,jadata_datafeed.py文件中的query_bar_history函数,需要增加登录初始化的语句
description

    def query_bar_history(self, req: HistoryRequest):
        """
        Query history bar data from JQData.
        """
        # 检查是否登录
        if not self.inited:
            self.init()     

        symbol = req.symbol
        exchange = req.exchange
        interval = req.interval
        start = req.start
        end = req.end

怎么上传excel附件?

数据源采用聚宽连续合约,标的铁矿石,参数设置如下:

# 样本外检验
# 配置合约信息
# 缺TA8888 CF8888 SM8888 SC8888 ZC8888
# 合约大小写按交易所格式
vt_symbols = [
    "i8888.DCE"
]

rates = {s: 0.001 for s in vt_symbols}
slippages = {s: 0 for s in vt_symbols}
sizes = {s: contract_sizes[s] for s in vt_symbols}
priceticks = {s: 0.01 for s in vt_symbols}

# 创建回测引擎
engine = BacktestingEngine()

engine.set_parameters(
    vt_symbols=vt_symbols,
    interval=Interval.MINUTE,
    start=datetime(2019, 1, 1),
    end=datetime(2022, 4, 30),
    rates=rates,
    slippages=slippages,
    sizes=sizes,
    priceticks=priceticks,
    capital=10_000_000,
)

setting = {
    "entry_window": 20,
    "exit_window": 10,
    "n_window": 20,
    "unit_limit": 2
}
engine.add_strategy(TurtleStrategy, setting)

engine.load_data()
engine.run_backtesting()

df = engine.calculate_result()
engine.calculate_statistics()
engine.show_chart()

回测发现问题,如图,在2020年2月3日位置,发现净值跳跃

description

查看文华财经,铁矿石加权价格数据,2月3日为春节后,第一天,价格跳空,如图

description

通过函数engine.daily_results,engine.trades 导出合成的日线close和 成交明细数据,发现三个问题,需要请教:

第1个问题
在2020年2月3日,跳空前的几天,随机抽取两天1月20日,1月22日,发现 合成的收盘价,是23:00。跳空后的几天,随机抽取两天,合成的收盘价 是在15:00,为什么2月3日的前几天,合成的收盘价会取23:00?

1月20日
description

1月22日
description

2月6日

description

第2个问题
2020年2月3日跳空当天,分钟数据,价格基本都是在600附近,合成的2月3日收盘价 693.5 是如何得出来的?

description

第3个问题
向下跳空后,按道理,应该是向下突破做空吧?成交明细中,是买多,为什么会开多仓?

description

description

确实可行,感谢
新建py文件的时候,不能用txt文件后缀直接改成py文件,会出现uft-8编码错误

df = engine.calculate_result()
找到两个,df 可以打印净值曲线

df里面没看到原始收盘价的序列

另外还有一个不知道怎么找:
trade的成交记录

非常感谢
下图中没看到原始的close价格曲线

description

海龟策略精析课程中,组合回测之后,请问如何将 品种的原始收盘价曲线数据、回测净值曲线数据,回测统计指标 打印到excel文件? 这几个数据存储在engine的哪个位置?

数据服务,mark一下
ifind数据服务需要从同花顺官网下载 同花顺数据接口,首次填入登录名,密码,vnpy才能成功连接数据服务

请问在 no_ui 模式下,是否可以用 on_order 和 on_trade 函数? 使用文档 的案例中没用到这两个

很好,前端的归前端,后端的归后端,不知道能不能通过前端程序,还启动后端程序

2022-04-11 10:30:19,478  INFO: net_lock_short l2206: on_tick:TickData(gateway_name='CTP', symbol='l2209', exchange=<Exchange.DCE: 'DCE'>, datetime=datetime.datetime(2022, 4, 11, 10, 30, 18, 400000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), name='聚乙烯2209', volume=75149, open_interest=116979.0, last_price=8843.0, last_volume=0, limit_up=9714.0, limit_down=8276.0, open_price=8978.0, high_price=9019.0, low_price=8830.0, pre_close=8993.0, bid_price_1=8843.0, bid_price_2=0, bid_price_3=0, bid_price_4=0, bid_price_5=0, ask_price_1=8844.0, ask_price_2=0, ask_price_3=0, ask_price_4=0, ask_price_5=0, bid_volume_1=10, bid_volume_2=0, bid_volume_3=0, bid_volume_4=0, bid_volume_5=0, ask_volume_1=1, ask_volume_2=0, ask_volume_3=0, ask_volume_4=0, ask_volume_5=0)

不是铁矿石 l是塑料,价格8844没有问题,价格是根据tick推送过来的

2022-04-11 10:30:13,098  INFO: 交易撤单失败,代码:26,信息:CTP:报单已全成交或已撤销,不能再撤

只查到 重复撤单的报错,这个不影响程序的运行,程序没中断,还在按信号发单,只是发的单子没有提交到交易所,没有后续的信息回报,一直显示 在 “提交中”

您说的生产订单后,就会推送状态,后续没有更新可能是 底层报错 了,这个底层报错了,去哪里查? log里面会有么?

“状态提交中可以看看是不是底层报错了”,具体怎么理解?在哪里会显示报错?

没有断开的日志
1、跟它同样策略,只是开仓方向不同的策略,同一时间正常在发单,也正常收到回报
2、这个策略,没有因故障停掉,因为它在正常的持续发单,只是一系列的单子不知道怎么没发出去

发送的单子是不是要进队列?会不会因为进队列超时,导致被扔掉了?

1、10:15之前发单还正常,15分钟休市,10:30之后,发单,有的单子就收不到信息回报了
2、发单了,但是信息的状态 一直是 提交中,没有更新,也就是没有收到 on_order推送

description

3、期货公司后台查询,没收到订单(收盘很久了,所以查不到柜台是否拒单)
4、期货公司问是否封装了这几个函数?

description

description

5、用的是阿里云,感觉网络问题的可能性较小

请问,有可能是什么原因,导致发单了,但却发送不到交易所? 10:15之前都是正常的,10:30之后,有些单子,就没发出去,有些单子是成功的

上面还有问题有疑惑
rpc的客户端要安装完整的vnstation么? 如果需要安装,对于cta_engine,rpc客户端的策略调用的是阿里云服务器rpc sever端上的engine.py文件,还是本地的rpc 客户端上的engine.py文件?(两个文件可能因不同的人修改后,内容不一样)

继续mark
1、阿里云上,连接账号,启动rpc服务,地址修改为tcp://0.0.0.0:2104 和 tcp://0.0.0.0:4012(非127.0.0.1)

description

2、在购买阿里云的账号里,登录,添加安全组规则,如图

description

description

3、在本地机,连接rpc,地址填阿里云的公网ip和端口

description

原理可能如下:
下面这个表示所有网卡
description

下面这个表示所有IP, 所有网段
description

成功了!!!

阿里云服务器端连接账号,等合约信息查询成功后,启动rpc服务,成功
然后,在本地添加rpcgateway,连接远程阿里云ip地址的RPC,报错,请问会是哪个环节原因?
版本号 2.1.9
做rpc服务的是在阿里云,当本地机的在另外一个阿里云,按道理不应该出现网络问题吧

description

mark一下
1、阿里云服务器端 RPC服务 对话框中,配置的地址填 阿里云本机的地址127.0.0.1加端口,启动成功,如图

description

2、客户端,收盘链接断开了,等开盘后,再尝试一下
客户端需不需要启动 RpcServerApp???譬如在客户端的run.py文件中也加入以下代码:

# 写在顶部
from vnpy_rpcservice import RpcServiceApp

# 写在创建main_engine对象后
main_engine.add_app(RpcServiceApp)

3、客户端要安装完整的vnstation么? 如果需要安装,对于cta_engine,客户端的策略调用的是阿里云服务器上的engine.py文件,还是本地的engine.py文件?(两个文件可能因不同的人修改后,内容不一样)

按文档的启动方式
红框是阿里云的公网IP,在阿里云 服务器端配置的话,是这么填么?
请问一下,账户连接后,启动rpc服务,为什么会显示启动失败呢? 版本是2.1.9
description

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

沪公网安备 31011502017034号

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