1.1.0 是对于QA_Market的一个小规模重构,区别以往的订单,成交模式, 故更新一个小版本
本次的更新主要有:
[QAData]
[QAMARKET]
[QAEngine]
[QAARP]
[QASU]
[QAUtil]
[QAWEB]
In [1]:
import QUANTAXIS as QA
import pandas as pd
import threading
import time
import datetime
import numpy as np
In [2]:
if QA.__version__<'1.1.0':
print('请升级quantaxis后再运行此教程')
如何理解QA_MARKET: QA_MARKET 是一个交易前置, 从使用的角度看,你可以把他理解成一个交易终端(比如同花顺/通达信)
在去年准备对于MARKET类重构的时候,QA_MARKET的作用图如下:
交易前置主要起的作用是:
1. 向上接入不同的Broker
2. 向下接入不同的账户
broker可以利用不同的接口, 接入不同的市场(股票/期货/港股/美股/模拟盘/回测)
QA_MARKET的类构成:
QA_Market继承于 QA_Trade, QA_Trade 是一个交易前置基类, 其中包含了 QA_Engine(用于开启多线程的管理引擎), 以及各种基类方法
QA_Market的主要方法:
start() 启动交易前置
connect(broker) 连接broker (等同于在同花顺里面选择不同的券商)
register(broker_name,broker) 注册一个broker(如果不是官方支持的broker)
login(account_cookie,account) 登陆账户
login_out(account_cookie,account) 登出
get_account(account_cookie) 获得账户句柄
insert_order(account_cookie, amount, amount_model, time, code, price, order_model, towards, market_type, frequence, broker_name, money=None) 插入订单
cancel_order(broker_name,account_cookie,order_id) 撤单
cancel_all(broker_name,account_cookie) 某一个账户订单全撤
query_assets(account_cookie) 查询某个账户的资产
query_position(account_cookie) 查询某个账户的持仓
query_cash(account_cookie) 查询某个账户的现金
query_data(broker_name, frequence, market_type, code, start, end=None) 查询历史行情数据
query_currentbar(broker_name, market_type, code) 查询当前行情
get_trading_day() 查询当前交易日期
QA_Market的非阻塞事件
QA_Market的非阻塞事件由 QA_Engine, Engine 中管理着各个QA_Thread, 通过submit(QA_Task) 和submit_nowait(QA_Task)的方法将事件推送到处理队列中
upcoming_data(broker, data) 行情推送进交易前置, 分发至market下的所有账户中
settle(broker) 每日交易结算
insert_order 插入订单 可以在on_insert_order中写异步处理(需要继承)
关于submit函数和QA_Task
你可以在QA_Task的QA_Event中自行写入回调来异步调用你的函数