【easyTrader源码分析2——api.py】两大核心API

本篇开始具体分析每个文件。

api.py

api.py文件,是使用easyTrader的入口,他由两个核心方法组成:usefollower。分别对应该库的两个api:easyTrader.use()easyTrader.follower()。而这正对应了两大核心功能:下单跟单

该文件的代码,不算多,也比较好理解。下边分别介绍

引入模块

import logging
import sys

import six

from easytrader.joinquant_follower import JoinQuantFollower
from easytrader.log import logger
from easytrader.ricequant_follower import RiceQuantFollower
from easytrader.xq_follower import XueQiuFollower
from easytrader.xqtrader import XueQiuTrader
  • logging(日志模块)和sys(系统模块),都是Python标准库的内置模块。
  • six,是一个第三方库,用来处理Python2与Python3的兼容问题,不过这里只是引用,并没有使用,而且easyTrader并不支持Python2,估计是忘删了。
  • JoinQuantFollowerloggerRiceQuantFollowerXueQiuFollowerXueQiuTrader,都是包内部的模块,后边会用到。

Python版本检测

if sys.version_info <= (3, 5):
    raise TypeError("不支持 Python3.5 及以下版本,请升级")

要求Python版本大于3.5

use方法

def use(broker, debug=False, **kwargs):
    """用于生成特定的券商对象
    :param broker:券商名支持 ['yh_client', '银河客户端'] ['ht_client', '华泰客户端']
    :param debug: 控制 debug 日志的显示, 默认为 True
    :param initial_assets: [雪球参数] 控制雪球初始资金,默认为一百万
    :return the class of trader

    Usage::

        >>> import easytrader
        >>> user = easytrader.use('xq')
        >>> user.prepare('xq.json')
    """
    if debug:
        logger.setLevel(logging.DEBUG)

    if broker.lower() in ["xq", "雪球"]:
        return XueQiuTrader(**kwargs)

    if broker.lower() in ["yh_client", "银河客户端"]:
        from .yh_clienttrader import YHClientTrader

        return YHClientTrader()

    if broker.lower() in ["ht_client", "华泰客户端"]:
        from .ht_clienttrader import HTClientTrader

        return HTClientTrader()

    if broker.lower() in ["wk_client", "五矿客户端"]:
        from easytrader.wk_clienttrader import WKClientTrader

        return WKClientTrader()

    if broker.lower() in ["htzq_client", "海通证券客户端"]:
        from easytrader.htzq_clienttrader import HTZQClientTrader

        return HTZQClientTrader()

    if broker.lower() in ["gj_client", "国金客户端"]:
        from .gj_clienttrader import GJClientTrader

        return GJClientTrader()

    if broker.lower() in ["gf_client", "广发客户端"]:
        from .gf_clienttrader import GFClientTrader

        return GFClientTrader()

    if broker.lower() in ["universal_client", "通用同花顺客户端"]:
        from easytrader.universal_clienttrader import UniversalClientTrader

        return UniversalClientTrader()

    if broker.lower() in ["ths", "同花顺客户端"]:
        from .clienttrader import ClientTrader

        return ClientTrader()

    raise NotImplementedError
  • 入参broker:字符串类型,券商客户端名称,每个名称都有中英文两种,根据不同的名称,调用不同的客户端Trader类。
  • 入参debug:是否显示debug日志,代码注释写的默认值为True,应该是写错了,默认参数是False
  • 其他入参:雪球客户端有一些特殊的参数,分析雪球客户端时具体展开。
  • 程序的实体也很简单,就是根据broker的值,走不同的if分支,返回不同的类,就可以实现对不同客户端的控制。具体的对应关系,见下边列表格显示:
brokerclass
[“xq”, “雪球”]XueQiuTrader
[“yh_client”, “银河客户端”]YHClientTrader
[“ht_client”, “华泰客户端”]HTClientTrader
[“wk_client”, “五矿客户端”]WKClientTrader
[“htzq_client”, “海通证券客户端”]HTZQClientTrader
[“gj_client”, “国金客户端”]GJClientTrader
[“gf_client”, “广发客户端”]GFClientTrader
[“universal_client”, “通用同花顺客户端”]UniversalClientTrader
[“ths”, “同花顺客户端”]ClientTrader

以上,就是支持的所有客户端类型,以及其broker值,我目前也没有都试过,试过同花顺和国金,后面想办法试试其他的。

follower方法

def follower(platform, **kwargs):
    """用于生成特定的券商对象
    :param platform:平台支持 ['jq', 'joinquant', '聚宽’]
    :param initial_assets: [雪球参数] 控制雪球初始资金,默认为一万,
        总资金由 initial_assets * 组合当前净值 得出
    :param total_assets: [雪球参数] 控制雪球总资金,无默认值,
        若设置则覆盖 initial_assets
    :return the class of follower

    Usage::

        >>> import easytrader
        >>> user = easytrader.use('xq')
        >>> user.prepare('xq.json')
        >>> jq = easytrader.follower('jq')
        >>> jq.login(user='username', password='password')
        >>> jq.follow(users=user, strategies=['strategies_link'])
    """
    if platform.lower() in ["rq", "ricequant", "米筐"]:
        return RiceQuantFollower()
    if platform.lower() in ["jq", "joinquant", "聚宽"]:
        return JoinQuantFollower()
    if platform.lower() in ["xq", "xueqiu", "雪球"]:
        return XueQiuFollower(**kwargs)
    raise NotImplementedError
  • 入参platform:字符串类型,代表各种第三方平台。
  • 其他入参:雪球类型需要其他参数,以后展开分析。
  • follower方法的逻辑也一样简单,根据不同的platform,返回不同的Follower类,以后续获得某个该平台的公开组合,进行跟单。
platformclass
[“rq”, “ricequant”, “米筐”]RiceQuantFollower
[“jq”, “joinquant”, “聚宽”]JoinQuantFollower
[“xq”, “xueqiu”, “雪球”]XueQiuFollower

结语

本文介绍了api.py文件,从这里,我们可以继续向easyTrader内部切入,可以明显看到两个方向:一个是对交易客户端的控制,另一个是对量化平台组合的跟单。两者结合到一起,就可以完成跟单组合,并自动化交易的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化投资技术

支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值