1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chchsheng-easytrader

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

easytrader

  • Выполняет автоматическую программированную торговлю акциями
  • Реализует автоматический вход в систему
  • Поддерживает вызов через командную строку, что удобно для адаптации другими языками
  • Поддерживает Python3 / Python2, Linux / Windows
  • Для заинтересованных лиц есть группы 549879767, 429011814 (уже заполнена) для обсуждения

Разработка: Ubuntu 16.04 / Python 3.5

Относится к

Форум по количественному анализу

Класс библиотеки для получения бесплатной реальной информации от新浪财经: easyquotation

Простой фреймворк для количественной торговли акциями с использованием easytrader и easyquotation

Донат: АлиПай WeChat

Поддерживаемые брокеры

Моделирование торговли

Требования

pip install -r requirements.txt

Автоматический вход в систему для Huatai / YJBank требует установки одного из следующих двух компонентов, а для Galaxy требуется установка tesseract:

  • JAVA: рекомендовано, высокий уровень распознавания, простая установка, необходимость наличия java -version в командной строке (спасибо вкладу Air Garden)
  • tesseract: наличие tesseract в командной строке### Установка
pip install easytrader

Замечание: При установке easytrader на Windows могут возникнуть ошибки типа "No module named xxx". В этом случае используйте pip install xxx для установки недостающего модуля, затем выполните pip install easytrader снова. Дополнительную информацию можно найти в документе INSTALL4Windows.md.

Обновление

pip install easytrader --upgrade

Пример использования

Импорт:

import easytrader

Настройка аккаунта:

YJBank
user = easytrader.use('yjb') # YJBank поддерживает ['yjb', 'YJB', 'YJBank']
Huatai
user = easytrader.use('ht') # HuATAI поддерживает ['ht', 'HT', 'Huatai']

Замечание: Если ваш аккаунт Huatai начинается с 08 и вы можете успешно войти в систему, но при других операциях получаете ошибки типа "Account record table does not exist", попробуйте использовать user = easytrader.use('ht', remove_zero=False).

Galaxy
user = easytrader.use('yh') # Galaxy поддерживает ['yh', 'YH', 'Galaxy']
Guangfa
user = easytrader.use('gf') # Guangfa поддерживает ['gf', 'GF', 'Guangfa']

Войти в аккаунт

user.prepare('ht.json') # или yjb.json или yh.json и другие пути конфигурационных файлов

Примечание:

Конфигурационные файлы должны быть созданы самостоятельно с помощью текстового редактора. Не используйте Блокнот, рекомендуется использовать Notepad++ или Sublime Text.

Формат файла можно взять за основу соответствующих json файлов в директории GitHub.* Для компании "Huatai" требуется конфигурация файла ht.json. Поле trdpwd должно содержать зашифрованный пароль, который следует получить после первого входа через значение trdpwd запроса POST.

  • Для компании "Yongjinbao" требуется конфигурация файла yjb.json. Поле password должно содержать зашифрованный пароль.
  • Для компании "Yinhe" требуется конфигурация файла yh.json. Поле trdpwd должно содержать зашифрованный пароль, который следует получить после первого входа через значение trdpwd запроса POST.
  • Конфигурация для "Xueqiu": поле username является электронной почтой, а поле account — номером телефона. Достаточно заполнить одно из этих полей, другое должно быть пустым (""). Пароль следует указывать в открытом виде.

Как получить необходимую информацию для конфигурации, см. эту статью

Операции с торговлей

Пример использования для компании "Yongjinbao", аналогично для "Huatai"

Получение информации о балансе:

user.balance

возврат

[
    {
        'asset_balance': 'Общая стоимость активов',
        'current_balance': 'Текущий баланс',
        'enable_balance': 'Доступная сумма',
        'market_value': 'Стоимость ценных бумаг',
        'money_type': 'Валюта',
        'pre_interest': 'Ожидаемый процент'
    }
]

Получение информации о позициях:

user.position

возврат```python [ { 'cost_price': 'Средняя цена покупки', 'current_amount': 'Текущий остаток', 'enable_amount': 'Доступное количество для продажи', 'income_balance': 'Средний доход/убыток', 'keep_cost_price': 'Цена для сохранения прибыли', 'last_price': 'Последняя цена', 'market_value': 'Маржинальная стоимость', 'position_str': 'Строковое представление позиции', 'stock_code': 'Идентификатор актива', 'stock_name': 'Наименование актива' } ]


```python
user.entrust

