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

Harbor SDK

Пример: корзина AltRank

Этот пример — спотовая корзина. symbolMode — basket, а symbols перечисляет имена для сравнения. Каждый бар читает одну социальную точку на символ. Меньший AltRank означает более высокое место.

  • getSocial видит только сохранённые точки. Символ без точек считается сильно отстающим в рейтинге.
  • Ключ kv held хранит выбранный символ. Если лидер не изменился, новая заявка не выставляется.
  • При смене стратегия покупает нового лидера по рынку. Пример не продаёт предыдущий символ. Добавьте эту продажу до реального счёта.

Полный пример:

const manifest = {
  name: "AltRank 篮子",
  version: "1.0.0",
  ccxtIds: ["binance"],
  markets: ["spot"],
  symbolMode: "basket",
  symbols: ["BINANCE:BTC/USDT", "BINANCE:ETH/USDT"],
  params: {},
  permissions: ["market", "order", "account"],
};
async function onBar(rt, bar) {
  const symbols = await rt.market.getSymbols();
  let best = symbols[0] || bar.symbol;
  let bestRank = 999999;
  for (const symbol of symbols) {
    const points = await rt.market.getSocial(symbol, 1);
    const rank = points.length ? Number(points[points.length - 1].altRank) : 999999;
    if (rank < bestRank) {
      bestRank = rank;
      best = symbol;
    }
  }
  const held = await rt.kvGet("held");
  if (held !== best) {
    await rt.order.create({
      clientOrderId: "alt-" + bar.time,
      symbol: best,
      side: "buy",
      type: "market",
      amount: "0.01",
    });
    await rt.kvSet("held", best);
  }
}
Эта глава доступна после входа

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

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