Add n8n workflow and validation script for settings monitoring; fix missing weekend protection params
This commit is contained in:
128
scripts/validate-settings.sh
Executable file
128
scripts/validate-settings.sh
Executable file
@@ -0,0 +1,128 @@
|
||||
#!/bin/bash
|
||||
# MQL Trading Bot Settings Validator
|
||||
# This script validates .set files for common issues
|
||||
|
||||
REPO_DIR="/home/garfield/mql-trading-bots"
|
||||
cd "$REPO_DIR" || exit 1
|
||||
|
||||
ISSUES=0
|
||||
echo "=== MQL Settings Validation Report ==="
|
||||
echo "Date: $(date)"
|
||||
echo ""
|
||||
|
||||
# Check 1: Count set files
|
||||
echo "[INFO] Checking set files..."
|
||||
CONFLUENCE_COUNT=$(ls -1 confluence-*.set 2>/dev/null | wc -l)
|
||||
GRID_COUNT=$(ls -1 grid-*.set 2>/dev/null | wc -l)
|
||||
echo " Confluence settings: $CONFLUENCE_COUNT files"
|
||||
echo " Grid settings: $GRID_COUNT files"
|
||||
|
||||
if [ $CONFLUENCE_COUNT -eq 0 ] && [ $GRID_COUNT -eq 0 ]; then
|
||||
echo "ISSUE: No .set files found!"
|
||||
ISSUES=$((ISSUES + 1))
|
||||
fi
|
||||
|
||||
# Check 2: Invalid variable names (typos)
|
||||
echo ""
|
||||
echo "[INFO] Checking for invalid variable names..."
|
||||
INVALID=$(grep -l "InpMinConfluenceStrength\|MinConfluenceStrength\|ConfluenceStrength" confluence-*.set 2>/dev/null)
|
||||
if [ -n "$INVALID" ]; then
|
||||
echo "ISSUE: Invalid variable names found:"
|
||||
echo "$INVALID" | while read -r file; do
|
||||
echo " - $file"
|
||||
done
|
||||
ISSUES=$((ISSUES + 1))
|
||||
else
|
||||
echo " ✓ No invalid variable names found"
|
||||
fi
|
||||
|
||||
# Check 3: Missing critical parameters in Confluence sets
|
||||
echo ""
|
||||
echo "[INFO] Checking Confluence settings completeness..."
|
||||
for file in confluence-*.set; do
|
||||
[ -f "$file" ] || continue
|
||||
|
||||
MISSING=""
|
||||
grep -q "^InpMinConfluence=" "$file" || MISSING="$MISSING InpMinConfluence"
|
||||
grep -q "^InpMinStrength=" "$file" || MISSING="$MISSING InpMinStrength"
|
||||
grep -q "^InpRequireAllAgree=" "$file" || MISSING="$MISSING InpRequireAllAgree"
|
||||
grep -q "^InpMagicNumber=" "$file" || MISSING="$MISSING InpMagicNumber"
|
||||
grep -q "^InpMaxDailyDrawdown=" "$file" || MISSING="$MISSING InpMaxDailyDrawdown"
|
||||
grep -q "^InpCloseBeforeWeekend=" "$file" || MISSING="$MISSING InpCloseBeforeWeekend"
|
||||
|
||||
if [ -n "$MISSING" ]; then
|
||||
echo "ISSUE: $file missing:$MISSING"
|
||||
ISSUES=$((ISSUES + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
# Check 4: Missing critical parameters in Grid sets
|
||||
echo ""
|
||||
echo "[INFO] Checking Grid settings completeness..."
|
||||
for file in grid-*.set; do
|
||||
[ -f "$file" ] || continue
|
||||
|
||||
MISSING=""
|
||||
grep -q "^InpMaxDailyDrawdown=" "$file" || MISSING="$MISSING InpMaxDailyDrawdown"
|
||||
grep -q "^InpCloseBeforeWeekend=" "$file" || MISSING="$MISSING InpCloseBeforeWeekend"
|
||||
|
||||
if [ -n "$MISSING" ]; then
|
||||
echo "ISSUE: $file missing:$MISSING"
|
||||
ISSUES=$((ISSUES + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
# Check 5: Very restrictive settings (may explain no trades)
|
||||
echo ""
|
||||
echo "[INFO] Checking for overly restrictive settings..."
|
||||
HIGH_STRENGTH=$(grep "InpMinStrength=0.8" confluence-*.set 2>/dev/null | cut -d: -f1)
|
||||
if [ -n "$HIGH_STRENGTH" ]; then
|
||||
echo "WARNING: High strength thresholds (may block trades):"
|
||||
echo "$HIGH_STRENGTH" | while read -r file; do
|
||||
strength=$(grep "InpMinStrength=" "$file" | head -1)
|
||||
echo " - $file: $strength"
|
||||
done
|
||||
fi
|
||||
|
||||
# Check 6: Debug mode status
|
||||
echo ""
|
||||
echo "[INFO] Debug mode status..."
|
||||
DEBUG_OFF=$(grep "InpDebugMode=false" confluence-*.set grid-*.set 2>/dev/null | wc -l)
|
||||
DEBUG_ON=$(grep "InpDebugMode=true" confluence-*.set grid-*.set 2>/dev/null | wc -l)
|
||||
echo " Debug ON: $DEBUG_ON files"
|
||||
echo " Debug OFF: $DEBUG_OFF files"
|
||||
|
||||
if [ $DEBUG_OFF -gt 5 ]; then
|
||||
echo "WARNING: Many files have debug disabled - you won't see trade decisions"
|
||||
fi
|
||||
|
||||
# Check 7: Weekend protection status
|
||||
echo ""
|
||||
echo "[INFO] Weekend protection status..."
|
||||
WEEKEND_OFF=$(grep "InpCloseBeforeWeekend=false" confluence-*.set grid-*.set 2>/dev/null | wc -l)
|
||||
if [ $WEEKEND_OFF -gt 0 ]; then
|
||||
echo "WARNING: $WEEKEND_OFF files have weekend protection DISABLED"
|
||||
ISSUES=$((ISSUES + 1))
|
||||
else
|
||||
echo " ✓ All files have weekend protection enabled"
|
||||
fi
|
||||
|
||||
# Check 8: Git status
|
||||
echo ""
|
||||
echo "[INFO] Checking git status..."
|
||||
UNTRACKED=$(git ls-files --others --exclude-standard *.set 2>/dev/null | wc -l)
|
||||
if [ $UNTRACKED -gt 0 ]; then
|
||||
echo "WARNING: $UNTRACKED untracked .set files:"
|
||||
git ls-files --others --exclude-standard *.set 2>/dev/null | head -5
|
||||
fi
|
||||
|
||||
# Summary
|
||||
echo ""
|
||||
echo "=== Summary ==="
|
||||
if [ $ISSUES -eq 0 ]; then
|
||||
echo "✅ All checks passed!"
|
||||
else
|
||||
echo "❌ Found $ISSUES issue(s)"
|
||||
fi
|
||||
|
||||
exit $ISSUES
|
||||
Reference in New Issue
Block a user