In [1]:
import QUANTAXIS as QA

我们模拟两个期货账户

  1. acc 是允许保证金杠杆的账户
  2. acc2 是不允许保证金杠杆的账户 allow_margin=False

In [ ]:


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 [ ]:


In [ ]:


In [ ]:

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


In [13]:
order


Out[13]:
< QA_Order realorder_id Order_e1J6BwQ8 datetime:2018-12-28 09:30:00 code:RB1901 amount:1 price:3420 towards:2 btype:future_cn order_id:Order_e1J6BwQ8 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_e1J6BwQ8 Order_e1J6BwQ8 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_9ZDL8TdI datetime:2018-12-28 09:45:00 code:RB1901 amount:1 price:3425 towards:-3 btype:future_cn order_id:Order_9ZDL8TdI 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_e1J6BwQ8 Order_e1J6BwQ8 test_buyopen future_test 3.420 0 None
1 2018-12-28 09:45:00 RB1901 3425.0 -1 10043.155 Order_9ZDL8TdI Order_9ZDL8TdI 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)/0.09-3.425


Out[28]:
10043.155

In [ ]:


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_e1J6BwQ8 Order_e1J6BwQ8 test_buyopen future_test 3.420 0 None
1 2018-12-28 09:45:00 RB1901 3425.0 -1 10043.155 Order_9ZDL8TdI Order_9ZDL8TdI test_sellclose future_test 3.425 0 None
2 2018-12-28 09:55:00 RB1901 3435.0 -1 6948.220 Order_oFDKcyOr Order_oFDKcyOr test_sellopen future_test 3.435 0 None

In [ ]:


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_e1J6BwQ8 Order_e1J6BwQ8 test_buyopen future_test 3.420 0 None
1 2018-12-28 09:45:00 RB1901 3425.0 -1 10043.155 Order_9ZDL8TdI Order_9ZDL8TdI test_sellclose future_test 3.425 0 None
2 2018-12-28 09:55:00 RB1901 3435.0 -1 6948.220 Order_oFDKcyOr Order_oFDKcyOr test_sellopen future_test 3.435 0 None
3 2018-12-28 10:55:00 RB1901 3420.0 1 10186.300 Order_fwdWsHOD Order_fwdWsHOD test_buyclose future_test 3.420 0 None

In [ ]:


In [ ]:

快速撮合接口的测试


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}}}