首页
数据字典 (opens new window)
  • 内置Python
  • 原生Python
  • VBA
投研服务平台 (opens new window)
迅投官网 (opens new window)

    暂无数据

    策略服务 (opens new window) 迅投知识库 迅投知识库
    首页
    数据字典 (opens new window)
    • 内置Python
    • 原生Python
    • VBA
    投研服务平台 (opens new window)
    迅投官网 (opens new window)
      • XtQuant.简介

      • XtQuant.XtData 行情模块

      • XtQuant.Xttrader 交易模块

        • 版本信息
        • 快速上手
          • 快速上手
            • 创建策略
        • 接口说明
        • 附录
      • XtQuant交易示例
      • 常见问题Q&A
      • XtQuant版本下载
      ×
      当前文档查询 “ ” 关键字 0 个
      0/0
      • 原生Python
      • XtQuant.Xttrader 交易模块
      RZRK
      2022-08-16
      目录

      快速上手

      ×

      # 快速上手

      # 创建策略

      #coding=utf-8
      from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
      from xtquant.xttype import StockAccount
      from xtquant import xtconstant
      
      
      class MyXtQuantTraderCallback(XtQuantTraderCallback):
          def on_disconnected(self):
              """
              连接断开
              :return:
              """
              print("connection lost")
          def on_stock_order(self, order):
              """
              委托回报推送
              :param order: XtOrder对象
              :return:
              """
              print("on order callback:")
              print(order.stock_code, order.order_status, order.order_sysid)
          def on_stock_asset(self, asset):
              """
              资金变动推送  注意,该回调函数目前不生效
              :param asset: XtAsset对象
              :return:
              """
              print("on asset callback")
              print(asset.account_id, asset.cash, asset.total_asset)
          def on_stock_trade(self, trade):
              """
              成交变动推送
              :param trade: XtTrade对象
              :return:
              """
              print("on trade callback")
              print(trade.account_id, trade.stock_code, trade.order_id)
          def on_stock_position(self, position):
              """
              持仓变动推送  注意,该回调函数目前不生效
              :param position: XtPosition对象
              :return:
              """
              print("on position callback")
              print(position.stock_code, position.volume)
          def on_order_error(self, order_error):
              """
              委托失败推送
              :param order_error:XtOrderError 对象
              :return:
              """
              print("on order_error callback")
              print(order_error.order_id, order_error.error_id, order_error.error_msg)
          def on_cancel_error(self, cancel_error):
              """
              撤单失败推送
              :param cancel_error: XtCancelError 对象
              :return:
              """
              print("on cancel_error callback")
              print(cancel_error.order_id, cancel_error.error_id, cancel_error.error_msg)
          def on_order_stock_async_response(self, response):
              """
              异步下单回报推送
              :param response: XtOrderResponse 对象
              :return:
              """
              print("on_order_stock_async_response")
              print(response.account_id, response.order_id, response.seq)
          def on_account_status(self, status):
              """
              :param response: XtAccountStatus 对象
              :return:
              """
              print("on_account_status")
              print(status.account_id, status.account_type, status.status)
      
      if __name__ == "__main__":
          print("demo test")
          # path为mini qmt客户端安装目录下userdata_mini路径
          path = 'D:\\迅投极速交易终端 睿智融科版\\userdata_mini'
          # session_id为会话编号,策略使用方对于不同的Python策略需要使用不同的会话编号
          session_id = 123456
          xt_trader = XtQuantTrader(path, session_id)
          # 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定
          # 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程
          # xt_trader.set_relaxed_response_order_enabled(True)
          # 创建资金账号为1000000365的证券账号对象
          acc = StockAccount('1000000365')
          # StockAccount可以用第二个参数指定账号类型,如沪港通传'HUGANGTONG',深港通传'SHENGANGTONG'
          # acc = StockAccount('1000000365','STOCK')
          # 创建交易回调类对象,并声明接收回调
          callback = MyXtQuantTraderCallback()
          xt_trader.register_callback(callback)
          # 启动交易线程
          xt_trader.start()
          # 建立交易连接,返回0表示连接成功
          connect_result = xt_trader.connect()
          if connect_result != 0:
              import sys
              sys.exit('链接失败,程序即将退出 %d'%connect_result)
          # 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功
          subscribe_result = xt_trader.subscribe(acc)
          if subscribe_result != 0:
              print('账号订阅失败 %d'%subscribe_result)
          print(subscribe_result)
          stock_code = '600000.SH'
          # 使用指定价下单,接口返回订单编号,后续可以用于撤单操作以及查询委托状态
          print("order using the fix price:")
          fix_result_order_id = xt_trader.order_stock(acc, stock_code, xtconstant.STOCK_BUY, 200, xtconstant.FIX_PRICE, 10.5, 'strategy_name', 'remark')
          print(fix_result_order_id)
          # 使用订单编号撤单
          print("cancel order:")
          cancel_order_result = xt_trader.cancel_order_stock(acc, fix_result_order_id)
          print(cancel_order_result)
          # 使用异步下单接口,接口返回下单请求序号seq,seq可以和on_order_stock_async_response的委托反馈response对应起来
          print("order using async api:")
          async_seq = xt_trader.order_stock(acc, stock_code, xtconstant.STOCK_BUY, 200, xtconstant.FIX_PRICE, 10.5, 'strategy_name', 'remark')
          print(async_seq)
          # 查询证券资产
          print("query asset:")
          asset = xt_trader.query_stock_asset(acc)
          if asset:
              print("asset:")
              print("cash {0}".format(asset.cash))
          # 根据订单编号查询委托
          print("query order:")
          order = xt_trader.query_stock_order(acc, fix_result_order_id)
          if order:
              print("order:")
              print("order {0}".format(order.order_id))
          # 查询当日所有的委托
          print("query orders:")
          orders = xt_trader.query_stock_orders(acc)
          print("orders:", len(orders))
          if len(orders) != 0:
              print("last order:")
              print("{0} {1} {2}".format(orders[-1].stock_code, orders[-1].order_volume, orders[-1].price))
          # 查询当日所有的成交
          print("query trade:")
          trades = xt_trader.query_stock_trades(acc)
          print("trades:", len(trades))
          if len(trades) != 0:
              print("last trade:")
              print("{0} {1} {2}".format(trades[-1].stock_code, trades[-1].traded_volume, trades[-1].traded_price))
          # 查询当日所有的持仓
          print("query positions:")
          positions = xt_trader.query_stock_positions(acc)
          print("positions:", len(positions))
          if len(positions) != 0:
              print("last position:")
              print("{0} {1} {2}".format(positions[-1].account_id, positions[-1].stock_code, positions[-1].volume))
          # 根据股票代码查询对应持仓
          print("query position:")
          position = xt_trader.query_stock_position(acc, stock_code)
          if position:
              print("position:")
              print("{0} {1} {2}".format(position.account_id, position.stock_code, position.volume))
          # 阻塞线程,接收交易推送
          xt_trader.run_forever()
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      上次更新: 2023/10/12, 10:46:32
      上一章-版本信息
      下一章-接口说明

      ← 版本信息 接口说明→

      Copyright © 2022-2024 北京睿智融科控股股份有限公司 | 迅投官网
      请使用微信扫码联系客服
      请使用微信扫码联系客服
      点击这里给我发消息
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式