549879767
, 429011814
(уже заполнена) для обсужденияРазработка: Ubuntu 16.04
/ Python 3.5
Форум по количественному анализу
Класс библиотеки для получения бесплатной реальной информации от新浪财经: easyquotation
Простой фреймворк для количественной торговли акциями с использованием easytrader и easyquotation
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
user = easytrader.use('yjb') # YJBank поддерживает ['yjb', 'YJB', 'YJBank']
user = easytrader.use('ht') # HuATAI поддерживает ['ht', 'HT', 'Huatai']
Замечание: Если ваш аккаунт Huatai начинается с 08
и вы можете успешно войти в систему, но при других операциях получаете ошибки типа "Account record table does not exist", попробуйте использовать user = easytrader.use('ht', remove_zero=False)
.
user = easytrader.use('yh') # Galaxy поддерживает ['yh', 'YH', 'Galaxy']
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
.
yjb.json
. Поле password
должно содержать зашифрованный пароль.yh.json
. Поле trdpwd
должно содержать зашифрованный пароль, который следует получить после первого входа через значение trdpwd
запроса POST
.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)
user.cancel_entrust('номер заявки')
user.cancel_entrust('номер заявки', 'код актива')
user.cancel_entrust('номер заявки', 'код актива')
user.fundsubscribe('код фонда', 'количество единиц')
user.fundpurchase('код фонда', 'количество единиц')
user.fundredemption('code of the fund', 'number of units')
##### Merging Funds
```python
user.fundmerge('code of the fund', 'number of units')
user.fundsplit('code of the fund', 'number of units')
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": "средняя цена сделки",
]}
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('код_акций')
user.cnjj_redemption('код_акций', 'количество_вывода')
user.cnjj_apply('код_акций', 'количество_ввода')
user.nxbQueryPrice('код_фонда')
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,
'валюта': 'юани'
}
]
[{ 'время_заявки': '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 )