Arrow Signal System
- Indicatori
- Alex Amuyunzu Raymond
- Versione: 4.0
- Attivazioni: 5
Indicator Overview
The MV Arrow Signal System is a comprehensive multi-indicator trading system for MetaTrader 4 that identifies potential buy and sell signals based on swing point detection combined with multiple technical confirmation filters.
Core Concept
The system scans price charts to identify swing highs and swing lows, then applies a scoring system based on multiple technical indicators to validate these potential reversal points. Only high-probability signals that meet strict criteria are displayed as arrows on the chart.
Technical Components
1. Swing Detection Engine
-
Swing Low Detection: Identifies bars that are lower than a specified number of bars to both left and right
-
Swing High Detection: Identifies bars that are higher than a specified number of bars to both left and right
-
Configurable Lookback Periods: Adjustable left/right bar counts for swing sensitivity
2. Signal Confirmation System (Scoring)
Each swing point is evaluated based on 3 primary conditions:
For BUY Signals:
-
EMA Crossover: Fast EMA (8) is greater than or equal to Slow EMA (21) = +1 point
-
RSI Condition: RSI is less than 40 = +1 point
-
Bollinger Band Position: Price is less than or equal to Middle Bollinger Band = +1 point
For SELL Signals:
-
EMA Crossover: Fast EMA (8) is less than or equal to Slow EMA (21) = +1 point
-
RSI Condition: RSI is greater than 60 = +1 point
-
Bollinger Band Position: Price is greater than or equal to Middle Bollinger Band = +1 point
3. Advanced Filters
Trend Filter (Optional):
-
Uses a 50-period EMA to determine overall trend direction
-
BUY signals require price greater than trend EMA (uptrend confirmation)
-
SELL signals require price less than trend EMA (downtrend confirmation)
Volume Confirmation (Optional):
-
Compares current bar volume to 20-bar average
-
Requires volume greater than or equal to 120% of average (configurable)
-
Filters out low-volume, unreliable signals
Swing Size Filter:
-
Uses Average True Range (ATR) to measure swing significance
-
Minimum swing size: 0.3 times ATR (configurable)
-
Filters out minor, insignificant price movements
Signal Spacing Control:
-
Minimum 25 bars between signals of same type
-
Prevents signal overcrowding and reduces false signals
Visual Features
Arrow Display:
-
Green Up Arrows (Code 233): Buy signals
-
Red Down Arrows (Code 234): Sell signals
-
Configurable Colors and Widths
-
Smart Positioning: Arrows placed above/below price bars for clear visibility
-
Score Labels: Each arrow shows its confirmation score (B2, B3, S2, S3)
Information Display:
-
Text labels showing signal strength
-
Automatic cleanup of old signals
-
Chart redrawing for optimal performance
Customization Options
Input Parameters:
Moving Average Settings:
-
Fast Moving Average: Period for fast EMA (default: 8)
-
Slower Moving Average: Period for slow EMA (default: 21)
-
Trend Filter Period: EMA period for trend filtering (default: 50)
RSI Settings:
-
RSIPeriod: Period for RSI calculation (default: 14)
Bollinger Bands Settings:
-
BolingerbandiPeriod: Period for Bollinger Bands (default: 20)
-
BolingerbandiDeviation: Standard deviation multiplier (default: 2.0)
-
BolingerbandiShift: Horizontal shift of bands (default: 0)
Swing Detection Settings:
-
SwingBarsLeft: Bars to left for swing detection (default: 10)
-
SwingBarsRight: Bars to right for swing detection (default: 5)
-
MinSwingSizeATR: Minimum swing size in ATR multiples (default: 0.3)
-
ATRPeriod: Period for ATR calculation (default: 14)
Signal Filtering:
-
MinBarsBetweenSignals: Minimum bars between same-type signals (default: 25)
-
RequireAllConditions: Require all 3 conditions instead of 2/3 (default: false)
-
UseTrendFilter: Enable/disable trend filter (default: true)
-
FilterByVolume: Enable/disable volume filter (default: true)
-
MinVolumeRatio: Minimum volume ratio vs average (default: 1.2)
Alert Settings:
-
Alerts: Enable/disable popup alerts (default: true)
Visual Settings:
-
BuyArrowColor: Color for buy arrows (default: Lime)
-
SellArrowColor: Color for sell arrows (default: Red)
-
ArrowWidth: Width of arrows (default: 3)
Signal Logic
Buy Signal Generation:
-
A swing low is detected (bar is lower than N bars to left and right)
-
Swing size meets minimum ATR requirement
-
Volume is above average (if volume filter enabled)
-
Price is in uptrend relative to trend EMA (if trend filter enabled)
-
Score at least 2 out of 3 conditions (or 3/3 if RequireAllConditions is true)
-
Minimum bars have passed since last buy signal
Sell Signal Generation:
-
A swing high is detected (bar is higher than N bars to left and right)
-
Swing size meets minimum ATR requirement
-
Volume is above average (if volume filter enabled)
-
Price is in downtrend relative to trend EMA (if trend filter enabled)
-
Score at least 2 out of 3 conditions (or 3/3 if RequireAllConditions is true)
-
Minimum bars have passed since last sell signal
Technical Implementation
Code Structure:
-
OnInit(): Initializes the indicator and buffers
-
OnCalculate(): Main processing function called on each tick
-
IsSwingLow()/IsSwingHigh(): Swing detection functions
-
IsSignificantSwing(): ATR-based swing size validation
-
CheckVolumeConfirmation(): Volume validation function
-
OnDeinit(): Cleanup function that removes all drawn objects
Memory Management:
-
Dynamic arrow creation and deletion
-
Automatic cleanup of old signal objects
-
Buffer management for ATR calculations
-
Efficient bar processing with configurable lookback
Error Handling:
-
Type-safe conversions (no data loss warnings)
-
Boundary checks for bar indices
-
Validation of calculation inputs
-
Comprehensive logging for debugging
Performance Characteristics
Calculation Efficiency:
-
Processes only necessary bars on each update
-
Uses built-in MQL4 technical indicators for efficiency
-
Implements signal spacing to reduce redundant calculations
-
Optimized loop structures for swing detection
Resource Usage:
-
Minimal memory footprint
-
Efficient object management
-
Configurable calculation depth
-
Automatic cleanup of graphical objects
Use Cases
Trading Scenarios:
-
Swing trading opportunities
-
Trend reversal identification
-
Support and resistance level confirmation
-
Entry and exit signal generation
Timeframes:
-
Suitable for all timeframes (M1 to MN)
-
Adjustable parameters for different volatility environments
-
Configurable for different trading styles
Market Conditions:
-
Trending markets (with trend filter)
-
Ranging markets (with RSI and Bollinger Band filters)
-
High-volatility periods (with ATR-based swing filtering)
-
Low-volatility periods (with volume confirmation)
Advantages Over Original System
Reduced False Signals:
-
Fixed swing detection logic (corrected bar index calculations)
-
Added ATR-based swing size filtering
-
Volume confirmation requirements
-
Trend direction filtering
-
Increased minimum bars between signals
Improved Signal Quality:
-
Stricter RSI thresholds (40/60 vs original 60/40)
-
Optional requirement for all 3 conditions
-
Better visual feedback with score labels
-
Comprehensive logging for signal analysis
Technical Improvements:
-
Type-safe code without conversion warnings
-
Efficient memory management
-
Better error handling
-
Enhanced debugging capabilities
Installation and Setup
Requirements:
-
MetaTrader 4 platform
-
MQL4 compiler (built into MT4)
-
Sufficient historical data for indicator calculations
Installation Steps:
-
Copy the .mq4 file to MT4's Indicators folder
-
Restart MT4 or refresh the Navigator window
-
Drag the indicator onto a chart
-
Configure parameters as needed
-
Adjust visual settings for preferred display
Recommended Settings for Different Styles:
Conservative Trading:
-
RequireAllConditions: true
-
MinBarsBetweenSignals: 30
-
MinSwingSizeATR: 0.5
-
UseTrendFilter: true
Aggressive Trading:
-
RequireAllConditions: false
-
MinBarsBetweenSignals: 15
-
MinSwingSizeATR: 0.2
-
UseTrendFilter: false
Day Trading (Lower Timeframes):
-
SwingBarsLeft: 5
-
SwingBarsRight: 2
-
FastMovingAverage: 5
-
SlowerMovingAverage: 12
Swing Trading (Higher Timeframes):
-
SwingBarsLeft: 20
-
SwingBarsRight: 10
-
FastMovingAverage: 13
-
SlowerMovingAverage: 34
Limitations and Considerations
Known Limitations:
-
Repainting: Signals may change as new bars form
-
Lag: Uses historical data for swing confirmation
-
Parameter sensitivity: Results vary with different settings
-
Market dependency: Performance varies with market conditions
Risk Management:
-
This is a signal generator only, not a complete trading system
-
Should be used with proper risk management
-
Requires additional confirmation before trading
-
Past performance does not guarantee future results
Best Practices:
-
Always backtest with historical data
-
Forward test in demo accounts
-
Use appropriate position sizing
-
Combine with other analysis methods
-
Adjust parameters for specific instruments
Support and Maintenance
Troubleshooting:
-
Check Expert tab for error messages
-
Verify sufficient historical data is loaded
-
Ensure correct parameter settings
-
Monitor signal logging in Journal tab
Updates:
-
Regular parameter optimization recommended
-
Periodic review of signal accuracy
-
Adjustment for changing market conditions
-
Consider seasonal or cyclical variations
This enhanced version of the MV Arrow Signal System provides a robust framework for identifying trading opportunities with multiple confirmation layers and customizable filters to suit various trading styles and market conditions.
