learning_ai_invt_trdg/backend/verify_btc_logic.ts

56 lines
2.5 KiB
TypeScript

import { ConnectorFactory } from '../src/connectors/factory.js';
import { config } from '../src/config/index.js';
import { Indicators } from '../src/utils/indicators.js';
import logger from '../src/utils/logger.js';
async function verifyBTC() {
const exchange = ConnectorFactory.getCustomConnector('ccxt', '', ''); // Using CCXT (Binance/Kraken) for data
const symbol = 'BTC/USDT';
console.log(`\n--- 📊 BTC ANALYSIS VERIFICATION (Last 4 Hours) ---`);
// 1. Fetch 4H Data for Trend Bias
const candles4h = await exchange.fetchOHLCV(symbol, '4h', 100);
const ema50_4h = Indicators.calculateEMA(candles4h.map(c => c.close), 50);
const ema200_4h = Indicators.calculateEMA(candles4h.map(c => c.close), 200);
const last4h = candles4h[candles4h.length - 1];
console.log(`4H Context:`);
console.log(` Current Price: $${last4h.close}`);
console.log(` EMA50 (4H): $${ema50_4h.toFixed(2)}`);
console.log(` EMA200 (4H): $${ema200_4h.toFixed(2)}`);
console.log(` Trend Bias: ${last4h.close > ema50_4h ? 'BULLISH' : 'BEARISH'} (Price vs EMA50)`);
// 2. Fetch 1H Data for Momentum
const candles1h = await exchange.fetchOHLCV(symbol, '1h', 50);
const rsi1h = Indicators.calculateRSI(candles1h.map(c => c.close), 14);
const ema20_1h = Indicators.calculateEMA(candles1h.map(c => c.close), 20);
console.log(`\n1H Context:`);
console.log(` RSI (1H): ${rsi1h.toFixed(2)}`);
console.log(` EMA20 (1H): $${ema20_1h.toFixed(2)}`);
console.log(` Momentum: ${rsi1h > 50 ? 'BULLISH' : 'BEARISH'}`);
// 3. Performance Check (Last 2 Hours)
const candles15m = await exchange.fetchOHLCV(symbol, '15m', 12);
const startPrice = candles15m[0].open;
const endPrice = candles15m[candles15m.length - 1].close;
const change = ((endPrice - startPrice) / startPrice) * 100;
console.log(`\nRecent Performance (Last 3 Hours - 15m candles):`);
console.log(` Opening: $${startPrice.toFixed(2)}`);
console.log(` Closing: $${endPrice.toFixed(2)}`);
console.log(` Change: ${change.toFixed(2)}%`);
console.log(`\n--- BOT LOGIC CHECK ---`);
if (last4h.close < ema50_4h) {
console.log(`⚠️ BOT IS BEARISH because Price ($${last4h.close}) is BELOW EMA50 ($${ema50_4h.toFixed(2)}) on 4H.`);
console.log(` Even if the last 2 hours were up, the "Higher Timeframe Trend" is still down.`);
} else {
console.log(`✅ BOT SHOULD BE BULLISH.`);
}
}
verifyBTC();