Bot & Automation

Treding Forex Ai

/root/hermes-projects/Treding Forex Ai

dist/tests/riskManager.test.js text
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const markets_1 = require("../src/constants/markets");
const riskManager_1 = require("../src/services/riskManager");
(0, vitest_1.describe)("RiskManager", () => {
    (0, vitest_1.it)("rejects WAIT signal", () => {
        const manager = new riskManager_1.RiskManager({
            accountBalance: 1000,
            riskPerTradePercent: 1,
            maxDailyLossPercent: 3,
            maxOpenTrades: 3,
            maxLotPerOrder: 1
        });
        const signal = buildSignal("WAIT");
        const decision = manager.evaluate(signal, 0, 0);
        (0, vitest_1.expect)(decision.accepted).toBe(false);
        (0, vitest_1.expect)(decision.reasons.join(" ")).toContain("WAIT");
    });
    (0, vitest_1.it)("creates position sizing for valid BUY signal", () => {
        const manager = new riskManager_1.RiskManager({
            accountBalance: 1000,
            riskPerTradePercent: 1,
            maxDailyLossPercent: 3,
            maxOpenTrades: 3,
            maxLotPerOrder: 1
        });
        const decision = manager.evaluate(buildSignal("BUY"), 0, 0);
        (0, vitest_1.expect)(decision.accepted).toBe(true);
        (0, vitest_1.expect)(decision.positionSizing?.lotSize).toBeGreaterThan(0);
    });
});
function buildSignal(action) {
    const symbol = markets_1.MARKET_SYMBOLS[0];
    return {
        id: "test-signal",
        symbol,
        mode: "intraday",
        timeframe: "H1",
        action,
        confidence: action === "WAIT" ? 40 : 75,
        currentPrice: 1.085,
        trend: "Bullish terstruktur",
        entry: action === "WAIT" ? null : 1.085,
        stopLoss: action === "WAIT" ? null : 1.083,
        takeProfit1: action === "WAIT" ? null : 1.089,
        takeProfit2: action === "WAIT" ? null : 1.09,
        riskLevel: "Medium",
        riskRewardRatio: action === "WAIT" ? 0 : 2,
        reasons: ["test"],
        invalidation: "test",
        snapshot: {
            ema20: 1.086,
            ema50: 1.084,
            ema200: 1.08,
            rsi: 55,
            atr: 0.001,
            macdHistogram: 0.01,
            support: 1.08,
            resistance: 1.09,
            volatilityPercent: 0.2
        },
        createdAt: new Date().toISOString()
    };
}