コード例 #1
0
    def context_setting(self):
        """
        API trading and quote context setting
        :returns: trade context, quote context
        """
        if self.unlock_password == "":
            raise Exception("请先配置交易解锁密码! password: {}".format(
                self.unlock_password))

        quote_ctx = ft.OpenQuoteContext(host=self.api_svr_ip,
                                        port=self.api_svr_port)

        if 'HK.' in self.stock:
            trade_ctx = ft.OpenHKTradeContext(host=self.api_svr_ip,
                                              port=self.api_svr_port)

            if self.trade_env == ft.TrdEnv.REAL:
                ret_code, ret_data = trade_ctx.unlock_trade(
                    self.unlock_password)
                if ret_code == ft.RET_OK:
                    print('解锁交易成功!')
                else:
                    raise Exception("请求交易解锁失败: {}".format(ret_data))
            else:
                print('解锁交易成功!')
        elif 'US.' in self.stock:
            if self.trade_env != 0:
                raise Exception("美股交易接口不支持仿真环境 trade_env: {}".format(
                    self.trade_env))
            trade_ctx = ft.OpenUSTradeContext(host=self.api_svr_ip,
                                              port=self.api_svr_port)
        else:
            raise Exception("stock输入错误 stock: {}".format(self.stock))

        return quote_ctx, trade_ctx
コード例 #2
0
    def open_api(self):
        SQLog.info("open_api,quote already open=", self.is_open())

        if self._quote_ctx is None:
            self._quote_ctx = futu.OpenQuoteContext(self.ApiIP, self.ApiPort)

        if self._trade_ctx is None:
            if self.Market == futu.Market.HK:
                self._trade_ctx = futu.OpenHKTradeContext(
                    self.ApiIP, self.ApiPort)
            elif self.Market == futu.Market.US:
                self._trade_ctx = futu.OpenUSTradeContext(
                    self.ApiIP, self.ApiPort)
            else:
                raise Exception("open_api failed,Market parameter wrong.")
            if self.EnvType == futu.TrdEnv.REAL:
                ret, data = self._trade_ctx.unlock_trade(
                    self.TradePassword, self.TradePasswordMd5)
                if futu.RET_OK != ret:
                    raise Exception(
                        "open_api failed,unlock_trade failed,data=" +
                        str(data))

            ret, data = self._trade_ctx.get_acc_list()
            SQLog.debug("open_api,get_acc_list,ret=", ret, "data=\n", data)

            self._trade_ctx.set_handler(TradeOrderHanbler(self))
            self._trade_ctx.set_handler(TradeDealHandler())
            self._trade_ctx.start()
            super().open_api()

            if self.AveVolaStockCodes and self._frame:
                self._frame.load_savequote_data(
                    self.AveVolaStockCodes.split(','))
        return True
コード例 #3
0
ファイル: basic.py プロジェクト: kwokhung/algoTrade
    def context_setting(api_svr_ip, api_svr_port, unlock_password):
        quote_ctx = ft.OpenQuoteContext(host=api_svr_ip, port=api_svr_port)

        hk_trade_ctx = ft.OpenHKTradeContext(host=api_svr_ip,
                                             port=api_svr_port)

        ret_code, ret_data = hk_trade_ctx.unlock_trade(unlock_password)

        if ret_code != ft.RET_OK:
            hk_trade_ctx = None

        hkcc_trade_ctx = ft.OpenHKCCTradeContext(host=api_svr_ip,
                                                 port=api_svr_port)

        ret_code, ret_data = hkcc_trade_ctx.unlock_trade(unlock_password)

        if ret_code != ft.RET_OK:
            hkcc_trade_ctx = None

        us_trade_ctx = ft.OpenUSTradeContext(host=api_svr_ip,
                                             port=api_svr_port)

        ret_code, ret_data = us_trade_ctx.unlock_trade(unlock_password)

        if ret_code != ft.RET_OK:
            us_trade_ctx = None

        return quote_ctx, hk_trade_ctx, hkcc_trade_ctx, us_trade_ctx
コード例 #4
0
ファイル: API.py プロジェクト: hisopika71199191/FUTU
 def __init__(self, password):
     """
     https://futunnopen.github.io/futuquant/api/Market_API_Python_Doc.html
     """
     self.quote_ctx = ft.OpenQuoteContext(host="127.0.0.1", port=11111)
     self.USTrade_ctx = ft.OpenUSTradeContext(host='127.0.0.1', port=11111)
     self.HKTrade_ctx = ft.OpenHKTradeContext(host='127.0.0.1', port=11111)
     self.quote_ctx.start()
     self.USTrade_ctx.start()
     self.HKTrade_ctx.start()
     self.password = password
