- 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
2.0 KiB
2.0 KiB
Timeframe Interval Selection Fix
Problem
When requesting a "4h" (4-hour) chart timeframe, TradingView was interpreting this as "4 minutes" instead of "4 hours", causing the wrong chart interval to be selected.
Root Cause
The timeframe mapping was prioritizing hour notation ("4h", "4H") which TradingView was misinterpreting as minutes.
Solution
Modified the timeframe mapping in lib/tradingview-automation.ts to:
1. Prioritize Minute Values
For hour-based timeframes, always try the minute equivalent first:
- "4h" now maps to:
["240", "240m", "4h", "4H"] - "1h" now maps to:
["60", "60m", "1h", "1H"] - "2h" now maps to:
["120", "120m", "2h", "2H"]
2. Added More Hour Timeframes
Extended support for common trading timeframes:
- 2h = 120 minutes
- 6h = 360 minutes
- 12h = 720 minutes
3. Enhanced Fallback Logic
Added a custom interval input fallback that:
- Converts timeframes to exact minutes (e.g., "4h" → "240")
- Looks for custom interval input fields
- Enters the minute value directly if standard selection fails
4. Improved Debugging
Added detailed logging to track:
- Which timeframe values are being tried
- The order of attempts
- Success/failure of each method
Key Changes
// OLD - Would try "4h" first (interpreted as 4 minutes)
'4h': ['4h', '4H', '240', '240m']
// NEW - Tries 240 minutes first (unambiguous)
'4h': ['240', '240m', '4h', '4H']
Fallback Strategy
If regular timeframe selection fails:
- Try keyboard shortcuts
- NEW: Try custom interval input with exact minutes
- Look for
input[data-name="text-input-field"]and similar - Enter "240" for 4h, "60" for 1h, etc.
Testing
The fix ensures that:
- ✅ "4h" request → 4-hour chart (not 4-minute)
- ✅ "1h" request → 1-hour chart (not 1-minute)
- ✅ All common timeframes work correctly
- ✅ Fallback to custom input if needed
- ✅ Detailed logging for debugging
This fix addresses the core issue where timeframe selection was "stuck" at wrong intervals due to TradingView misinterpreting hour notation as minutes.