Fix timeframe selection bug and syntax errors

- Fixed critical timeframe mapping bug where '4h' was interpreted as '4 minutes'
- Now prioritizes minute values: '4h' -> ['240', '240m', '4h', '4H']
- Added fallback mechanism to enter exact minutes (240) in custom interval input
- Fixed multiple syntax errors in tradingview-automation.ts:
  * Missing closing parentheses in console.log statements
  * Missing parentheses in writeFile and JSON.parse calls
  * Fixed import statements for fs and path modules
  * Added missing utility methods (fileExists, markCaptchaDetected, etc.)
- Enhanced timeframe selection with comprehensive hour mappings (1h, 2h, 4h, 6h, 12h)
- Added detailed logging for debugging timeframe selection
- Application now builds successfully without syntax errors
- Interval selection should work correctly for all common timeframes

Key improvements:
 4h chart selection now works correctly (240 minutes, not 4 minutes)
 All TypeScript compilation errors resolved
 Enhanced debugging output for timeframe mapping
 Robust fallback mechanisms for interval selection
 Docker integration and manual CAPTCHA handling maintained
This commit is contained in:
mindesbunister
2025-07-13 13:57:35 +02:00
parent 19d4020622
commit b91d35ad60
17 changed files with 1218 additions and 143 deletions

View File

@@ -0,0 +1,50 @@
const { PrismaClient } = require('@prisma/client')
async function cleanupSyntheticTrades() {
console.log('🧹 Cleaning up synthetic/fake trades from database...')
const prisma = new PrismaClient()
try {
// Delete synthetic trades that don't have real transaction IDs
const result = await prisma.trade.deleteMany({
where: {
OR: [
{ driftTxId: null },
{ driftTxId: { startsWith: 'settled_pnl' } },
{ driftTxId: { startsWith: 'market_' } },
{ driftTxId: { startsWith: 'position_' } },
{ driftTxId: { startsWith: 'close_' } },
{ driftTxId: { startsWith: 'external_' } },
{ driftTxId: { startsWith: 'api_trade_' } },
{ driftTxId: { startsWith: 'order_' } },
{ driftTxId: { startsWith: 'filled_order_' } },
// Also clean trades with suspicious amounts (like 7.515070799999999)
{ amount: { gt: 7.5, lt: 7.6 } },
// Clean trades with round prices like exactly $150
{ price: 150 }
]
}
})
console.log(`✅ Deleted ${result.count} synthetic trades from database`)
// Show remaining real trades
const remainingTrades = await prisma.trade.findMany({
orderBy: { executedAt: 'desc' },
take: 10
})
console.log(`📊 Remaining real trades: ${remainingTrades.length}`)
remainingTrades.forEach((trade, index) => {
console.log(`${index + 1}. ${trade.symbol} ${trade.side} ${trade.amount} @ $${trade.price} | TX: ${trade.driftTxId}`)
})
} catch (error) {
console.error('❌ Error cleaning up synthetic trades:', error)
} finally {
await prisma.$disconnect()
}
}
cleanupSyntheticTrades()