杰瑞科技汇

Python easytrader怎么用?新手入门指南

easytrader 是一个非常流行的 Python 开源库,主要用于模拟券商的登录和交易操作,它通过解析券商网页或客户端的界面元素,实现程序化的登录、查询持仓、查询资金、下单等操作。

Python easytrader怎么用?新手入门指南-图1
(图片来源网络,侵删)

核心特点

  1. 模拟交易:这是 easytrader 最核心的用途,它不连接真实的券商交易接口,而是模拟用户的操作,因此非常适合用于量化策略的回测和模拟盘验证,无需担心真实资金的风险。
  2. 支持多家券商:支持市面上主流的券商,如华泰证券(涨乐财富通)、中信证券(信e投)、东方财富(东方财富网/Choice)、平安证券(平安证券)、招商证券(智远理财)等。
  3. 易于使用:封装了复杂的底层操作(如网页解析、元素定位),提供了简洁的 Python API,让用户可以快速上手。
  4. 功能全面:支持登录、获取账户信息(资金、持仓)、买入、卖出、撤单等大部分常见的交易操作。

安装

你需要通过 pip 安装它:

pip install easytrader

基本使用流程

使用 easytrader 的基本流程通常分为三步:

  1. 创建客户端对象
  2. 登录:需要提供用户名、密码,以及可能需要的交易密码或验证码。
  3. 执行操作:调用对象的方法进行交易或查询。

详细示例

下面我们以最常用的华泰证券(涨乐财富通)为例,展示一个完整的流程。

准备工作

  • 安装 easytrader
  • 确保你已经开通了对应券商的账户,并安装了其官方交易软件(如涨乐财富通)。
  • 重要提示:在首次使用前,你需要先手动登录一次券商的交易软件或网页版,并勾选“记住密码”或“自动登录”选项。easytrader 正是读取这些保存的登录信息来实现自动登录的。

示例代码:登录并获取账户信息

import easytrader
# 创建客户端对象
# 对于华泰证券,使用 'yh_client' 类型
user = easytrader.use('yh_client') # 或者 easytrader.use('ht')
# --- 登录信息 ---
# easytrader 会自动在本地查找你之前登录时保存的 cookies 和信息
# 所以通常情况下,你只需要指定用户名和密码
# 如果找不到自动登录信息,可能需要手动指定路径或提供更多信息
user.prepare('username', 'password') 
# 如果你需要指定配置文件的路径(例如在服务器上运行)
# user_path = '/path/to/your/easytrader_config.json'
# user = easytrader.use('yh_client')
# user.prepare(user_path=user_path)
try:
    # 登录
    print("正在登录...")
    user.login()
    print("登录成功!")
    # --- 获取账户信息 ---
    # 获取资金信息
    balance_info = user.balance
    print("\n--- 资金信息 ---")
    print(f"总资产: {balance_info['total_assets']}")
    print(f"可用资金: {balance_info['available']}")
    print(f"持仓市值: {balance_info['market_value']}")
    # 获取持仓信息
    positions = user.position
    print("\n--- 持仓信息 ---")
    if positions:
        for pos in positions:
            print(f"股票代码: {pos['stock_code']}, 名称: {pos['stock_name']}, "
                  f"持仓: {pos['volume']}股, 成本价: {pos['cost_price']}, "
                  f"当前价: {pos['current_price']}, 市值: {pos['market_value']}")
    else:
        print("当前无持仓。")
except Exception as e:
    print(f"操作失败: {e}")
    print("请检查:")
    print("1. 用户名和密码是否正确。")
    print("2. 是否已手动登录券商软件并勾选'记住密码'。")
    print("3. 券商软件或网页是否有更新,导致元素定位失败。")

示例代码:买入/卖出股票

