我找到了一篇用户文章ErhoSen... 通过它,我了解到Tinkoff Investments经纪人为其客户提供了一个API,用于与具有单个投资帐户(IIS)的经纪帐户进行交互。借助它的帮助,您可以获取股票,货币对的列表,通过报价单找出证券的价格,查看账户交易列表,获取有关投资组合的信息等。但是,我缺少脚本的现有功能,因此决定通过在此处添加功能来添加它。
获取令牌
API工作是通过令牌完成的。获取令牌的过程在GitHub上的文档中进行了描述。要获得它,您需要:
- 转到Tinkoff的网站并登录到您的帐户。
- 确保禁用“通过代码确认交易”功能。
- 向下滚动到OpenAPI的项目令牌,然后单击“用于交易的令牌”
- 复制并保存令牌。它仅显示一次,但是您可以发行无限数量的令牌。
收到令牌后,您可以开始使用该表。单击链接并复制要保留记录的表。
将令牌粘贴到“设置”表中的单元格B1中。
重要!插入令牌后,请勿删除或重命名“设置”表。如果当前美元汇率出现在单元格B3中,那么恭喜您,一切准备就绪。
脚本的主要功能:
- getPrice()-通过代码获取仪器的当前值
- getTrades(ticker)-获取特定工具的所有交易的列表。在方括号中,您必须指明要查看其操作列表的工具的股票代号
- getAllTrades() — .
- getPortfolio() —
- getCurrencies() —
- getTradesIIS (ticker) — (). ,
- getAllTradesIIS() — ().
- getIISPort() —
- getCurrenciesIIS() —
- getUSDval() — ( )
收到必要的数据后,您可以复制获得的值并继续在其他工作表或其他表(包括Excel-e)中使用它们。
getPortfolio函数如何获取投资组合的示例
手动数据更新
默认情况下,Google不提供用于更新自定义脚本的工具,因此我不得不使用第三方解决方案。为了能够通过单击来更新数据,在使用方括号中的函数时,需要设置单元格$ Z $ 1,该单元格记录当前日期和时间,以后将用于手动更新。下面,我将提供一段代码来负责更新数据。
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet()
var entries = [{
name : "",
functionName : "refresh"
}]
sheet.addMenu("TI", entries)
};
function refresh() {
SpreadsheetApp.getActiveSpreadsheet().getRange('Z1').setValue(new Date().toTimeString());
}
首先,您需要单击TI子菜单中的“更新”按钮(显示在“帮助”选项卡的右侧)。
之后,将出现一个警告窗口:
单击继续。接下来,将出现另一个警告窗口,您需要单击其他设置,然后在打开的字段中选择转到“ Tinkoff投资”页面(不安全):
必须执行这些操作,因为更改单元格Z1值的脚本必须首先访问当前表以便仅在其中执行。之后,我们将有机会根据要求更新表中的数据。 getPrice函数(“ AMD”; $ Z $ 1)的手动更新示例:
注意!此脚本的开发者将无权访问您的Google帐户,云端硬盘中的表格列表或令牌。如果您担心数据的安全性,可以复制我的脚本并将其粘贴到表中。为此,请在Google表格中打开电子表格,然后在顶部菜单中,依次点击工具和脚本编辑器。
这将打开google脚本环境。清除窗口中的默认代码,从链接中复制代码并将其粘贴到窗口中。
之后,保存脚本,为项目和脚本本身命名。然后回到表格,创建一个“设置”表,并在单元格B1中粘贴您的OpenAPI令牌。之后,您可以使用表格。
结论
我要表示感激 ErhoSen他的文章和源代码,由我修改。
同样是供个人使用,我创建了一个Telegram机器人,并计划了未来的计划,以便在想法得到回应时将这个想法带入脑海。如果您不想浪费时间进入Tinkoff Investments应用程序,而该应用程序通常坐在笔记本电脑上并且不希望经常登录该站点或存储投资组合内容的更改历史记录,则该bot十分方便。