learning_ai_invt_trdg/backend/test_risk_formula.ts

43 lines
1.6 KiB
TypeScript

import { RiskEngine } from '../src/services/riskEngine.js';
import { MarketContext, SignalDirection } from '../src/strategies/rules/types.js';
async function testRiskFormula() {
console.log('--- Testing New Risk Formula ---');
const engine = new RiskEngine();
const mockContext: MarketContext = {
currentPrice: 100000,
candles4h: [],
candles1h: Array(20).fill({ close: 100000, high: 100500, low: 99500 }),
candles15m: [],
change24h: 0,
changeToday: 0,
session: 'NY',
isMajorSession: true,
volatility: 'Low',
latestSignal: SignalDirection.NONE
};
// Note: Since we don't have true ATR here, let's mock calculateRiskProfile call or check buildProfile
console.log('Mock Entry: 100,000');
console.log('Mock ATR: 1,000');
console.log('SL Multiplier: 1.0 -> SL Dist: 1,000');
console.log('RRR: 1.5 -> Raw TP Dist: 1,500');
console.log('Max TP Cap (1%): 1,000');
const profile = (engine as any).buildProfile('BTC/USD', SignalDirection.BUY, 100000, 1000, 10, 1.5);
console.log('\nResults:');
console.log(`SL: ${profile.stopLoss} (Expected 99,000)`);
console.log(`TP: ${profile.takeProfit} (Expected 101,000 - capped by 1%)`);
console.log(`Size: ${profile.positionSize}`);
if (profile.stopLoss === 99000 && profile.takeProfit === 101000) {
console.log('\n✅ Formula mapping is CORRECT.');
} else {
console.log('\n❌ Formula mapping is INCORRECT.');
}
}
testRiskFormula().catch(console.error);