MD 行情解说

时序

api 前置 柜台 req Connect new api/reg spi/reg front/init/join 连接 建立 on FrontConnected 0 - no error req UserLogin investor/pass word/broker/a pi_id/auth_code 验证登录信息 验证结果 on RspUserLogin 0 - no error req SubscribeMarketData instrument_id 订阅行情 订阅响应 on RspSubscribeMarketData 0 - no error 行情推送 on RtnMarketData struct MarketData req userlogout & release 断开 on FrontDisconnected 0/4097 api 前置 柜台 md时序图练习

开发环境

阿里云容器化服务

Demo

环境准备

docker run -itd --name pyctp haifengat/pyctp:2.3.2

docker pull haifengat/pyctp

demo

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from py_ctp.quote import CtpQuote
from py_ctp.enums import *
import time

class TestQuote(object):
    """TestQuote"""

    def __init__(self, addr: str, broker: str, investor: str, pwd: str):
        """"""
        self.front = addr
        self.broker = broker
        self.investor = investor
        self.pwd = pwd

        self.q = CtpQuote()
        self.q.OnConnected = self.onconnect
        self.q.OnUserLogin = self.onrspuserlogin

    def run(self):
        self.q.ReqConnect(self.front)

    def onconnect(self, obj):
        print("connected")
        self.q.ReqUserLogin(self.investor, self.pwd, self.broker)

    def onrspuserlogin(self, obj, info):
        print(info)
        self.q.ReqSubscribeMarketData('rb2009')

    def release(self):
        self.q.ReqUserLogout()

if __name__ == "__main__":

    front_quote = 'tcp://180.168.146.187:10111'
    broker = '9999'
    investor = '008105'
    pwd = '1'
    appid = 'simnow_client_test'
    auth_code = '0000000000000000'
    if investor == '':
        investor = input('invesotr:')
        pwd = input('password:')
        appid = input('appid:')
        auth_code = input('auth code:')
    qq = TestQuote(front_quote, broker, investor, pwd)
    qq.run()

    input()
    qq.release()
    input()

QA

官方地址 http://www.simnow.com.cn/

交易环境

测试

注册simnow,获取帐号密码。

生产&仿真

开通期货帐号获得生产帐号密码(具体事宜咨询期货公司),开通正式帐号后可申请仿真环境。

前置

模拟 simnow

配置
行情交易说明
tcp://180.168.146.187:10110tcp://180.168.146.187:10100电信
tcp://180.168.146.187:10111tcp://180.168.146.187:10101电信
tcp://218.202.237.33 :10112tcp://218.202.237.33 :10102移动
brokerapp idauth code
9999simnow_client_test0000000000000000(16个0)
交易规则
  • 期货交易按照交易所公布的买一卖一价对价成交;

  • 买入时:如果委托价大于等于卖一价,则成交,成交价为委托价、卖一价、最新价三价取中,如果委托价小于卖一价,不能成交,等待更优的行情才能成交;

  • 卖出时:如果委托价小于等于买一价,则成交,成交价为委托价、买一价、最新价三价取中,如果委托价大于买一价,不能成交,等待更优的行情才能成交。

生产&仿真

咨询期货公司

前置连接失败

telnet 前置地址:端口,检查网络是否连通,服务器是否开启

登录需验证

默认行情登录不验证,某些期货公司有开了验证的,需要正确填写Broker/Investorid/password/appid/authcode。

收不到订阅的行情

检查订阅的合约是否正确(注意大小写),确认订阅的合约是有行情的.

检查端口号为行情端口而非交易端口

Tick与分笔

国内期货只有tick数据,即行情快照。快照数量各交易所不同,不同行情服务也不同,通常为2次/秒。

Tradingday与Actionday

tradingday为交易日,actionday为实际行情日期。

不要使用行情中的actionday,某些交易所actionday不正确。

actionday计算方法

取当前交易日 tradingday
取前一交易日 pre_tradingday
取前一交易日的后一自然日 next_pre_day
行情时间 >= 20:00:00 actionday = pre_tradingday
行情时间 <= 03:00:00 actionday = next_pre_day
其他时间 actionday = tradingday

ExchangeID

行情中的Exchangeid字段可能为NULL 不要用

行情中的double.max

遇到涨跌停或其他没有行情的情况,某些字段会被 double.max (即FFFFFFFF) 填充,需要过滤掉。

AveragePrice

均价,即实时图中的黄线。

除郑商所合约(CZCE)外需除以合约乘数(VOLUMEPULTIPLE)

Tick->K线

K线时间

标注时间

用时间段开始的时间

09:00:00-9:00:59的数据显示为9:00:00

用结束时间

09:00:01-9:01:00显示为9:01:00

小节收盘时间的处理

小时时间:10:15:00/11:30:00/15:00:00

前归,将小节时间的tick作为前一分钟的数据,此时需修改tick分钟。

K线计算逻辑

  • 取tick分钟
  • 判断是否新K线
    • 是:open,high,low,close = lastprice volume=0 openterest = openterest
    • 否:high=max(high,lastprice) low=min(low, lastprice) close=lastprice volume=volume-pre_tick_volume openterest = openterest
  • 非交易时间段数据
    • 竞价成交(08:59 20:59)
    • 小节结束/收盘(10:15 11:30 15:00 15:15 23:00 23:30 01:00 02:30)
    • 处理方式
      • 向前/后归
      • 放弃

实时数据处理

https://hub.docker.com/repository/docker/haifengat/ctp_real_md

docker pull haifengat/ctp_real_md

使用方法

docker run -itd --name tmp haifengat/ctp_real_md
docker cp tmp:/home/docker-compose.yml .
docker cp tmp:/home/pgdata.tgz .
tar -xzf pgdata.tgz
docker rm -f tmp
docker-compose up -d
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haifengat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值