CoinBase Pro API - Typescript API

CoinBase Pro API - Typescript 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 对象以强制 feed 使用未经身份验证的消息。您可以设置 auth: null 以仅使用默认值,因为您有Coinbase Pro API 环境中设置的密钥,将自动使用这些密钥并接收经过身份验证的消息(如果您想在交易完成时确认,这很好)。"

但是,在查看其他教程和 Coinbase Pro (CBP) API 文档时,尽管有多个参考将您的 CBP API 密钥添加到 "environmental variables" 或 "envars" 没有说明或教程说明如何执行此操作。

这是不是 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" 或 "environmental variables" 以允许此操作?

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

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

经过几个星期的撕扯我的头发。 . .我还是一头雾水。

在此先感谢您的帮助!

所以在又摸索了一周左右之后,我想我可以回答我自己的问题了。有时它只是归结为您在 google 中输入的内容。 ;)

无论如何,在对 "process.env" 进行更多挖掘之后。 . .搜索结果 return 这个 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),所以我使用文件资源管理器导航到隐藏文件,因为我在 [=74= 中看不到它] 对其进行编辑。 (显然在 Windows OS 中你需要显示隐藏文件才能看到它。)

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

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

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

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

在您的 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}`);

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

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