xiaohe wrote:
no_ui和图形界面跑起来的结果应该要一致的,不一致的话可以自己打印策略实例收到的bar和策略指标进行排查
你同一个账号同时建立两个连接更容易出问题
想问下实盘交易的大佬一般是怎么用 vnpy的,是用客户端 每天人工启动关闭的多,还是启动no_ui使用的多,这两种我目前都用在实盘,但成交不稳定,网络是光纤确定没有太大问题的
xiaohe wrote:
AlecZhong wrote:
AlecZhong wrote:
实盘no_ui 是要和 客户端一起 启动运行吗?
只启动no_ui 一直无法成交.......
只启动客户端,有时能成交 有时无法成交...........
根本无法做到自动化,像段誉的六脉神剑,时灵时不灵............
无法正常交易让人抓狂!
使用本地行情录制的数据,策略能正常初始化的;客户端都能成交--就是十分不稳定,看运气能不能成交了
莫非 使用 no_ui启动 一定要购买 RQdata 数据服务? 小账号一年都挣不到这个数据费用
数据服务不是强制的,你自己有录制数据的话,初始化的时候会去数据库读的
那只启动 no_ui 是不是要在run.py 里面增加录制行情的代码? 不然好像是无法触发交易,有没有相关指引?
xiaohe wrote:
no_ui和图形界面不要一起启动
我在测试验证,客户端策略初始化成功,但不启动; 再去启动no_ui 启动策略看是不是可以;如果客户端不启动,行情都没有本地记录,怎么可能成交呢
AlecZhong wrote:
实盘no_ui 是要和 客户端一起 启动运行吗?
只启动no_ui 一直无法成交.......
只启动客户端,有时能成交 有时无法成交...........
根本无法做到自动化,像段誉的六脉神剑,时灵时不灵............
无法正常交易让人抓狂!
使用本地行情录制的数据,策略能正常初始化的;客户端都能成交--就是十分不稳定,看运气能不能成交了
莫非 使用 no_ui启动 一定要购买 RQdata 数据服务? 小账号一年都挣不到这个数据费用
实盘no_ui 是要和 客户端一起 启动运行吗?
只启动no_ui 一直无法成交.......
只启动客户端,有时能成交 有时无法成交...........
根本无法做到自动化,像段誉的六脉神剑,时灵时不灵............
无法正常交易让人抓狂!
xiaohe wrote:
你只加载CTP接口试试看不久知道了
如果不确定代码是否有问题,应该看下底层输出的
用软件窗口的又有不能开他成功的,看到这委托号有点异常,正常的 5886(这种能成交)异常 5-886 不能成交,什么原因,都没 有人遇到过吗
DAY_START = time(8, 45)
DAY_END = time(15, 0)
NIGHT_START = time(20, 45)
NIGHT_END = time(23, 0)
def check_trading_period():
""""""
current_time = datetime.now().time()
trading = False
if (
(current_time >= DAY_START and current_time <= DAY_END)
or (current_time >= NIGHT_START)
or (current_time <= NIGHT_END)
):
trading = True
return trading
def run_child():
"""
Running in the child process.
"""
SETTINGS["log.file"] = True
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
cta_engine = main_engine.add_app(CtaStrategyApp)
main_engine.write_log("主引擎创建成功")
log_engine = main_engine.get_engine("log")
event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event)
main_engine.write_log("注册日志事件监听")
main_engine.connect(ctp_setting, "CTP")
main_engine.write_log("连接CTP接口")
sleep(10)
cta_engine.init_engine()
main_engine.write_log("CTA策略初始化完成")
cta_engine.init_all_strategies()
sleep(60) # Leave enough time to complete strategy initialization
main_engine.write_log("CTA策略全部初始化")
cta_engine.start_all_strategies()
main_engine.write_log("CTA策略全部启动")
while True:
sleep(10)
trading = check_trading_period()
if not trading:
print("关闭子进程")
main_engine.close()
sys.exit(0)
def run_parent():
"""
Running in the parent process.
"""
print("启动CTA策略守护父进程")
child_process = None
while True:
trading = check_trading_period()
# Start child process in trading period
if trading and child_process is None:
print("启动子进程")
child_process = multiprocessing.Process(target=run_child)
child_process.start()
print("子进程启动成功")
# 非记录时间则退出子进程
if not trading and child_process is not None:
if not child_process.is_alive():
child_process = None
print("子进程关闭成功")
sleep(5)
if name == "main":
run_parent()
实盘运营no_ui,启动连接成功,但是有交易信息没有发单成交的问题?
上面的代码,成功启动,是否要添加具体策略信息?
还有是否要增加录制行业主代码才能成交?
xiaohe wrote:
如果没有同时加载其他c++接口,建议交易时间段再试试看。
如果交易时段也一样的话,建议看下终端是否有底层报错信息输出
“如果没有同时加载其他c++接口” 这个不知道怎么确认
一时半会找不到原因, 策略代码确认没问题不用改的吗?
最后关闭软件,重新启动,手工平仓,才成功
这是我第一次手动平台,多次都不能平仓成功
上图策略代码 开仓和 平今 都可以, 但是rb2401会 如果持仓变为昨仓了,会平仓失败!
请问是要增加什么代码逻辑来实现 平今 无仓位或仓位不足,剩余的自动平昨仓?
xiaohe wrote:
K线数据可以单独拉出来对比
指标值由于计算方式不同可能会存在差异
veighna是用talib计算的,代码是开源的,在vnpy.trader.utility中,可以自己打印排查
对比发现是 EMA 和SMA的区别导致数据不一致,已解决,谢谢!
应该是2根K线的数据都对不上
xiaohe wrote:
没有配置数据服务通过数据服务查询K线失败是正常的,数据服务查不到就会去配置的数据库读取,图上后续也输出了初始化完成的日志。如果数据库数据足够初始化的话,图形界面上的指标应该是有数值的
“数据服务查不到就会去配置的数据库读取” 数据库还需要配置吗?
目前是已经录制2天的1分钟K线,但初始化5分钟 最大30天的数据对不上;
实盘策略初始化数据不对,不用RQdata;
用本地录制行情数据到本地数据库,怎么完成初始化?
本地sqlite数据库怎么配置?
AlecZhong wrote:
改成这样就成交了,需要先计算好价格,再放到 buy/short 里面使用
改好能成交了,也可以平今仓,但是不能平昨仓是什么原因? rb2401合约
看文华的软件rb2401 5分钟两根均线数据,和策略初始化数据对不上;
每次关闭策略和软件,重新打开相差的也不一样