Bot & Automation

Treding Forex Ai

/root/hermes-projects/Treding Forex Ai

dist/src/bot/ui/formatters.js text
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatWelcome = formatWelcome;
exports.formatMarketAnalysis = formatMarketAnalysis;
exports.formatAutoTradingDashboard = formatAutoTradingDashboard;
exports.formatSetupRisk = formatSetupRisk;
exports.formatSetupReview = formatSetupReview;
exports.formatRealConfirmation = formatRealConfirmation;
exports.formatTradeExecuted = formatTradeExecuted;
exports.formatSettings = formatSettings;
exports.formatWatchlist = formatWatchlist;
exports.formatHelp = formatHelp;
exports.formatAutoTradingStatus = formatAutoTradingStatus;
const risk_1 = require("../../constants/risk");
function formatWelcome(botName) {
    return [
        `🤖 *${botName}*`,
        "",
        "Asisten AI Trading & Analisis Pasar Forex/Gold/Crypto Anda.",
        "Gunakan menu interaktif di bawah atau ketik pertanyaan langsung untuk analisis instan.",
        "",
        risk_1.RISK_DISCLAIMER
    ].join("\n");
}
function formatMarketAnalysis(params) {
    return [
        "📊 *MARKET ANALYSIS*",
        "",
        `Market: *${params.symbolLabel}*`,
        `Harga Sekarang: \`${formatNumber(params.currentPrice)}\``,
        `Signal: *${params.action}*`,
        `Trend M1: \`${params.trendM1}\``,
        `Trend M5: \`${params.trendM5}\``,
        `Trend M15: \`${params.trendM15}\``,
        `Trend H1: \`${params.trendH1}\``,
        `Spread: \`${params.spreadPoints} points\``,
        `Volatilitas: *${params.volatility}*`,
        "",
        risk_1.RISK_DISCLAIMER
    ].join("\n");
}
function formatAutoTradingDashboard(params) {
    const statusStr = params.isEnabled ? "🟢 ON" : "🔴 OFF";
    return [
        "🤖 *AUTO TRADING CENTER*",
        "",
        `Status: *${statusStr}*`,
        `Account Mode: *${params.accountMode || "Belum dipilih"}*`,
        `Market: *${params.marketSymbol || "Belum dipilih"}*`,
        `Strategy: *${params.strategy || "Belum dipilih"}*`,
        `Lot: *${params.lot !== undefined ? params.lot.toFixed(2) : "Belum diatur"}*`,
        "",
        "ℹ️ Gunakan menu setup di bawah untuk mengonfigurasi dan mengaktifkan robot."
    ].join("\n");
}
function formatSetupRisk(params) {
    return [
        "⚙️ *Risk Management*",
        "",
        `Lot: \`${params.lot.toFixed(2)}\``,
        `Max Position: \`${params.maxPosition}\``,
        `Target Profit: \`${params.targetProfitPips} Pips\` (wajib diatur)`,
        `Stop Loss: \`${params.stopLossPips} Pips\` (wajib aktif)`,
        `Daily Loss Limit: \`${params.dailyLossLimitPercent}%\` (wajib aktif)`,
        `Cooldown: \`${params.cooldownSeconds} detik\` (aktif)`,
        `Max Spread: \`${params.maxSpreadPips} Pips\` (aktif)`,
        "",
        "ℹ️ Klik tombol di bawah untuk mengubah parameter atau klik Lanjutkan."
    ].join("\n");
}
function formatSetupReview(params) {
    return [
        "🤖 *AUTO TRADING REVIEW*",
        "",
        `Account: *${params.accountMode}*`,
        `Market: *${params.marketSymbol}*`,
        `Strategy: *${params.strategy}*`,
        `Lot: \`${params.lot.toFixed(2)}\``,
        `Max Position: \`${params.maxPosition}\``,
        `Target Profit: \`Aktif (${params.targetProfitPips} pips)\``,
        `Stop Loss: \`Aktif (${params.stopLossPips} pips)\``,
        `Daily Loss Limit: \`Aktif (${params.dailyLossLimitPercent}%)\``,
        `Spread Filter: \`Aktif (${params.maxSpreadPips} pips)\``,
        `Cooldown: \`Aktif (${params.cooldownSeconds} detik)\``,
        "",
        "⚠️ Pastikan Anda sudah mengerti risiko sebelum menjalankan robot."
    ].join("\n");
}
function formatRealConfirmation() {
    return [
        "⚠️ *REAL ACCOUNT CONFIRMATION*",
        "",
        "Robot akan menjalankan transaksi di akun *REAL* (Uang Sungguhan).",
        "",
        "Pastikan semua parameter risiko dan lot size sudah Anda verifikasi dengan benar.",
        "",
        "Apakah Anda yakin ingin memulai?"
    ].join("\n");
}
function formatTradeExecuted(trade) {
    const status = trade.broker === "real"
        ? "Status: order dikirim ke akun MT5 real."
        : trade.broker === "mt5_demo"
            ? "Status: order dikirim ke akun MT5 demo."
            : "Status: dry-run/paper, belum mengirim order ke MT5.";
    return [
        trade.broker === "paper" || trade.broker === "dry_run" ? "Paper trade executed" : "MT5 trade executed",
        "",
        `Order ID: ${trade.brokerOrderId}`,
        `Market: ${trade.symbolCode}`,
        `Action: ${trade.action}`,
        `Entry: ${formatNumber(trade.entry)}`,
        `Stop Loss: ${formatNumber(trade.stopLoss)}`,
        `Take Profit 1: ${formatNumber(trade.takeProfit1)}`,
        `Lot size: ${trade.positionSizing.lotSize}`,
        "",
        status
    ].join("\n");
}
function formatSettings(params) {
    const lines = [
        "Settings",
        "",
        `Runtime mode: ${params.runtimeMode}`,
        `Real trading enabled: ${params.enableRealTrading}`,
        `Market data provider: ${params.marketDataProvider}`,
        `Broker provider: ${params.brokerProvider}`,
        `Auto trading enabled: ${params.autoTradingEnabled}`,
        `Account balance: ${params.accountBalance}`,
        `Risk per trade: ${params.riskPerTradePercent}%`,
        `Max daily loss: ${params.maxDailyLossPercent}%`,
        `Max open trades: ${params.maxOpenTrades}`,
        `Max lot per order: ${params.maxLotPerOrder}`
    ];
    if (params.brokerStatus) {
        lines.push("", `Bridge connected: ${params.brokerStatus.connected}`, `Bridge account mode: ${params.brokerStatus.currentMode}`, `Demo execution gate: ${params.brokerStatus.allowDemoTrading}`, `Realtime execution gate: ${params.brokerStatus.allowRealTrading}`, `Bridge detail: ${params.brokerStatus.detail}`);
    }
    lines.push("", params.enableRealTrading
        ? "Warning: real trading aktif. Pastikan broker adapter sudah diaudit."
        : "Real trading masih terkunci. Semua order berjalan sebagai paper trade.");
    return lines.join("\n");
}
function formatWatchlist(symbols) {
    if (symbols.length === 0) {
        return "Watchlist masih kosong. Tambahkan pair dari signal card.";
    }
    return ["Watchlist", "", ...symbols.map((symbol) => `- ${symbol}`)].join("\n");
}
function formatHelp() {
    return [
        "💡 *AI Trading Bot Help*",
        "",
        "Command Menu Utama:",
        "• /start - Membuka menu navigasi utama.",
        "• /auto - Membuka Dashboard Auto Trading.",
        "• /watchlist - Melihat instrumen dalam daftar pantau.",
        "• /settings - Memeriksa konfigurasi manajemen risiko.",
        "",
        "Contoh Pertanyaan Bebas:",
        "• `XAUUSD sekarang arah mana?`",
        "• `EURUSD buy atau sell?`",
        "• `GBPUSD scalping`"
    ].join("\n");
}
function formatAutoTradingStatus(status) {
    return [
        "⚡ Auto Trading Status",
        "",
        status
    ].join("\n");
}
function formatNumber(value) {
    return Number.isInteger(value) ? String(value) : value.toFixed(value >= 100 ? 2 : 5);
}