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

谢啦大神,还有一个问题, 在非交易时段, 只要使用 7*24小时的 地址
ctp 和ctptest 都是可以连接上的, 那么他们究竟有啥区别呢?

找到原因了,以上配置 需要在交易时段 才可以连接 。

非交易时间段,需要使用以下地址
7*24小时
180.168.146.187:10130
180.168.146.187:10131

description

vnpy文档:
用户名username:111111 (6位纯数字账号)

密码password:1111111 (需要修改一次密码用于盘后测试)

经纪商编号brokerid:9999 (SimNow默认经纪商编号)

交易服务器地址td_address:218.202.237.33 :10102 (盘中测试)

行情服务器地址md_address:218.202.237.33 :10112 (盘中测试)

授权码auth_code:0000000000000000(16个0)

名称app_id:simnow_client_test

username:换成 自己注册的simnow的也是一样
description

我看论坛里面说是写在on_trade里面, 但是demo策略 BollChannelStrategy 是写在on_bar上面. 目前遇到两个问题,请大神不吝赐教!

  1. buy,sell,cover,short 这些函数的第三个参数 stop 是不是专门用做止盈止损这种条件单的?
  2. 我的停止单即使价格达到了也没有触发, 不知道是不是代码逻辑写的有问题,代码如下:
    # 使用bar.close_price 作为当前市价最新价
    def on_5min_bar():
     self.cancel_all()
     if 达到开多条件:
         # 计算多单止损和止盈价格, 开多之后下停止委托单
         self.long_stop_lose = 开多止损价格
         self.long_stop_win =  开多止盈价格
         if self.pos == 0:
             self.buy(bar.close_price, self.fixed_size)
         elif self.pos > 0:
             # 开多之后下止盈,止损停止委托单
             self.sell(self.long_stop_lose, abs(self.pos), True)
             self.sell(self.long_stop_win, abs(self.pos), True)
         elif self.pos < 0 :
             # 平掉空单
             self.cover(bar.close_price, abs(self.pos))
             # 开多单
             self.buy(self.close_price, self.fixed_size)
     if 达到开空条件:
         # 计算空单止损和止盈价格, 开空之后下停止委托单
         self.short_stop_lose = 空单止损价格
         self.short_stop_win =  空单止盈价格
         if self.pos == 0:
             self.short(bar.close_price, self.fixed_size)
         elif self.pos < 0:
             # 开空之后下止盈,止损停止委托单
             self.cover(self.short_stop_lose, abs(self.pos), True)
             self.cover(self.short_stop_win, abs(self.pos), True)
         elif self.pos > 0 :
             # 平掉多单
             self.sell(bar.close_price, abs(self.pos))
             # 开空单
             self.short(self.close_price, self.fixed_size)

如图所示:
description

是的,没有任何输出,
不过 问题解决了,问过他们技术支持了, 要先用他们的仿真账号登录, 通过之后才能用正式账号登录!

CTPTEST 下市价单的时候 ,提示 交易委托失败,代码:147 ,信息: CTP: 缺少ExchangeID字段, 请填入ExchangeID
订单状态为 拒单
请教各位大神,这个是什么原因呢?

用Python的交易员 wrote:

检查CTP和CTPTEST不要同时加载(import)
我确定没有同时 import , 下面ctptest 我 都注释了
代码如下:

from vnpy.gateway.ctp import CtpGateway
# from vnpy.gateway.ctptest import CtptestGateway

如题, 在使用simnow账号 连接CTPTEST 一切正常
enter image description here
但是 使用正式账号和仿真账号 连接CTP 的时候 没有任何反应, 也没有日志输出 . 期货公司那边已经开通了CTP 程序化交易 也拿到了 行情服务器, 交易服务器, 授权编码 brokerid 等信息 , 求助一下各位大神!

确认期货公司使用的 版本是6.3.15
enter image description here

楼上正解, RB88 和当前的主力合约RB1910 获取的数据的确不一样. 省去了3000大洋诶, 谢谢大家的热心回答~

