Bot & Automation

Treding Forex Ai

/root/hermes-projects/Treding Forex Ai

tests/math.test.ts text
import { describe, expect, it } from "vitest";
import { averageTrueRange, exponentialMovingAverage, relativeStrengthIndex } from "../src/utils/math";
import type { Candle } from "../src/domain/types";

describe("indicator helpers", () => {
  it("calculates EMA for a known increasing series", () => {
    const ema = exponentialMovingAverage([1, 2, 3, 4, 5], 3);

    expect(ema).toBeGreaterThan(3);
    expect(ema).toBeLessThan(5);
  });

  it("returns neutral RSI for insufficient data", () => {
    expect(relativeStrengthIndex([1, 2, 3], 14)).toBe(50);
  });

  it("calculates ATR above zero when candles move", () => {
    const candles: Candle[] = [
      { time: "1", open: 1, high: 2, low: 0.5, close: 1.5, volume: 10 },
      { time: "2", open: 1.5, high: 2.5, low: 1.2, close: 2, volume: 10 },
      { time: "3", open: 2, high: 3, low: 1.8, close: 2.6, volume: 10 }
    ];

    expect(averageTrueRange(candles, 2)).toBeGreaterThan(0);
  });
});