feat: Remove artificial percentage minimums - AI now has complete freedom

REMOVED ARTIFICIAL CONSTRAINTS:
- Eliminated 3% minimum stop loss requirement
- Eliminated 1% minimum take profit requirement
- AI can now choose ANY percentage based on market analysis

- Updated app/api/drift/trade/route.js to use exact AI percentages
- Removed Math.max() constraints that forced minimums
- AI now has 0.1%+ to 50%+ percentage freedom

- Modified AI_RISK_MANAGEMENT.md to reflect new freedom
- Removed all references to artificial 3%/1% minimums
- Added ultra-tight scalping examples (0.1%-1%)
- Updated volatility guidelines for all trading styles

 PROVEN WITH REAL ORDERS:
- Transaction: 35QmCqWFzwJ1X2nm5M8rgExKEMbWTRqxCa1GryEsR595zYwBLqCzDowUYm3J2u13WMvYR2PRoS3eAMSzXfGvEVbe
- Confirmed: 0.5% SL / 0.25% TP working on Drift Protocol
- Verified: Orders visible in Drift UI with correct trigger prices

- Optimal risk management based on actual market conditions
- Support for all trading styles: scalping to position trading
- No more forced suboptimal stops due to artificial limits
- Professional-grade percentage precision

The AI can now freely optimize percentages for maximum trading effectiveness!
This commit is contained in:
mindesbunister
2025-07-24 09:58:30 +02:00
parent e7dc60b427
commit 9c4bee0dd7
17 changed files with 3649 additions and 733 deletions

181
test-api-real-orders.js Normal file
View File

@@ -0,0 +1,181 @@
// Direct API test to place REAL orders via the trading endpoint
const https = require('https');
const http = require('http');
async function testRealOrderViaAPI() {
console.log('🚀 REAL DRIFT ORDER TEST VIA API');
console.log('============================================================');
console.log('⚠️ This will place a REAL $1 order using the trading API');
console.log('📋 Order should appear in Drift Protocol interface');
console.log('============================================================\n');
// Test different percentage levels
const testCases = [
{
stopLossPercent: 1.5,
takeProfitPercent: 1.0,
name: 'Conservative Scalping (1.5%/1.0%)'
},
{
stopLossPercent: 1.0,
takeProfitPercent: 0.75,
name: 'Moderate Scalping (1.0%/0.75%)'
},
{
stopLossPercent: 0.5,
takeProfitPercent: 0.25,
name: 'Tight Scalping (0.5%/0.25%)'
},
{
stopLossPercent: 0.25,
takeProfitPercent: 0.1,
name: 'Ultra-tight Scalping (0.25%/0.1%)'
}
];
const successfulTests = [];
for (const testCase of testCases) {
console.log(`🔬 Testing: ${testCase.name}`);
console.log(` Stop Loss: ${testCase.stopLossPercent}%`);
console.log(` Take Profit: ${testCase.takeProfitPercent}%`);
try {
const orderData = {
symbol: 'SOL-PERP',
side: 'buy',
amount: 1, // $1 USD
orderType: 'market',
stopLoss: true,
takeProfit: true,
stopLossPercent: testCase.stopLossPercent,
takeProfitPercent: testCase.takeProfitPercent,
leverage: 1
};
console.log(` 📤 Placing real order...`);
const response = await makeAPIRequest('POST', '/api/drift/trade', orderData);
if (response.success) {
console.log(` ✅ SUCCESS: Order placed successfully!`);
console.log(` 📋 Response:`, JSON.stringify(response, null, 2));
successfulTests.push({
...testCase,
response: response
});
// Wait 5 seconds before closing the position
console.log(` ⏳ Waiting 5 seconds before closing position...`);
await new Promise(resolve => setTimeout(resolve, 5000));
// Close the position
const closeData = {
symbol: 'SOL-PERP',
side: 'sell',
amount: 1,
orderType: 'market'
};
const closeResponse = await makeAPIRequest('POST', '/api/drift/trade', closeData);
if (closeResponse.success) {
console.log(` 🧹 Position closed successfully`);
} else {
console.log(` ⚠️ Warning: Could not close position automatically`);
console.log(` 📋 Close response:`, JSON.stringify(closeResponse, null, 2));
}
} else {
console.log(` ❌ FAILED: ${response.error || 'Unknown error'}`);
console.log(` 📋 Full response:`, JSON.stringify(response, null, 2));
}
} catch (error) {
console.log(` ❌ FAILED: ${error.message}`);
}
console.log(''); // Empty line for readability
// Wait between tests to avoid rate limiting
await new Promise(resolve => setTimeout(resolve, 3000));
}
// Summary
console.log('🎯 FINAL RESULTS:');
console.log('============================================================');
if (successfulTests.length > 0) {
console.log(`✅ Successfully placed ${successfulTests.length}/${testCases.length} orders`);
const tightestTest = successfulTests.reduce((tightest, current) => {
return current.stopLossPercent < tightest.stopLossPercent ? current : tightest;
});
console.log(`\n🏆 TIGHTEST SUCCESSFUL PERCENTAGES:`);
console.log(` Stop Loss: ${tightestTest.stopLossPercent}%`);
console.log(` Take Profit: ${tightestTest.takeProfitPercent}%`);
console.log(` Test: ${tightestTest.name}`);
console.log(`\n💡 RECOMMENDED API UPDATE:`);
console.log(` stopLossPercentCalc = Math.max(stopLossPercent / 100, ${(tightestTest.stopLossPercent / 100).toFixed(4)}) // ${tightestTest.stopLossPercent}%`);
console.log(` takeProfitPercentCalc = Math.max(takeProfitPercent / 100, ${(tightestTest.takeProfitPercent / 100).toFixed(4)}) // ${tightestTest.takeProfitPercent}%`);
} else {
console.log('❌ No orders were successfully placed');
console.log(' Current minimum percentages appear to be necessary');
}
}
function makeAPIRequest(method, path, data) {
return new Promise((resolve, reject) => {
const postData = JSON.stringify(data);
const options = {
hostname: 'localhost',
port: 3000,
path: path,
method: method,
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(postData)
}
};
const req = http.request(options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
try {
const parsedData = JSON.parse(responseData);
resolve(parsedData);
} catch (e) {
resolve({ success: false, error: 'Invalid JSON response', raw: responseData });
}
});
});
req.on('error', (error) => {
reject(error);
});
req.write(postData);
req.end();
});
}
// Safety check
if (process.argv.includes('--confirm')) {
testRealOrderViaAPI().catch(console.error);
} else {
console.log('⚠️ SAFETY CONFIRMATION REQUIRED ⚠️');
console.log('This test will place REAL $1 orders on Drift Protocol');
console.log('Orders will be automatically closed after testing');
console.log('');
console.log('To proceed, run: node test-api-real-orders.js --confirm');
}