Bot & Automation
Treding Forex Ai
/root/hermes-projects/Treding Forex Ai
dist/src/app.js
text
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAppComponents = createAppComponents;
exports.createTradingService = createTradingService;
exports.createBot = createBot;
exports.registerBot = registerBot;
exports.createAutoTradingService = createAutoTradingService;
const telegraf_1 = require("telegraf");
const env_1 = require("./config/env");
const marketDataService_1 = require("./services/market-data/marketDataService");
const forexStrategy_1 = require("./services/strategy/forexStrategy");
const riskManager_1 = require("./services/riskManager");
const jsonStore_1 = require("./services/storage/jsonStore");
const broker_1 = require("./services/broker/broker");
const tradingService_1 = require("./services/tradingService");
const autoTradingService_1 = require("./services/autoTradingService");
const registerHandlers_1 = require("./bot/handlers/registerHandlers");
function createAppComponents() {
const store = new jsonStore_1.JsonStore(env_1.env.dataDir);
const marketDataService = (0, marketDataService_1.createMarketDataService)(env_1.env.marketDataProvider, env_1.env.twelveDataApiKey);
const strategy = new forexStrategy_1.ForexStrategy(marketDataService);
const riskManager = new riskManager_1.RiskManager(env_1.env.risk);
const broker = createBrokerAdapter(store);
const tradingService = new tradingService_1.TradingService(strategy, riskManager, store, broker);
return { tradingService, broker, marketDataService, store };
}
/** @deprecated Gunakan createAppComponents(). Tetap dipertahankan untuk backward compat. */
function createTradingService() {
return createAppComponents().tradingService;
}
function createBrokerAdapter(store) {
if (!env_1.env.enableRealTrading || env_1.env.tradingMode === "paper") {
return new broker_1.PaperBrokerAdapter(store);
}
if (env_1.env.brokerProvider === "mt5_bridge" && env_1.env.exness.mt5BridgeUrl && env_1.env.exness.mt5BridgeToken) {
return new broker_1.Mt5BridgeBrokerAdapter(env_1.env.exness.mt5BridgeUrl, env_1.env.exness.mt5BridgeToken);
}
return new broker_1.GuardedRealBrokerAdapter();
}
function createBot() {
if (!env_1.env.telegramBotToken) {
throw new Error("TELEGRAM_BOT_TOKEN belum diisi.");
}
return new telegraf_1.Telegraf(env_1.env.telegramBotToken);
}
function registerBot(bot, components, autoTradingService) {
(0, registerHandlers_1.registerHandlers)(bot, components.tradingService, autoTradingService);
return bot;
}
function createAutoTradingService(components, bot) {
return new autoTradingService_1.AutoTradingService(components.tradingService, components.broker, components.marketDataService, env_1.env.autoTrading, bot.telegram);
}