如何利用A股行情数据API建立自己的量化交易事业?

什么是量化交易?如何利用股票行情数据建立自己的量化交易事业?

也就是说,让软件按照你设定的策略,进行自动买卖股票,你对level2行情数据和自动交易股票有自己的看法吗?

如果有,恭喜你,即使不写自动化程序,也可以做量化交易,让券商提供限价交易规则。量化交易不仅可以由机构进行,还可以由小人物、普通人和少量入场资金进行。事实上,即使你没有多少钱,如果你的策略真的能赚钱,你每个月都会有稳定的收入。

你想用很少的编程技术为自己创建一个独特的定量交易系统吗?如果是这样,那么你的定量交易会更加自动化,每天花费的时间也会更少,所以你必须阅读下面的文章。

在A股市场中,没有api接口可以直接通过交易所,我们只能通过经纪人给出的第三方交易接口进行程序化交易。一些低净值量化投资者通过web编程技术模拟登录网页,并通过http要求发送委托单。当然,对于个人来说,使用Python,C++,php,go,C#,java,在gitee上有现成的交易框架是最方便的。

 事实上,市场数据可以分为两部分:交易市场和订单委托市场。顾名思义,交易市场就是交易数据,包括最新的交易价格、交易量、交易量、最高价格、最低价格等字段信息;订单委托市场是销售报价和委托金额,根据委托价格的不同,可分为一档、五档、十档等市场;一般来说,交易市场和订单委托市场的结合形成了TAQ市场,也就是数据行情分析。


      在详细说明之前,还需要区分tick数据和快照数据。严格来说,tick数据是完全记录市场上所有信息的数据,比如一笔交易或者增加一个新的订单,即记录市场上每vent的数据,也就是最精细最完整的数据.


      十档快照数据实际上是tick数据切片后的统计数据。换句话说,如果市场信息在时间维度上被视为数据流,那么快照数据就是在一定频率下切割数据流,即时间段上的统计数据,而tick数据就是数据流本身。因此,tick数据更准确,快照数据的精度因时间频率的不同而不同。然而,在中国,tick数据的名称在一定程度上与快照数据混淆了。例如,在下面的文章中,level据的名称在某种程度上是3秒频率的快照数据,但有些人称之为tick数据,这是严格不准确的

# 推送股票十档行情行情数据
def stock_quote_record_stream():
    StreamResult = Stub.NewStockQuoteRecordStream(entity_pb2.Void())
    # 用For循环就可以不断消费数据
    for Result in StreamResult:
        print(Result)


if __name__ == '__main__':
    # 可以使用多线程并发接收推送数据
    ThreadOne = threading.Thread(target=tick_record_stream)
    ThreadTwo = threading.Thread(target=order_record_stream)
    ThreadThree = threading.Thread(target=order_queue_record_stream)
    ThreadFour = threading.Thread(target=stock_quote_record_stream)
    # 多进程并发接收推送数据
    # ProcessOne = Process(target=tick_record_stream)
    # ProcessTwo = Process(target=order_record_stream)
    # ProcessThree = Process(target=order_queue_record_stream)
    # ProcessFour = Process(target=stock_quote_record_stream)

    # 这设置为随主线程退出子线程,避免产生孤儿或僵尸线程
    ThreadOne.daemon = True
    ThreadTwo.daemon = True
    ThreadThree.daemon = True
    ThreadFour.daemon = True
    # ProcessOne.daemon = True
    # ProcessTwo.daemon = True
    # ProcessThree.daemon = True
    # ProcessFour.daemon = True

    # 有一点值得注意一下,假如订阅的股票相对活跃,推送的数据就不会有休眠的状态出现,因为Python的GIL锁,所以用多线程接收推送效率不显著,这个时候可以考虑用多进程来接收推送
    ThreadOne.start()
    ThreadTwo.start()
    ThreadThree.start()
    ThreadFour.start()
    # ProcessOne.start()
    # ProcessTwo.start()
    # ProcessThree.start()
    # ProcessFour.start()

    ThreadOne.join()
    ThreadTwo.join()
    ThreadThree.join()
    ThreadFour.join()
    # ProcessOne.join()
    # ProcessTwo.join()
    # ProcessThree.join()
    # ProcessFour.join()

猜你喜欢

转载自blog.csdn.net/L2gogogo/article/details/131002265
今日推荐