Files
EA2/smart-bot/MTF_TREND_FOLLOWING_MEAN_REVERSION.md
2026-05-24 20:22:43 +07:00

151 lines
4.6 KiB
Markdown

# MTF Trend-Following vs Mean-Reversion Mode
## Fitur Baru yang Diterapkan
### 1. Mode Trading yang Fleksibel
**Input Parameter Baru:**
```mql5
input ENUM_MTF_Mode MTF_TradingMode = MTF_MODE_MEAN_REVERSION; // MTF Trading Mode
input bool MTF_UseVoteTieBreaker = true; // Use vote majority as tie-breaker
// ADX Threshold Settings (lebih realistis)
input int MTF_ADX_H1_Threshold = 15; // H1 ADX Minimum (15-25 recommended)
input int MTF_ADX_M15_Threshold = 12; // M15 ADX Minimum (12-20 recommended)
input int MTF_ADX_M5_Threshold = 8; // M5 ADX Minimum (8-15 recommended)
input int MTF_ADX_M1_Threshold = 6; // M1 ADX Minimum (6-12 recommended)
```
### 2. Perbedaan Mode Trading
#### **Mean-Reversion Mode (Default)**
- **RSI**: Buy saat RSI < 50 (oversold), Sell saat RSI > 50 (overbought)
- **Stochastic**: Buy saat K < 40 (oversold), Sell saat K > 60 (overbought)
- **Cocok untuk**: Sideways market, range-bound trading
#### **Trend-Following Mode**
- **RSI**: Buy saat RSI >= 50 (bullish), Sell saat RSI <= 50 (bearish)
- **Stochastic**: Buy saat K >= 50 && K > D (bullish), Sell saat K <= 50 && K < D (bearish)
- **Cocok untuk**: Trending market, momentum trading
### 3. ADX Threshold yang Lebih Realistis
**Sebelum:**
- Semua timeframe: ADX >= 10
- Terlalu rendah, banyak false signal
**Sesudah:**
- **H1**: ADX >= 15 (15-25 recommended)
- **M15**: ADX >= 12 (12-20 recommended)
- **M5**: ADX >= 8 (8-15 recommended)
- **M1**: ADX >= 6 (6-12 recommended)
### 4. Vote Mayoritas sebagai Tie-Breaker
**Fitur Baru:**
- Menghitung jumlah timeframe yang memberikan sinyal buy vs sell
- Jika score buy dan sell hampir sama (selisih <= 5.0), gunakan vote mayoritas
- Mencegah kasus dimana 3 timeframe BUY tapi 1 SELL dengan score lebih tinggi
**Contoh:**
```
Score: Buy=25.0, Sell=27.0 (selisih=2.0)
Vote: Buy=3 (H1,M15,M5), Sell=1 (M1)
Result: BUY (vote tie-breaker: 3>1)
```
### 5. Helper Functions
#### **GetMTFConditions()**
```mql5
void GetMTFConditions(bool ema_up, double rsi, double adx, double stoch_k, double stoch_d, int adx_threshold,
bool &rsi_buy, bool &rsi_sell, bool &adx_ok, bool &stoch_buy, bool &stoch_sell)
```
- Menentukan kondisi buy/sell berdasarkan mode trading
- ADX sebagai filter utama
#### **CalculateMTFSignal()**
```mql5
void CalculateMTFSignal(bool ema_up, bool rsi_buy, bool rsi_sell, bool adx_ok, bool stoch_buy, bool stoch_sell,
double adx, int adx_threshold, double max_strength,
bool &buy_signal, bool &sell_signal, double &buy_strength, double &sell_strength,
string timeframe_name)
```
- Menghitung signal dan strength untuk setiap timeframe
- Mutual exclusion logic
- EMA sebagai tie-breaker
### 6. Perubahan Score Calculation
**Sebelum:**
- 4 kondisi: EMA, RSI, ADX, Stochastic
- Score: 40 * (conditions / 4.0)
- Bonus untuk kondisi kuat
**Sesudah:**
- 3 kondisi: EMA, RSI, Stochastic
- ADX sebagai filter (bukan kondisi)
- Score: 40 * (conditions / 3.0)
- Lebih sederhana dan konsisten
### 7. Cara Menggunakan
#### **Untuk Mean-Reversion (Sideways Market):**
```
MTF_TradingMode = MTF_MODE_MEAN_REVERSION
MTF_UseVoteTieBreaker = true
MTF_ADX_H1_Threshold = 15
MTF_ADX_M15_Threshold = 12
MTF_ADX_M5_Threshold = 8
MTF_ADX_M1_Threshold = 6
```
#### **Untuk Trend-Following (Trending Market):**
```
MTF_TradingMode = MTF_MODE_TREND_FOLLOWING
MTF_UseVoteTieBreaker = true
MTF_ADX_H1_Threshold = 20
MTF_ADX_M15_Threshold = 18
MTF_ADX_M5_Threshold = 15
MTF_ADX_M1_Threshold = 12
```
### 8. Keuntungan Implementasi
1. **Fleksibilitas**: Bisa menyesuaikan dengan kondisi market
2. **Konsistensi**: Logic yang sama untuk semua timeframe
3. **Filter yang Lebih Baik**: ADX threshold yang realistis
4. **Tie-Breaker**: Vote mayoritas mencegah konflik
5. **Maintainability**: Helper functions memudahkan maintenance
### 9. Testing dan Monitoring
**Log yang Ditambahkan:**
- Mode trading yang aktif
- ADX threshold yang digunakan
- Vote count untuk tie-breaker
- Kondisi buy/sell untuk setiap timeframe
**Dashboard Update:**
- Menampilkan mode trading yang aktif
- Menampilkan vote count
- Menampilkan ADX threshold yang digunakan
### 10. Rekomendasi Penggunaan
#### **Market Sideways (Range-bound):**
- Gunakan **Mean-Reversion Mode**
- ADX threshold rendah (15-20)
- Fokus pada oversold/overbought levels
#### **Market Trending:**
- Gunakan **Trend-Following Mode**
- ADX threshold tinggi (20-25)
- Fokus pada momentum dan trend continuation
#### **Market Volatile:**
- Aktifkan **Vote Tie-Breaker**
- Gunakan ADX threshold menengah
- Monitor vote count untuk konfirmasi