自由贸易应用程序API

freetrade的Python项目详细描述


自由贸易API

这是试图为FreeTrade制作一个非正式的python包。 目前还没有正式的api发布。自由贸易是英国监管的零收费股票经纪人。

支持的内容

  • 查找包含资产类别、市场、货币、国家等信息的tradable securities列表。
  • Trading View的监视列表创建一个标记列表。
  • Historical prices
  • 登录自由贸易帐户并将会话保存到ft-session.json文件中。

安装

通过pip包管理器安装:

pip install freetrade

或者,对于开发此软件包:

conda create -n myenv python=3.7
conda activate myenv
pip install -r requirements.txt

先决条件

在运行之前,必须设置api密钥。编辑ft-keys.json以包含必要的api键。 这些密钥可以使用一个工具找到,该工具可以提取StringCare机密,例如DeStringCare

API

创建ft自由贸易对象

未经验证

fromfreetradeimportFreeTradeft=FreeTrade()

唯一有效的方法是Index类,即获取支持的股票代码列表。

使用身份验证
fromfreetradeimportFreeTradeemail='...'# Email to use for the loginft=FreeTrade(email)

默认情况下,在创建对象时,它将尝试从ft-session.json文件加载较旧的已验证会话。 否则它将再次登录,并请求一次性密码(otp),该密码将发送到电子邮件。

代码从标准用户输入解析otp。或者在FreeTrade对象中指定otp_parser参数 一个可以获取电子邮件并解析otp本身的函数。

Index-不需要身份验证

股票行情记录

假设创建了ft对象,下面是一个股票一个月的历史价格。

prices=ft.index.get_ticker_history('TSLA','XNAS')forhistory_date,priceinprices.items():print(f'{history_date}: ${price:.2f}')

获取资产
assets=ft.index.get_assets()

返回具有子类别的不同类别的词典。 这些子类别包含库存资产的列表。

  • currency
    • GBP/USD:资产列表
  • exchange
    • XLON/XNYS/XNAS:资产列表
  • asset_class
    • ETF/EQUITY/ADR:资产列表
  • country_of_incorporation
    • IE/GB/US/KY/……:资产列表
  • all:资产列表

ETF资产样本LSE:ERNU

{"asset_class":"ETF","symbol":"ERNU","isin":"IE00BCRY6227","exchange":"XLON","currency":"GBP","country_of_incorporation":"IE","long_title":"iShares $ Ultrashort Bond UCITS ETF (Dist.)","short_title":"$ Ultrashort","subtitle":"Very short maturity $ debt","logo_4x":"//a.storyblok.com/f/41481/640x640/7ec0a292de/ishares-symbol-4x.png","isa_eligible":true,"coming_soon":false,"required_version":"1.0","objectID":"IE00BCRY6227",...}

获取票据
tickers=ft.index.get_tickers()

返回字典,其中:

  • 密钥是自由贸易使用的交换符号,并且
  • value是一个ticker符号列表
tickers={'XLON':['ERNU','III','3IN',...],'XNYS':['MMM','ABBV','BABA',...],'XNAS':['ATVI','ADBE','AMD','GOOGL','AMZN',...]}

获取交易视图监视列表的票务列表

tickers_union=ft.index.get_tradingview_tickers(join_exchanges=True)

返回用于导入交易视图监视列表的字符串格式。

使用join_exchanges = True

tickers_union='LSE:ERNU,LSE:III,LSE:3IN,LSE:ABF,LSE:ACA,LSE:ADM,...'

默认值(当join_exchanges = False时):

tickers_union={'XLON':'LSE:ERNU,LSE:III,LSE:3IN,LSE:ABF,LSE:ACA,LSE:ADM,...','XNYS':'NYSE:MMM,NYSE:ABBV,NYSE:BABA,NYSE:AXP,NYSE:APA,NYSE:T,...','XNAS':'NASDAQ:ATVI,NASDAQ:ADBE,NASDAQ:AMD,NASDAQ:GOOGL,NASDAQ:AMZN,...'}

