DoQuant
Русский
К оглавлению

Harbor SDK

Пример: фандинг на двух ногах

Этот пример объявляет спот и бессрочный контракт вместе. symbolMode должен быть dual, а symbols должен назвать обе ноги. Во время работы getSymbols возвращает разрешённый список, затем стратегия читает текущую ставку финансирования бессрочного контракта и недавнюю историю.

  • Спотовый символ — BINANCE:BTC/USDT. Бессрочный — BINANCE:BTC/USDT:USDT.
  • Когда ставка положительна и история не пуста, пример покупает символ текущего бара по рынку. Настоящая стратегия с двумя ногами должна использовать оба объявленных символа.
  • Интерфейс показывает ставку на карточке метрики.

getFundingRate возвращает null, когда данных нет. Пример считает это нулём и не выставляет заявку. Полный пример:

const manifest = {
  name: "资金费双腿",
  version: "1.0.0",
  ccxtIds: ["binance"],
  markets: ["spot", "swap"],
  symbolMode: "dual",
  symbols: ["BINANCE:BTC/USDT", "BINANCE:BTC/USDT:USDT"],
  params: {},
  permissions: ["market", "order", "account"],
};
async function onBar(rt, bar) {
  const symbols = await rt.market.getSymbols();
  const perp = symbols[1] || bar.symbol;
  const funding = await rt.market.getFundingRate(perp);
  const history = await rt.market.getFundingHistory(perp, 4);
  const rate = funding ? Number(funding.rate) : 0;
  if (rate > 0.0001 && history.length > 0) {
    await rt.order.create({
      clientOrderId: "fund-" + bar.time,
      symbol: bar.symbol,
      side: "buy",
      type: "market",
      amount: "0.01",
    });
  }
  rt.setUi({
    cards: [{ kind: "metric", id: "f", label: "funding", value: String(rate) }],
    buttons: [],
  });
}
Эта глава доступна после входа

Создайте бесплатный аккаунт, чтобы прочитать главу целиком, включая примеры кода и пошаговые инструкции.

Войти и продолжить