🤖 COMPLETE: Learning-Enhanced AI with HTTP Compatibility
LEARNING INTEGRATION: - Enhanced AI analysis service feeds historical data into OpenAI prompts - Symbol/timeframe specific learning optimization - Pattern recognition from past trade outcomes - Confidence adjustment based on success rates HTTP COMPATIBILITY SYSTEM: - HttpUtil with automatic curl/no-curl detection - Node.js fallback for Docker environments without curl - Updated all automation systems to use HttpUtil - Production-ready error handling AUTONOMOUS RISK MANAGEMENT: - Enhanced risk manager with learning integration - Simplified learners using existing AILearningData schema - Real-time position monitoring every 30 seconds - Smart stop-loss decisions with AI learning INFRASTRUCTURE: - Database utility for shared Prisma connections - Beach mode status display system - Complete error handling and recovery - Docker container compatibility tested Historical performance flows into OpenAI prompts before every trade.
This commit is contained in:
@@ -7,11 +7,10 @@
|
||||
* It records every decision, tracks outcomes, and continuously improves decision-making.
|
||||
*/
|
||||
|
||||
const { PrismaClient } = require('@prisma/client');
|
||||
const { getDB } = require('./db');
|
||||
|
||||
class StopLossDecisionLearner {
|
||||
constructor() {
|
||||
this.prisma = new PrismaClient();
|
||||
this.decisionHistory = [];
|
||||
this.learningThresholds = {
|
||||
emergencyDistance: 1.0,
|
||||
@@ -20,6 +19,10 @@ class StopLossDecisionLearner {
|
||||
};
|
||||
}
|
||||
|
||||
async getPrisma() {
|
||||
return await getDB();
|
||||
}
|
||||
|
||||
async log(message) {
|
||||
const timestamp = new Date().toISOString();
|
||||
console.log(`[${timestamp}] 🧠 SL Learner: ${message}`);
|
||||
@@ -52,7 +55,8 @@ class StopLossDecisionLearner {
|
||||
};
|
||||
|
||||
// Store in database
|
||||
await this.prisma.sLDecision.create({
|
||||
const prisma = await this.getPrisma();
|
||||
await prisma.sLDecision.create({
|
||||
data: {
|
||||
id: decision.id,
|
||||
tradeId: decision.tradeId,
|
||||
@@ -92,7 +96,8 @@ class StopLossDecisionLearner {
|
||||
const learningScore = this.calculateLearningScore(wasCorrect, pnlImpact, timeToOutcome);
|
||||
|
||||
// Update decision record
|
||||
await this.prisma.sLDecision.update({
|
||||
const prisma = await this.getPrisma();
|
||||
await prisma.sLDecision.update({
|
||||
where: { id: decisionId },
|
||||
data: {
|
||||
outcome: actualOutcome,
|
||||
@@ -135,7 +140,8 @@ class StopLossDecisionLearner {
|
||||
*/
|
||||
async analyzeDecisionPatterns() {
|
||||
try {
|
||||
const decisions = await this.prisma.sLDecision.findMany({
|
||||
const prisma = await this.getPrisma();
|
||||
const decisions = await prisma.sLDecision.findMany({
|
||||
where: { status: 'ASSESSED' },
|
||||
orderBy: { decisionTimestamp: 'desc' },
|
||||
take: 100 // Analyze last 100 decisions
|
||||
@@ -438,7 +444,8 @@ class StopLossDecisionLearner {
|
||||
const { distanceFromSL, marketConditions } = currentSituation;
|
||||
const tolerance = 0.5; // 0.5% tolerance for distance matching
|
||||
|
||||
const decisions = await this.prisma.sLDecision.findMany({
|
||||
const prisma = await this.getPrisma();
|
||||
const decisions = await prisma.sLDecision.findMany({
|
||||
where: {
|
||||
status: 'ASSESSED',
|
||||
distanceFromSL: {
|
||||
|
||||
Reference in New Issue
Block a user