import easytrader
# 假设已经登录成功(复用上面的登录代码)
user = easytrader.use('yh_client')
user.prepare('username', 'password')
user.login()
# --- 买入操作 ---
# 注意:模拟交易,不会真实扣款
stock_code = '600519' # 贵州茅台
stock_name = '贵州茅台'
buy_price = 1800.0   # 买入价格
buy_volume = 100     # 买入数量(必须是100的整数倍,根据券商规则)
print(f"\n尝试买入 {stock_name} ({stock_code})...")
try:
    # 买入方法
    user.buy(stock_code, price=buy_price, volume=buy_volume)
    print(f"模拟买入成功!委托价格: {buy_price}, 数量: {buy_volume}股")
except Exception as e:
    print(f"买入失败: {e}")
# --- 卖出操作 ---
# 假设你上面已经成功买入,现在想卖出一部分
sell_volume = 50 # 卖出数量
print(f"\n尝试卖出 {stock_name} ({stock_code})...")
try:
    # 卖出方法
    user.sell(stock_code, price=buy_price, volume=sell_volume)
    print(f"模拟卖出成功!委托价格: {buy_price}, 数量: {sell_volume}股")
except Exception as e:
    print(f"卖出失败: {e}")

支持的券商列表

easytrader 支持多种券商,创建客户端时需要指定对应的类型,以下是部分支持的券商及其对应的类型字符串:

Python easytrader怎么用?新手入门指南-图2
(图片来源网络,侵删)
券商名称 客户端类型字符串 备注
华泰证券 'yh_client' 最常用,基于涨乐财富通
中信证券 'zx_client' 基于信e投
东方财富 'gf_client' 基于东方财富网或Choice终端
平安证券 'pa_client' 基于平安证券
招商证券 'zs_client' 基于智远理财
广发证券 'gf_client' 与东方财富类似,可能需要配置区分
银河证券 'yh_client' 部分版本支持
海通证券 'ht_client' 基于e海通财
国泰君安 'gj_client' 基于君弘APP

如何查看所有支持的券商? 你可以查看 easytrader 的源代码,在 clients 目录下会列出所有支持的客户端。

import easytrader
import os
# 查看支持的客户端类型
clients_dir = os.path.join(os.path.dirname(easytrader.__file__), 'clients')
supported_brokers = [f for f in os.listdir(clients_dir) if f.endswith('.py') and f != '__init__.py']
print("支持的券商列表:")
for broker in supported_brokers:
    print(broker.replace('.py', ''))

重要注意事项和局限性

  1. 模拟交易,非实盘:这是最重要的一点!easytrader 的所有操作都是模拟的,不会影响你的真实资金,它主要用于策略验证。
  2. 依赖券商界面稳定性easytrader 的底层原理是“屏幕抓取”或“网页解析”,如果券商更新了其软件或网站界面,可能会导致 easytrader 无法正常工作(元素定位失败),这是此类工具最大的不确定性。
  3. 安全性问题:由于需要读取本地保存的登录信息(cookies),请确保你的电脑环境安全,不要将相关配置文件随意分享。
  4. 性能限制:相比官方提供的 API(如 REST API),easytrader 的性能要低得多,不适合进行高频交易或需要极低延迟的策略。
  5. 功能限制:并非券商官方提供的所有功能都能通过 easytrader 实现,它主要覆盖了常见的交易和查询功能。

easytrader 是一个非常适合 Python 初学者和量化爱好者的工具,它极大地降低了进行量化交易回测的门槛,让你可以专注于策略逻辑本身,而无需关心复杂的券商接口对接。

如果你的需求是:

  • 快速验证一个交易想法。
  • 学习如何用 Python 进行程序化交易。
  • 进行策略的模拟盘测试。

easytrader 是一个绝佳的选择。

如果你的需求是:

  • 进行实盘交易。
  • 追求高性能和低延迟。
  • 需要使用券商提供的全部高级功能。

那么你应该考虑使用券商官方提供的 API 接口。

分享:
扫描分享到社交APP
上一篇
下一篇