In [1]:
import QUANTAXIS as QA

我们模拟两个期货账户

  1. acc 是允许保证金杠杆的账户
  2. acc2 是不允许保证金杠杆的账户 allow_margin=False
In [2]:
acc=QA.QA_Account(allow_sellopen=True,init_cash=10000,allow_t0=True,allow_margin=True,account_cookie='future_test',market_type=QA.MARKET_TYPE.FUTURE_CN,frequence=QA.FREQUENCE.FIFTEEN_MIN)
In [3]:
acc2=QA.QA_Account(allow_sellopen=True,init_cash=10000,allow_t0=True,allow_margin=False,account_cookie='future_test',market_type=QA.MARKET_TYPE.FUTURE_CN,frequence=QA.FREQUENCE.FIFTEEN_MIN)
In [4]:
acc.market_preset.get_code('RB1905')
Out[4]:
{'buy_frozen_coeff': 0.09,
 'commission_coeff_peramount': 0.0001,
 'commission_coeff_pervol': 0.0,
 'commission_coeff_today_peramount': 5e-05,
 'commission_coeff_today_pervol': 0.0,
 'exchange': 'SHFE',
 'name': '螺纹钢',
 'sell_frozen_coeff': 0.09,
 'unit_table': 10}
In [5]:
acc.market_preset.get_unit('RB1901')
Out[5]:
10
In [6]:
acc.market_preset.get_unit('M901')
Out[6]:
10
In [7]:
acc.market_preset.get_frozen('M901')
Out[7]:
0.07
In [8]:
acc.market_preset.get_frozen('RB1901')
Out[8]:
0.09
In [9]:
order=acc.send_order(code='RB1901', amount=1, time='2018-12-28 09:30:00', towards=QA.ORDER_DIRECTION.BUY_OPEN, price=3420, money=None, order_model=QA.ORDER_MODEL.MARKET, amount_model=QA.AMOUNT_MODEL.BY_AMOUNT)
In [10]:
acc.cash_available
Out[10]:
6921.2305
In [11]:
order2=acc2.send_order(code='RB1901', amount=1, time='2018-12-28 09:30:00', towards=QA.ORDER_DIRECTION.BUY_OPEN, price=3420, money=None, order_model=QA.ORDER_MODEL.MARKET, amount_model=QA.AMOUNT_MODEL.BY_AMOUNT)
In [12]:
acc2.cash_available
Out[12]:
6579.1449999999995

上面测试的是保证金账户的下单扣减

