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

Harbor SDK

Пример: тренд

В этом примере один бессрочный контракт. Каждый бар загружает последние цены закрытия 1h и сравнивает предыдущую цену закрытия с последней. Если позиции нет и цена выросла, стратегия покупает по рынку.

  • markets — swap. symbolMode — single.
  • Сначала вызывается getKlines, затем getPositions. Нет позиции означает, что длина массива позиций равна 0.
  • clientOrderId — это trend- и время бара.
  • Каждый бар пишет журнал уровня info, чтобы вы могли проверить цену закрытия на экземпляре.

Покупка только когда позиции нет и цена растёт. Продажи нет. Добавьте выход до реального счёта и сначала прочитайте журнал на бумажном счёте. Полный пример:

const manifest = {
  name: "趋势",
  version: "1.0.0",
  ccxtIds: ["binance"],
  markets: ["swap"],
  symbolMode: "single",
  params: {},
  permissions: ["market", "order", "account"],
};
async function onBar(rt, bar) {
  const bars = await rt.market.getKlines(bar.symbol, "1h", 3);
  const prev = bars.length > 1 ? Number(bars[bars.length - 2].close) : Number(bar.close);
  const last = Number(bar.close);
  const pos = await rt.account.getPositions();
  if (last > prev && pos.length === 0) {
    await rt.order.create({
      clientOrderId: "trend-" + bar.time,
      symbol: bar.symbol,
      side: "buy",
      type: "market",
      amount: "0.01",
    });
  }
  rt.log("info", "trend " + bar.close);
}
Эта глава доступна после входа

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

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