我 换了一个图片地址
enter image description here
部分日志结果:
平空 2019-07-11 20:30:00 11619.0
平空 2019-07-11 20:45:00 11586.5
平空 2019-07-11 21:00:00 11680.0
平空 2019-07-11 21:15:00 11665.5
平空 2019-07-11 21:30:00 11633.0
平空 2019-07-11 21:45:00 11649.0
平空 2019-07-11 22:00:00 11700.5
平空 2019-07-11 22:15:00 11678.5
开多 2019-07-11 22:30:00 11786.5
开多 2019-07-11 22:45:00 11775.0
开多 2019-07-11 23:00:00 11775.5
开多 2019-07-11 23:15:00 11743.5
开空 2019-07-11 23:30:00 11680.0
开空 2019-07-11 23:45:00 11532.0
enter image description here

日志打印出的7月11日有很多次开平仓操作, 但是 实际委托记录上只有1条, 实在弄不明白是什么原因,请大神不吝赐教!

end_date 加1天也没有用, 我加过 ricequant 客服了, 客服说 只有收费版 才提供实时数据, 1.5万/ 每年,不限制流量. vnpy既然接入了rqdata, 应该了解这个收费吧. 所以想跟群主确认一下.

是的 ,用在bitmex btc合约上的, 但是我只是本地回测,这个也跟api不稳定有关吗?

我知道7月15日是收盘了, 但是 7月16日的数据呢?我调接口的时间是7月16日16:13分

如果拿不到当下的最新的数据,那岂不是只能用于回测,不能用于实盘?

df = rq.get_price('RB88', frequency='1m', fields=['open', 'high', 'low', 'close', 'volume'],end_date=datetime.now())

2019-07-15 14:52:00  3985.0  3989.0  3985.0  3987.0   10290.0
2019-07-15 14:53:00  3987.0  3988.0  3987.0  3987.0    4412.0
2019-07-15 14:54:00  3987.0  3992.0  3986.0  3992.0   14592.0
2019-07-15 14:55:00  3991.0  3997.0  3990.0  3996.0   34794.0
2019-07-15 14:56:00  3996.0  4006.0  3996.0  4004.0   78092.0
2019-07-15 14:57:00  4005.0  4009.0  4003.0  4008.0   48942.0
2019-07-15 14:58:00  4008.0  4014.0  4007.0  4013.0   49984.0
2019-07-15 14:59:00  4013.0  4019.0  4013.0  4018.0   46804.0
2019-07-15 15:00:00  4019.0  4031.0  4017.0  4030.0  102240.0

现在是是7月16日16:13分 ,调用以上代码,只能获取到7月15日及以前的数据,如何才能获取 7月16日 16:13分之前的数据?

on_tick() 和 on_bar() 都没写逻辑 ,下单逻辑都是写在 on_15min_bar()中的

    def on_tick(self, tick: TickData):
        """
        Callback of new tick data update.
        """
        self.bg.update_tick(tick)

    def on_bar(self, bar: BarData):
        """
        Callback of new bar data update.
        """
        self.bg.update_bar(bar)

    def on_15min_bar(self, bar: BarData):
        """"""
        self.cancel_all()

        am = self.am
        am.update_bar(bar)
        if not am.inited:
            return

        self.boll_up, self.boll_down = am.boll(self.boll_window, self.boll_dev)
        self.cci_value = am.cci(self.cci_window)
        self.atr_value = am.atr(self.atr_window)

        if self.pos == 0:
            self.intra_trade_high = bar.high_price
            self.intra_trade_low = bar.low_price
            if self.cci_value > 0:
                print("开多", bar.datetime, bar.close_price)
                self.buy(self.boll_up, self.fixed_size, True)
            elif self.cci_value < 0:
                print("开空", bar.datetime, bar.close_price)
                self.short(self.boll_down, self.fixed_size, True)
        elif self.pos > 0:
    def on_15min_bar(self, bar: BarData):
        """"""
        self.cancel_all()
        am = self.am
        am.update_bar(bar)
        if not am.inited:
            return

但是我有执行 self.cancel_all() 方法进行撤单操作! 为什么没有撤单成功呢?

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

沪公网安备 31011502017034号

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