CoinBase Pro API - API Typescript - PullRequest
       24

CoinBase Pro API - API Typescript

0 голосов
/ 01 марта 2020

Я новичок в 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 установлены в среде, будут автоматически использоваться те и получают аутентифицированные сообщения (хорошо, если вы хотите подтвердить, когда ваши сделки заполнены)."

Однако, просматривая другой учебник и документацию по API Coinbase Pro (CBP), хотя есть несколько ссылки на добавление ваших ключей API CBP в «переменные окружения» или «envars», там нет описания или учебника, который показывает, КАК это сделать.

Это что-то настолько базовое c в 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» int он следующий код:

<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

После нескольких недель рвать на себе волосы. , , Я все еще в тупике.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 07 марта 2020

Итак, после еще одной недели или около того, почесывая голову, я думаю, что смогу ответить на свой вопрос. Иногда все сводится к тому, что вы вводите в Google. ;)

Во всяком случае, после того, как вы покопались в "process.env". , , результаты поиска возвращают этот URL, в котором рассказывается, как разработать очень простое c веб-меню в TypeScript. , , В этом руководстве также рассматриваются переменные среды и способы их доступа:

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

Спасибо Дэну Ариасу за его превосходную оригинальную статью. Я собираюсь скопировать некоторые соответствующие части ниже (с некоторыми добавленными комментариями noob) для тех, кто может искать руководство по переменным среды в TypeScript:

Установить зависимости проекта

Ваш Node.js проект требует пару зависимостей для создания защищенного Express сервера с TypeScript. Установите их следующим образом:

В терминале IDE введите:

npm i express dotenv

Вот что вышеуказанный пакет делает в вашем проекте:

dotenv: модуль нулевой зависимости который загружает переменные среды из файла .env в process.env.

Использовать переменные среды

Вместо использования жестко закодированных переменных конфигурации в файлах всего проекта, Вы можете определить все эти переменные в одном месте и загрузить их в файловые модули, которые в них нуждаются. Это центральное расположение обычно определяется как скрытый файл с именем .env, который вы можете создать следующим образом (введите его в свой терминал IDE):

touch .env

Как указано выше, это создает скрытый файл в вашем каталог проекта с именем .env

Я занимаюсь разработкой в ​​MS Windows (с Eclipse IDE), поэтому я использовал проводник, чтобы перейти к скрытому файлу, так как я не мог увидеть его в своей IDE для редактирования. Это. (Очевидно, в ОС Windows вам нужно будет показать скрытые файлы, чтобы увидеть его.)

Я отредактировал файл .env в NotePad ++ и добавил переменные окружения, которые мне нужны в моем проекте. (В данном случае для Coinbase Pro Trading Toolkit) Содержимое файла .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}`);

Надеюсь, этого достаточно, чтобы начать работу над проектом.

Если у вас есть вопросы, добавьте их ниже. Удачи!

...