コード例 #5
0
    def _process_init_api(self):
        if type(self._quote_ctx) != int or type(self._trade_ctx) != int:
            return

        # 创建futu api对象
        if self._quote_ctx == 0:
            self._quote_ctx = ft.OpenQuoteContext(self._api_ip, self._api_port)
        if self._trade_ctx == 0:
            if self._market == MARKET_HK:
                self._trade_ctx = ft.OpenHKTradeContext(
                    self._api_ip, self._api_port)
            elif self._market == MARKET_US:
                self._trade_ctx = ft.OpenUSTradeContext(
                    self._api_ip, self._api_port)
            else:
                raise Exception("error param!")

        if self._env_type == ft.TrdEnv.REAL:
            ret, _ = self._trade_ctx.unlock_trade(self._trade_password)
            if 0 != ret:
                raise Exception("error param!")

        # 开始futu api异步数据推送
        self._quote_ctx.start()
        self._trade_ctx.start()

        # 市场状态检查
        self._check_market_event = FutuMarketEvent(self._market,
                                                   self._quote_ctx,
                                                   self._event_engine)

        #定阅行情数据
        self._futu_data_event = FutuDataEvent(self, self._quote_ctx,
                                              self._event_engine,
                                              self._tiny_strate.symbol_pools)

        # 启动事件
        self._tiny_strate.on_start()
コード例 #6
0
            print('smart_sell 下单失败:{}'.format(data))
            return None
        else:
            print('smart_sell 下单成功')
            print(data)
            return data


if __name__ == "__main__":

    ip = '127.0.0.1'
    port = 11111

    code = 'HK.00700'
    unlock_pwd = '123456'
    trd_env = ft.TrdEnv.SIMULATE
    order_type = ft.OrderType.NORMAL

    quote_ctx = ft.OpenQuoteContext(ip, port)
    trd_ctx = ft.OpenHKTradeContext(ip, port)

    quote_ctx.subscribe(code, ft.SubType.ORDER_BOOK)
    if trd_env == ft.TrdEnv.REAL:
        print("* unlock_trade:{}".format(trd_ctx.unlock_trade(unlock_pwd)))

    # simple_sell(quote_ctx, trd_ctx, code, 380.0, 100, trd_env, order_type)
    smart_sell(quote_ctx, trd_ctx, code, 2600, trd_env, order_type)
    # smart_buy(quote_ctx, trd_ctx, code, 1000, trd_env, order_type)
    # quote_ctx.close()
    # trd_ctx.close()
コード例 #7
0
print(quote_ctx.get_market_snapshot(code_list))                              # 获取市场快照
print(quote_ctx.get_plate_list(market, ft.Plate.ALL))                         # 获取板块集合下的子板块列表
print(quote_ctx.get_plate_stock(plate))                         # 获取板块下的股票列表

# 高频数据接口
quote_ctx.subscribe(code, [ft.SubType.QUOTE, ft.SubType.TICKER, ft.SubType.K_DAY, ft.SubType.ORDER_BOOK, ft.SubType.RT_DATA, ft.SubType.BROKER])
print(quote_ctx.get_stock_quote(code))  # 获取报价
print(quote_ctx.get_rt_ticker(code))   # 获取逐笔
print(quote_ctx.get_cur_kline(code, num=100, ktype=ft.KLType.K_DAY))   #获取当前K线
print(quote_ctx.get_order_book(code))       # 获取摆盘
print(quote_ctx.get_rt_data(code))          # 获取分时数据
print(quote_ctx.get_broker_queue(code))     # 获取经纪队列

# 停止异步数据接收
quote_ctx.stop()

# 关闭对象
quote_ctx.close()

# 实例化港股交易上下文对象
trade_hk_ctx = ft.OpenHKTradeContext(host="127.0.0.1", port=11111)

# 交易接口列表
print(trade_hk_ctx.unlock_trade(password='******'))                # 解锁接口
print(trade_hk_ctx.accinfo_query(trd_env=ft.TrdEnv.SIMULATE))      # 查询账户信息
print(trade_hk_ctx.place_order(price=1.1, qty=2000, code=code, trd_side=ft.TrdSide.BUY, order_type=ft.OrderType.NORMAL, trd_env=ft.TrdEnv.SIMULATE))  # 下单接口
print(trade_hk_ctx.order_list_query(trd_env=ft.TrdEnv.SIMULATE))      # 查询订单列表
print(trade_hk_ctx.position_list_query(trd_env=ft.TrdEnv.SIMULATE))    # 查询持仓列表

trade_hk_ctx.close()
コード例 #8
0
import futu as ft
import pandas as pd
import numpy as np
import configparser

config = configparser.ConfigParser()
config.read('futu.config')
pwd_unlock = config['DEFAULT']['Password']
trd_ctx = ft.OpenHKTradeContext(host='127.0.0.1', port=11111)
trd_ctx.unlock_trade(pwd_unlock)
deal_list = trd_ctx.history_deal_list_query(start=config['HK']['StartDate'],
                                            end=config['HK']['EndDate'])
print(pd.DataFrame.to_csv(deal_list[1]))
trd_ctx.close()