149 lines
4.9 KiB
Markdown
149 lines
4.9 KiB
Markdown
# Base-EMA Multi-Stage Reversal Signal Indicator
|
|
|
|
## Overview
|
|
|
|
The Base-EMA Reversal Indicator is a sophisticated trading tool that identifies potential reversal opportunities using a multi-stage state machine approach with EMA confluence. The indicator tracks both buy and sell opportunities through a systematic process of base formation, EMA confirmation, and pullback detection.
|
|
|
|
## Features
|
|
|
|
### 8 Indicator Buffers
|
|
1. **BUY_SIGNAL** (Buffer 0): Price level for buy entry (up arrow)
|
|
2. **SELL_SIGNAL** (Buffer 1): Price level for sell entry (down arrow)
|
|
3. **BUY_SL** (Buffer 2): Stop Loss level for buy positions (from base low)
|
|
4. **SELL_SL** (Buffer 3): Stop Loss level for sell positions (from base high)
|
|
5. **BUY_TP** (Buffer 4): Take Profit level for buy positions (EMA 600)
|
|
6. **SELL_TP** (Buffer 5): Take Profit level for sell positions (EMA 600)
|
|
7. **BUY_STATE** (Buffer 6): Current buy state (0-3) for EA consumption
|
|
8. **SELL_STATE** (Buffer 7): Current sell state (0-3) for EA consumption
|
|
|
|
### Input Parameters
|
|
|
|
#### EMA Settings
|
|
- **EMA 50 Period**: Fast EMA period (default: 50)
|
|
- **EMA 100 Period**: Medium-fast EMA period (default: 100)
|
|
- **EMA 200 Period**: Medium EMA period (default: 200)
|
|
- **EMA 300 Period**: Medium-slow EMA period (default: 300)
|
|
- **EMA 400 Period**: Slow EMA period (default: 400)
|
|
- **EMA 500 Period**: Very slow EMA period (default: 500)
|
|
- **EMA 600 Period**: Target EMA for TP (default: 600)
|
|
|
|
#### Setup Settings
|
|
- **Lookback Period**: Bars to look back for base detection (default: 20)
|
|
- **Base Threshold**: Points tolerance for pullback to base (default: 50)
|
|
- **State Reset Period**: Bars before resetting state if no signal (default: 50)
|
|
|
|
#### Display Settings
|
|
- **Show Dashboard**: Toggle dashboard display (default: true)
|
|
- **Show Stage Labels**: Toggle stage label display (default: true)
|
|
- **Show EMA Lines**: Toggle EMA lines display (default: true)
|
|
|
|
## Logic Workflow
|
|
|
|
### Buy Side State Machine (Looking for reversal up to EMA 600)
|
|
|
|
#### State 0: Idle/Reset
|
|
- Waiting for new low formation
|
|
|
|
#### State 1: Find Base
|
|
- Price makes new low in `InpLookback` bars (at frist install then use last signal as a start of lookback)
|
|
- Store `BaseLow = Low[i]`
|
|
- Transition to State 2
|
|
|
|
#### State 2: Confirm Test
|
|
- Price touches or crosses EMA 50, 100, or 200 from below
|
|
- Wait for pullback opportunity
|
|
- Transition to State 3
|
|
|
|
#### State 3: Wait Pullback
|
|
- Price pulls back to `BaseLow` within `InpBaseThreshold` points
|
|
- Generate buy signal at current close
|
|
- Set SL at `BaseLow`
|
|
- Set TP at EMA 600
|
|
- Reset to State 0
|
|
|
|
### Sell Side State Machine (Looking for reversal down to EMA 600)
|
|
|
|
#### State 0: Idle/Reset
|
|
- Waiting for new high formation
|
|
|
|
#### State 1: Find Base
|
|
- Price makes new high in `InpLookback` bars (at frist install then use last signal as a start of lookback)
|
|
- Store `BaseHigh = High[i]`
|
|
- Transition to State 2
|
|
|
|
#### State 2: Confirm Test
|
|
- Price touches or crosses EMA 50, 100, or 200 from above
|
|
- Wait for bounce back opportunity
|
|
- Transition to State 3
|
|
|
|
#### State 3: Wait Pullback
|
|
- Price bounces back to `BaseHigh` within `InpBaseThreshold` points
|
|
- Generate sell signal at current close
|
|
- Set SL at `BaseHigh`
|
|
- Set TP at EMA 600
|
|
- Reset to State 0
|
|
|
|
## Visual Elements
|
|
|
|
### Color Scheme
|
|
- **EMA 50**: Red
|
|
- **EMA 100**: Orange
|
|
- **EMA 200**: Yellow
|
|
- **EMA 300**: Green
|
|
- **EMA 400**: Blue
|
|
- **EMA 500**: Purple
|
|
- **EMA 600**: Magenta
|
|
- **Buy Signals**: Lime green arrows (↑)
|
|
- **Sell Signals**: Red arrows (↓)
|
|
- **SL Lines**: Gray dashed lines
|
|
- **TP Lines**: Blue dotted lines
|
|
- **Stage Labels**: Color-coded by state
|
|
|
|
### Stage Labels
|
|
Located in top-right corner, shows:
|
|
- Current buy stage with colored background
|
|
- Current sell stage with colored background
|
|
- State descriptions for active states
|
|
|
|
## State Descriptions
|
|
|
|
| State | Value | Description | Color |
|
|
|-------|-------|-------------|-------|
|
|
| Idle/Reset | 0 | Waiting for setup | Gray |
|
|
| Finding Base | 1 | Looking for new high/low | Blue |
|
|
| Confirm Test | 2 | EMA touch/cross detected | Orange |
|
|
| Wait Pullback | 3 | Waiting for pullback to base | Green |
|
|
|
|
|
|
### For EA Developers
|
|
The indicator provides two key buffers for automated trading systems:
|
|
- `BUY_STATE_BUFFER` (6): Current buy state (0-3)
|
|
- `SELL_STATE_BUFFER` (7): Current sell state (0-3)
|
|
|
|
These buffers can be accessed programmatically to:
|
|
- Monitor setup progression
|
|
- Trigger automated entries at State 3
|
|
- Implement custom risk management
|
|
- Build multi-timeframe strategies
|
|
|
|
## Technical Details
|
|
|
|
### Buffer Configuration
|
|
```mql5
|
|
#property indicator_buffers 8
|
|
#property indicator_plots 6
|
|
```
|
|
|
|
### Performance Considerations
|
|
- Uses iMA() handles for efficient EMA calculation
|
|
- Implements series arrays for optimal memory usage
|
|
- Minimal repainting - signals generated on bar close
|
|
- Efficient object management for dashboard and labels
|
|
|
|
### Error Handling
|
|
- Validates EMA handle creation
|
|
- Checks array bounds before access
|
|
- Graceful cleanup on deinitialization
|
|
- Proper series array management
|
|
|