возвращает

[
    {
        'business_amount': 'Объем сделки',
        'business_price': 'Цена сделки',
        'entrust_amount': 'Объем заявки',
        'entrust_bs': 'Направление сделки (покупка/продажа)',
        'entrust_no': 'Номер заявки',
        'entrust_price': 'Цена заявки',
        'entrust_status': 'Статус заявки', # Отменено / Подано
        'report_time': 'Время подачи заявки',
        'stock_code': 'Идентификатор ценной бумаги',
        'stock_name': 'Название ценной бумаги'
    }
]

Купить:

user.buy('162411', price=0.55, amount=100)

возвращает

[{'entrust_no': 'номер заявки',
  'init_date': 'дата операции',
  'batch_no': 'номер пакета заявок',
  'report_no': 'номер отчета',
  'seat_no': 'номер места',
  'entrust_time': 'время заявки',
  'entrust_price': 'цена заявки',
  'entrust_amount': 'количество заявки',
  'stock_code': 'код актива',
  'entrust_bs': 'направление сделки',
  'entrust_type': 'тип заявки',
  'entrust_status': 'статус заявки',
  'fund_account': 'номер счета',
  'error_no': 'код ошибки',
  'error_info': 'описание ошибки'}]

Продать:

user.sell('162411', price=0.55, amount=100)

Отменить заявку

HTSC
user.cancel_entrust('номер заявки')
Tushare
user.cancel_entrust('номер заявки', 'код актива')
China银河证券
user.cancel_entrust('номер заявки', 'код актива')

Функции фондов внутри биржи

Подписка на фонд
user.fundsubscribe('код фонда', 'количество единиц')
Приобретение фонда
user.fundpurchase('код фонда', 'количество единиц')
Вывод средств с фонда```python

user.fundredemption('code of the fund', 'number of units')

##### Merging Funds

```python
user.fundmerge('code of the fund', 'number of units')
Splitting Funds
user.fundsplit('code of the fund', 'number of units')

Obtaining a Trade Report

HTSC/Guangfa Securities

It should be noted that brokers usually return data for a limited number of days; for example, if you need to obtain data for all of 2015, HTSC will return data for the last 90 days of the year.

user.exchangebill   # Obtaining the trade report for the last month
```user.get_exchangebill('начальная дата', 'конечная дата')   # Указание периода времени, формат даты - "20160214"
```**возврат**
```python
{
    ["entrust_bs": "операция", # "1":"покупка", "2":"продажа", " ":"другое"
     "business_balance": "сумма сделки",
     "stock_name": "название ценной бумаги",
     "fare1": "налог с продаж",
     "occur_balance": "произошедшая сумма",
     "stock_account": "аккаунт акционера",
     "business_name": "описание", # "покупка ценных бумаг", "продажа ценных бумаг", "распределение паевых инвестиционных фондов", "слияние паевых инвестиционных фондов", "заморозка ценных бумаг в расчете", "отмена заморозки ценных бумаг в расчете", "выплата средств при выкупе паев открытого паевого инвестиционного фонда", "перечисление средств при выкупе паев открытого паевого инвестиционного фонда", "перечисление средств в фондовый депозит", "вывод средств из фондового депозита", "отмена заморозки денежных средств в расчете", "приобретение паев открытого паевого инвестиционного фонда"
     "farex": "",
     "fare0": "комиссия",
     "stock_code": "код ценной бумаги",
     "occur_amount": "количественная сумма сделки",
     "date": "дата сделки",
     "post_balance": "баланс после операции",
     "fare2": "другие сборы",
     "fare3": "",
     "entrust_no": "номер заявки",
     "business_price": "средняя цена сделки",
]}

Незаконченные ключи есть, farex, fare3

Незаконченные заголовки есть Расчетный курс, Примечание```python

user.current_deal


**возврат**

