QA_User
User-->Portfolio-->Account/Strategy
user ==> username / user_cookie
||
portfolio ==> portfolio_cookie
||
accounts ==> account_cookie
:::::::::::::::::::::::::::::::::::::::::::::::::
:: :: Portfolio 1 -- Account/Strategy 1 ::
:: USER :: -- Account/Strategy 2 ::
:: :: Portfolio 2 -- Account/Strategy 3 ::
:::::::::::::::::::::::::::::::::::::::::::::::::
:: 需要增加对于QA_USER的支持
USER作为一个单位实体, 可以自由创建组合Portfolio (需要被记录),修改组合Portfolio
import QUANTAXIS as QA
# 先创建一个用户
user = QA.QA_User(username ='quantaxis', password = 'quantaxis')
# 为该用户创建一个组合
portfolio=user.new_portfolio('x1')
# 为该组合创建一个账户,关键字段是 account_cookie
# 此账户也可以理解为策略,相关策略将于账户挂钩
account = portfolio.new_account(account_cookie='jasper')# 进行账户初始化
# 打印 user 的组合
user.portfolio_list
# 打印 account_cookie 列表
portfolio.account_list
# 移除一个账户
portfolio.drop_account('x1')
stock_account = portfolio.new_account(
account_cookie ='stock'
, allow_t0 = False
, allow_margin = False
, allow_sellopen = False
, running_environment = QA.MARKET_TYPE.STOCK_CN
)
stock_account.init_assets
stock_account.init_cash
stock_account.init_hold
# 移除一个账户
portfolio.drop_account('stock')
stock_account = portfolio.new_account(
account_cookie ='stock'
, init_cash = 50000
, init_hold={'000948': 100, '300872': 200}
, allow_t0=False
, allow_margin=False
, allow_sellopen=False
, running_environment=QA.MARKET_TYPE.STOCK_CN
)
portfolio.init_hold_table
stock_account.sell_available
stock_account.cash_available
stock_account.reset_assets(init_cash=666000)
stock_account.init_assets
order = stock_account.send_order(
code='000001'
, amount=100
, time='2019-01-19'
, amount_model=QA.AMOUNT_MODEL.BY_AMOUNT
, order_model=QA.ORDER_MODEL.CLOSE
, price=10
, towards=QA.ORDER_DIRECTION.BUY
)
future_account = portfolio.new_account(
account_cookie ='future'
, allow_t0=True
, allow_margin=True
, allow_sellopen=True
, running_environment=QA.MARKET_TYPE.FUTURE_CN
)
future_order = future_account.send_order(
code='RB1905'
, amount=100
, time='2019-01-19'
, amount_model=QA.AMOUNT_MODEL.BY_AMOUNT
, order_model=QA.ORDER_MODEL.CLOSE
, price=3500
, towards=QA.ORDER_DIRECTION.BUY_OPEN
)
order
future_order
order.trade(trade_price=10.1,trade_amount=100,trade_id='example_trade1',trade_time='2019-01-19 15:00:00')
future_order.trade(trade_price=3600,trade_amount=100,trade_id='example_trade2',trade_time='2019-01-19 21:00:00')
stock_account.history_table
future_account.history_table
stock_account.cash
future_account.cash
future_account.frozen
stock_account.cash_available
future_account.cash_available
stock_account.hold
future_account.hold
stock_account.sell_available
future_account.sell_available
stock_account.receive_simpledeal(
code='000004'
, order_id='model2'
, realorder_id='model2_real'
, trade_id='trade2'
, trade_amount=1000
, trade_price=16
, trade_time='2019-01-21'
, trade_towards=QA.ORDER_DIRECTION.BUY
, message='model2'
)
stock_account.history_table
stock_account.cash
stock_account.cash_available
stock_account.hold
stock_account.sell_available
stock_account.settle()
stock_account.sell_available
future_account.settle()
stock_account.save()