In [13]:
order
Out[13]:
< QA_Order realorder_id Order_9ENt5xD4 datetime:2018-12-28 09:30:00 code:RB1901 amount:1 price:3420 towards:2 btype:future_cn order_id:Order_9ENt5xD4 account:future_test status:queued >
In [14]:
order.trade('test_buyopen',3420,1,'2018-12-28 09:30:00')
receive deal
In [15]:
acc.history_table
Out[15]:
datetime code price amount cash order_id realorder_id trade_id account_cookie commission tax message
0 2018-12-28 09:30:00 RB1901 3420.0 1 6918.58 Order_9ENt5xD4 Order_9ENt5xD4 test_buyopen future_test 3.42 0 None
In [16]:
3420*10*0.09
Out[16]:
3078.0
In [17]:
3078.0+3.420	
Out[17]:
3081.42
In [18]:
6918.58+3081.42
Out[18]:
10000.0
In [19]:
acc.frozen  #买入开仓 冻结的是买入的
Out[19]:
{'RB1901': {2: {'money': 3078.0, 'amount': 1}, -2: {'money': 0, 'amount': 0}}}
In [20]:
order_sellclose=acc.send_order(code='RB1901', amount=1, time='2018-12-28 09:45:00', towards=QA.ORDER_DIRECTION.SELL_CLOSE, price=3425, money=None, order_model=QA.ORDER_MODEL.MARKET, amount_model=QA.AMOUNT_MODEL.BY_AMOUNT)
In [21]:
order_sellclose
Out[21]:
< QA_Order realorder_id Order_LleGyHBv datetime:2018-12-28 09:45:00 code:RB1901 amount:1 price:3425 towards:-3 btype:future_cn order_id:Order_LleGyHBv account:future_test status:queued >
In [22]:
order_sellclose.trade('test_sellclose',3425,1,'2018-12-28 09:45:00')
receive deal
In [23]:
acc.history_table
Out[23]:
datetime code price amount cash order_id realorder_id trade_id account_cookie commission tax message
0 2018-12-28 09:30:00 RB1901 3420.0 1 6918.580 Order_9ENt5xD4 Order_9ENt5xD4 test_buyopen future_test 3.420 0 None
1 2018-12-28 09:45:00 RB1901 3425.0 -1 10043.155 Order_LleGyHBv Order_LleGyHBv test_sellclose future_test 3.425 0 None
In [24]:
acc.frozen
Out[24]:
{'RB1901': {2: {'money': 0, 'amount': 0}, -2: {'money': 0, 'amount': 0}}}
In [25]:
3425*10*0.09
Out[25]:
3082.5
In [26]:
3082.5+3.425
Out[26]:
3085.925
In [27]:
6918.58+3081.42+(3081.42-3085.925)*10
Out[27]:
9954.949999999999
In [28]:
6918.58+3078.0+(3082.5-3078.0)*10-3.425
Out[28]:
10038.155
In [29]:
acc.cash
Out[29]:
[10000, 6918.58, 10043.155]
In [30]:
order_sellopen=acc.send_order(code='RB1901', amount=1, time='2018-12-28 09:55:00', towards=QA.ORDER_DIRECTION.SELL_OPEN, price=3435, money=None, order_model=QA.ORDER_MODEL.MARKET, amount_model=QA.AMOUNT_MODEL.BY_AMOUNT)
In [31]:
order_sellopen.trade('test_sellopen',3435,1,'2018-12-28 09:55:00')
receive deal
In [32]:
acc.frozen
Out[32]:
{'RB1901': {2: {'money': 0, 'amount': 0}, -2: {'money': 3091.5, 'amount': 1}}}
In [33]:
acc.history_table
Out[33]:
datetime code price amount cash order_id realorder_id trade_id account_cookie commission tax message
0 2018-12-28 09:30:00 RB1901 3420.0 1 6918.580 Order_9ENt5xD4 Order_9ENt5xD4 test_buyopen future_test 3.420 0 None
1 2018-12-28 09:45:00 RB1901 3425.0 -1 10043.155 Order_LleGyHBv Order_LleGyHBv test_sellclose future_test 3.425 0 None
2 2018-12-28 09:55:00 RB1901 3435.0 -1 6948.220 Order_UMPkq9hj Order_UMPkq9hj test_sellopen future_test 3.435 0 None
In [34]:
order_buyclose=acc.send_order(code='RB1901', amount=1, time='2018-12-28 10:55:00', towards=QA.ORDER_DIRECTION.BUY_CLOSE, price=3420, money=None, order_model=QA.ORDER_MODEL.MARKET, amount_model=QA.AMOUNT_MODEL.BY_AMOUNT)
-1
In [35]:
order_buyclose.trade('test_buyclose',3420,1,'2018-12-28 10:55:00')
receive deal
In [36]:
acc.frozen
Out[36]:
{'RB1901': {2: {'money': 0, 'amount': 0}, -2: {'money': 0, 'amount': 0}}}
In [37]:
acc.history_table
Out[37]:
datetime code price amount cash order_id realorder_id trade_id account_cookie commission tax message
0 2018-12-28 09:30:00 RB1901 3420.0 1 6918.580 Order_9ENt5xD4 Order_9ENt5xD4 test_buyopen future_test 3.420 0 None
1 2018-12-28 09:45:00 RB1901 3425.0 -1 10043.155 Order_LleGyHBv Order_LleGyHBv test_sellclose future_test 3.425 0 None
2 2018-12-28 09:55:00 RB1901 3435.0 -1 6948.220 Order_UMPkq9hj Order_UMPkq9hj test_sellopen future_test 3.435 0 None
3 2018-12-28 10:55:00 RB1901 3420.0 1 10186.300 Order_V2Rxt5eY Order_V2Rxt5eY test_buyclose future_test 3.420 0 None

快速撮合接口的测试

In [38]:
acc.reset_assets(init_cash=10000)
In [39]:
acc.receive_simpledeal(code='RB1901', trade_price=3420, trade_amount=1, trade_towards=QA.ORDER_DIRECTION.BUY_OPEN, trade_time='2018-12-28 09:30:00')
In [40]:
acc.receive_simpledeal(code='RB1901', trade_price=3425, trade_amount=1, trade_towards=QA.ORDER_DIRECTION.SELL_CLOSE, trade_time='2018-12-28 09:45:00')
In [41]:
acc.receive_simpledeal(code='RB1901', trade_price=3435, trade_amount=1, trade_towards=QA.ORDER_DIRECTION.SELL_OPEN, trade_time='2018-12-28 09:55:00')
In [42]:
acc.receive_simpledeal(code='RB1901', trade_price=3420, trade_amount=1, trade_towards=QA.ORDER_DIRECTION.BUY_CLOSE, trade_time='2018-12-28 10:45:00')
In [43]:
acc.history_table
Out[43]:
datetime code price amount cash order_id realorder_id trade_id account_cookie commission tax message
0 2018-12-28 09:30:00 RB1901 3420 1 6918.580 None None None future_test 3.420 0 None
1 2018-12-28 09:45:00 RB1901 3425 -1 10043.155 None None None future_test 3.425 0 None
2 2018-12-28 09:55:00 RB1901 3435 -1 6948.220 None None None future_test 3.435 0 None
3 2018-12-28 10:45:00 RB1901 3420 1 10186.300 None None None future_test 3.420 0 None
In [44]:
acc.frozen
Out[44]:
{'RB1901': {2: {'money': 0, 'amount': 0}, -2: {'money': 0, 'amount': 0}}}