```python
[
    {
        "business_amount": "Объем сделки",
        "business_price": "Цена сделки",
        "entrust_amount": "Объем заявки",
        "entrust_bs": "Направление сделки",
        "stock_account": "Счёт акций",
        "fund_account": "Счёт средств",
        "position_str": "Строки позиции",
        "business_status": "Статус сделки",
        "date": "Дата операции",
        "business_type": "Тип сделки",
        "business_time": "Время сделки",
        "stock_code": "Код акций",
        "stock_name": "Наименование акций"
    }
]

Просмотреть доступное количество новых акций для покупки (только для использования в佣金宝)

user.ipo_enable_amount('код_акций')

Выводить снятие фондов внутри биржи (Guangfa)

user.cnjj_redemption('код_акций', 'количество_вывода')

Вводить фонд внутри биржи (Guangfa)

user.cnjj_apply('код_акций', 'количество_ввода')

Guangfa Nuyinbao

Запрос цены Nuyinbao

user.nxbQueryPrice('код_фонда')

Одиночный заказ Nuyinbao

user.nxbentrust('код_фонда', 'количество_перевода', 'коэффициент_перевода', 'направление_перевода')

Одиночный заказ за день

user.nxbQueryEntrust('начальная_дата, например: 20160515', 'конечная_дата', 'тип_запроса[0: история, 1: за день]')

Конвертация за день

user.nxbQueryDeliverOfToday()

Историческая конвертация

user.nxbQueryHisDeliver()

Запрос кода акций

user.queryOfStkCode()

Запрос позиций акций

user.queryNXBOfStock()
```### Клиентская команда строки

#### Авторизация

python cli.py --use ht --prepare ht.json


Примечание: В этот момент будет создан файл `account.session`, который сохраняет созданный объект `user`.

#### Получение баланса / позиций / других переменных

python cli.py --get balance


#### Покупка / продажа / отмена заявки

python cli.py --do buy 162411 0.450 100


#### Просмотр справки

python cli.py --help


#### Вопросы и ответы

##### Вопрос

Как закрыть вывод логов отладки?

##### Ответ

```python
user = easytrader.use('ht', debug=False)
Вопрос

После редактирования файла конфигурации при запуске возникает сообщение об ошибке декодирования json. Например:

raise JSONDecodeError("Expected value", s, err.value) from None

JSONDecodeError: Expected value
Ответ

Не используйте редактор Блокнот для редактирования конфигурационного файла json. Рекомендованы редакторы Notepad++ или Sublime Text.

Дополнительная информация

Принцип реализации программного обеспечения

Приложения

Возврат Галактики

Баланс
[
    {
        'фондовый счет': 'x',
        'оценочная рыночная стоимость': 10.1,
        'баланс денежных средств': 10.1,
        'доступные денежные средства': 10.1,
        'общая стоимость активов': 10.1,
        'оценочная прибыль/убыток акций': 10.1,
        'валюта': 'юани'
    }
]
Заявка```python

[{ 'время_заявки': '11:11:11', 'название_ценной_бумаги': 'x', 'количество_заключённых_сделок': 100, 'идентификатор_акционера': 'x', 'идентификатор_ценной_бумаги': 'x', 'статус': 'выполнено', 'количество_заявленных_ценных_бумаг': 100, 'дата_заявки': '20160401', 'биржа': 'Shenzhen A', 'количество_отменённых_заявок': 0, 'цена_заявки': 0.999, 'номер_заявки': '12345', 'тип_операции': 'покупка' }]


```python
[{
    'оценочная рыночная стоимость': 10.1,
    'оценочная прибыль/убыток': -0.0,
    'текущее количество акций': 100,
    'баланс акций': 100,
    'название ценной бумаги': 'x',
    'оценочная цена': 0.111,
    'замороженные продажи': 0,
    'замороженные покупки': 0,
    'биржа': 'Shenzhen A',
    'идентификатор ценной бумаги': '123456',
    'процент прибыли/убытка (%)': '0.00%',
    'доступное количество акций': 100,
    'идентификатор акционера': 'x'
}]

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Предоставление программной автоматизации торговли для фондов, акций и других финансовых инструментов от брокеров: Хуатай, Юнджинбао, Серебряная река, Гуанфа, Сюэцю. Включает компоненты для количественной торговли. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chchsheng-easytrader.git
git@api.gitlife.ru:oschina-mirror/chchsheng-easytrader.git
oschina-mirror
chchsheng-easytrader
chchsheng-easytrader
master