首页 > 解决方案 > CoinBase Pro API - 打字稿 API

问题描述

我是 TypeScript 的新手,但我已经为此工作了几个星期,试图在 CoinBase PRO 上设置一个快速交易机器人。我在这里使用教程脚本:

https://coinbase.github.io/coinbase-pro-trading-toolkit/cbptt_tutorials_triggers.html

此处的页面显示此代码:

<code>const options: CoinbaseProFeedConfig = {
    logger: logger,
    auth: { key: null, secret: null, passphrase: null}, // use public feed
    channels: ['ticker'],
    wsUrl: COINBASE_PRO_WS_FEED,
    apiUrl: COINBASE_PRO_API_URL
};

CBPTT.Factories.CoinbasePro.getSubscribedFeeds(options, [product]).then((feed: CoinbaseProFeed) => {
   ...
});</code>

并提供以下文本:“请注意,我们取消了 auth 对象以强制提要使用未经身份验证的消息。您可以将 auth: null 设置为仅使用默认值,因为您在环境中设置了 Coinbase Pro API 密钥,将自动使用这些并接收经过身份验证的消息(如果您想在交易完成时进行确认,那就太好了)。

但是,在查看其他教程和 Coinbase Pro (CBP) API 文档时,尽管有几个参考资料将您的 CBP API 密钥添加到“环境变量”或“环境变量”,但没有说明或教程显示如何执行此操作.

这是 TypeScript 中如此基本的东西,以至于每个人都知道如何做到这一点吗?

在教程的另一个领域,我发现我可以像这样向 AUTH 变量添加值:

<code>
const options: CoinbaseProFeedConfig = {
    logger: logger,
    apiUrl: process.env.COINBASE_PRO_API_URL || 'https://api.pro.coinbase.com',
    auth: {
        key: process.env.COINBASE_PRO_KEY || 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        secret: process.env.COINBASE_PRO_SECRET || 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+xxXX==',
        passphrase: process.env.COINBASE_PRO_PASSPHRASE || 'xxxxxxxxxx'
    },
    channels: ['ticker'],
    wsUrl: COINBASE_PRO_WS_FEED
};
</code>

像上面那样直接执行此操作,其中 XXXX 代表我的实际密钥似乎适用于 "CoinbaseProFeedConfig" 。. . 我已成功使用它来检索我的帐户余额。

但是,当我尝试在原始教程的“SubmitTrade”函数中执行类似操作时,无法将 AUTH 变量添加到以下代码中的“coinbaseProAPI”脚本中:

<code>
const coinbaseProAPI = CBPTT.Factories.CoinbasePro.DefaultAPI(logger);
function submitTrade(side: string, amount: string) {
    const order: PlaceOrderMessage = {
        type: 'order',
        time: null,
        productId: product,
        orderType: 'market',
        side: side,
        size: amount
    };
    coinbaseProAPI.placeOrder(order).then((result: LiveOrder) => {
        pushMessage('Order executed', `Order to sell 0.1 ${base} placed. Result: ${result.status}`);
    });
}

</code>

有没有人成功使用 Typescript 在 Coinbase Pro 上交易加密货币?我错过了什么?如何正确设置“envars”或“环境变量”以允许这样做?

我正在尝试修改的教程的完整代码可以在这里看到:

https://github.com/coinbase/coinbase-pro-trading-toolkit/blob/master/tutorials/t005_alertTrader.ts

经过几个星期把我的头发扯下来。. . 我仍然很难过。

提前感谢你的帮助!

标签: coinbase-api

解决方案


因此,经过大约一周左右的挠头,我想我可以回答自己的问题了。有时它只是归结为你在谷歌中输入的内容。;)

无论如何,在对 "process.env" 进行了更多挖掘之后。. . 搜索结果返回这个 URL,它讨论了如何在 TypeScript 中开发一个非常基本的 web 菜单。. . 本教程还讨论了环境变量以及如何访问它们:

https://auth0.com/blog/use-typescript-to-create-a-secure-api-with-nodejs-and-express-getting-started/

感谢 Dan Arias 出色的原创文章。我将在下面复制一些相关部分(并添加一些新手评论),供任何可能在 TypeScript 中搜索环境变量指导的人使用:

安装项目依赖项

您的 Node.js 项目需要几个依赖项才能使用 TypeScript 创建安全的 Express 服务器。像这样安装它们:

在您的 IDE 终端类型中:

npm i express dotenv

以下是上述包在您的项目中的作用:

dotenv:零依赖模块,将环境变量从.env文件加载到process.env.

使用环境变量

您可以在一个中心位置定义所有这些变量并将它们加载到需要它们的文件模块中,而不是在整个项目的文件中使用硬编码的配置变量。这个中心位置通常定义为一个名为 的隐藏文件.env,您可以按如下方式创建该文件(在您的 IDE 终端中输入):

touch .env

如上所述,这会在您的项目目录中创建一个隐藏文件,名为.env

我在 MS Windows(使用 Eclipse IDE)中进行开发,所以我使用文件资源管理器导航到隐藏文件,因为我在 IDE 中看不到它来编辑它。(显然,在 Windows 操作系统中,您需要显示隐藏文件才能看到它。)

我在 NotePad++ 中编辑了 .env 文件,并在我的项目中添加了我需要的环境变量。(在本例中为 Coinbase Pro 交易工具包).env文件的内容如下所示:

# COINBASE API STUFF
COINBASE_PRO_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
COINBASE_PRO_SECRET='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXXX'
COINBASE_PRO_PASSPHRASE='xxxxxxxxxxx'

XXX 代表我的实际 API 值(当然。)

如下一节所示,项目的任何模块都可以加载.env使用 dotenv 包定义的变量。

在 TypeScript 应用程序的顶部包含外部依赖项:

/*
 * Required External Modules
 */

import * as dotenv from "dotenv";

dotenv.config();

在此之后,您可以开始在应用程序中使用环境变量,方法如下(这只是将变量的值打印到console.log使用几种不同的方法:

const key:any = process.env.COINBASE_PRO_KEY;

console.log(`KEY envar is ${key}`);
console.log(`PASSPHRASE envar is ${process.env.COINBASE_PRO_PASSPHRASE}`);

我希望这足以让您开始您的项目。

如果您有任何问题,请在下方添加。祝你好运!


推荐阅读