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);
}
}Эта глава доступна после входа
Создайте бесплатный аккаунт, чтобы прочитать главу целиком, включая примеры кода и пошаговые инструкции.
Войти и продолжить