API-需要验证

查找邮政编码的地址

postcode='E15JL'address=ft.api.get_address_by_postcode(postcode)

返回地址列表,例如示例地址:

[{"summaryline":"Freetrade, 68-80 Hanbury Street, London, Greater London, E1 5JL","organisation":"Freetrade","number":"68-80","premise":"68-80","street":"Hanbury Street","posttown":"London","county":"Greater London","postcode":"E1 5JL"}]

验证银行号码

bank=ft.api.validate_bank('308012','15887060')

返回有关帐号的许多信息,例如示例值:

{"result":"VALID","sortcode":"308012","bicbank":"LOYDGB21","bankname":"CITY OFFICE (308012)","owningbank":"LLOYDS BANK PLC","chapssrbicbank":"LOYDGB2L","chapssrbicbr":"XXX",...}

获取价格历史记录

tesla=ft.api.get_ticker_history('TSLA','XNAS',duration='1m')national_grid=ft.api.get_ticker_history('NG.','XLON',duration='1m')

可能的持续时间值,其中1m是默认值:

  • 5y2y1yytd6m3m1m1d

返回按日期升序排序的数据点OrderedDict

样本输出:

tesla=OrderedDict([('2019-04-04',267.78),('2019-04-05',274.96),('2019-04-08',273.2),('2019-04-09',272.31),('2019-04-10',276.06),...])

注意:

  • 对英国证券使用Quandl
  • 对其他证券使用IEXTrading

DataStore-需要认证

下载或更新历史价格

ft.datastore.update_historical_prices()

将资产调整后的历史收盘价保存到history目录中。如果它不存在,它就被创建了。

文件名是ticker的符号,每个价格都按升序保存。

样本输入history/TSLA.csv

2014-05-05,216.61
2014-05-06,207.28
2014-05-07,201.35
2014-05-08,178.59
2014-05-09,182.26
2014-05-12,184.67
2014-05-13,190.16
...

将历史数据加载为pd.DataFrame

此函数从history目录加载历史数据。

注THA一些资产由于没有在当天交易而丢失了价格,因此显示为nan

df=ft.datastore.load_historical_data_as_dataframe()print(df.head(),df.shape)

样本输出:

               CSCO          SVT  ...          WTB          NXT
Date                              ...                          
2014-05-05  19.5875  1486.452691  ...  3650.414898  5184.507159
2014-05-06  19.3870  1489.696450  ...  3659.383977  5137.446580
2014-05-07  19.5150  1509.159006  ...  3645.033451  5094.307715
2014-05-08  19.6413  1510.780885  ...  3677.322133  5082.542570
2014-05-09  19.6430  1512.402765  ...  3676.425226  5070.777425

[5 rows x 341 columns] (1305, 341)

还有别的吗?

  • 如果您发现任何问题或有改进的想法,请随时制作GitHub issue

  • Pull requests如果您对此代码进行了改进,欢迎使用。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java迷宫解算器在死胡同中陷入循环   java JPA在一个查询中检索2个列表   java正则表达式匹配文档中两个字符串之间的所有字符   java更改JTable标题高度   安卓忽略调试库中的java代码   java使用ScheduledExecutorService延迟Spring WebClient调用不会等待响应   如何使用Java将包含JSON对象的字符串转换为实际的JSON   sqlite数据库连接:java。Lang.ClassNotFoundException:org。sqlite。JDBC   在MySQL中存储表情符号的java获取错误字符串值错误   当发送包含超过一定大小字节数据的对象时,安卓 Java StreamCorruptedException   Java游戏旋转图像和轴   java IntelliJ Idea:无法解析实体类的列   Android中带有editText的java AlertDialog   map only和mapreduce应用程序之间的java差异   如何在Kotlin编写的接口中使用默认方法的Java8特性   java CPU时间百分比算法问题   java如何在WEBINF文件夹中使用带有JAR的taglibs JSTL/core   有没有办法在Java中找到JPanel和/或JFrame的长度和宽度?