@@ -0,0 +1,145 @@
|
||||
# MTF Score dan Signal Dominan Fix
|
||||
|
||||
## 🔍 **Masalah yang Ditemukan**
|
||||
|
||||
User melaporkan bahwa dashboard menunjukkan signal dominan **SELL** tapi score **BUY** lebih banyak dan score **SELL** = 0. Ini menunjukkan ada inkonsistensi antara perhitungan score MTF dan penentuan signal dominan.
|
||||
|
||||
## 📊 **Analisis Kode**
|
||||
|
||||
### 1. **Perhitungan Score MTF**
|
||||
```mql5
|
||||
// Di GetMTFConfirmation() - baris 4636-4645
|
||||
double buy_score = 0, sell_score = 0;
|
||||
if(mtf.h1_buy) buy_score += mtf.h1_buy_strength;
|
||||
if(mtf.m15_buy) buy_score += mtf.m15_buy_strength;
|
||||
if(mtf.m5_buy) buy_score += mtf.m5_buy_strength;
|
||||
if(mtf.m1_buy) buy_score += mtf.m1_buy_strength;
|
||||
|
||||
if(mtf.h1_sell) sell_score += mtf.h1_sell_strength;
|
||||
if(mtf.m15_sell) sell_score += mtf.m15_sell_strength;
|
||||
if(mtf.m5_sell) sell_score += mtf.m5_sell_strength;
|
||||
if(mtf.m1_sell) sell_score += mtf.m1_sell_strength;
|
||||
```
|
||||
|
||||
### 2. **Penentuan Signal Dominan di Dashboard**
|
||||
```mql5
|
||||
// Di RenderHUD() - baris 3201-3202
|
||||
string sig = (sp.buy?"BUY":(sp.sell?"SELL":"-"));
|
||||
color sigColor = (sp.buy?clrLime:(sp.sell?clrTomato:clrGray));
|
||||
```
|
||||
|
||||
### 3. **Penentuan Signal di ValidateSignalWithMTF**
|
||||
```mql5
|
||||
// Di ValidateSignalWithMTF() - baris 4829-4840
|
||||
if(mtf.total_buy_score > mtf.total_sell_score) {
|
||||
s.buy = true;
|
||||
s.sell = false;
|
||||
} else if(mtf.total_sell_score > mtf.total_buy_score) {
|
||||
s.buy = false;
|
||||
s.sell = true;
|
||||
}
|
||||
```
|
||||
|
||||
## 🐛 **Kemungkinan Penyebab**
|
||||
|
||||
1. **Kondisi Sell tidak terpenuhi**: Semua timeframe mungkin tidak memenuhi kondisi sell (h1_sell, m15_sell, m5_sell, m1_sell = false), sehingga sell_score = 0
|
||||
|
||||
2. **Kondisi Buy terpenuhi**: Beberapa timeframe memenuhi kondisi buy, sehingga buy_score > 0
|
||||
|
||||
3. **Logic Error**: Ada kemungkinan ada bug di logika penentuan signal dominan
|
||||
|
||||
4. **Cache Issue**: MTF signal mungkin menggunakan cache yang tidak update dengan benar
|
||||
|
||||
## 🔧 **Perbaikan yang Diterapkan**
|
||||
|
||||
### 1. **Enhanced Debugging untuk Score MTF**
|
||||
```mql5
|
||||
// Enhanced debugging untuk masalah score MTF
|
||||
EssentialLog("🔍 MTF Score Debug - Buy Conditions: H1=" + (mtf.h1_buy ? "YES" : "NO") +
|
||||
" M15=" + (mtf.m15_buy ? "YES" : "NO") + " M5=" + (mtf.m5_buy ? "YES" : "NO") +
|
||||
" M1=" + (mtf.m1_buy ? "YES" : "NO"));
|
||||
EssentialLog("🔍 MTF Score Debug - Sell Conditions: H1=" + (mtf.h1_sell ? "YES" : "NO") +
|
||||
" M15=" + (mtf.m15_sell ? "YES" : "NO") + " M5=" + (mtf.m5_sell ? "YES" : "NO") +
|
||||
" M1=" + (mtf.m1_sell ? "YES" : "NO"));
|
||||
EssentialLog("🔍 MTF Score Debug - Buy Strengths: H1=" + DoubleToString(mtf.h1_buy_strength,1) +
|
||||
" M15=" + DoubleToString(mtf.m15_buy_strength,1) + " M5=" + DoubleToString(mtf.m5_buy_strength,1) +
|
||||
" M1=" + DoubleToString(mtf.m1_buy_strength,1));
|
||||
EssentialLog("🔍 MTF Score Debug - Sell Strengths: H1=" + DoubleToString(mtf.h1_sell_strength,1) +
|
||||
" M15=" + DoubleToString(mtf.m15_sell_strength,1) + " M5=" + DoubleToString(mtf.m5_sell_strength,1) +
|
||||
" M1=" + DoubleToString(mtf.m1_sell_strength,1));
|
||||
```
|
||||
|
||||
### 2. **Enhanced Debugging untuk Signal Decision**
|
||||
```mql5
|
||||
// Enhanced debugging untuk signal dominan
|
||||
EssentialLog("🔍 ValidateSignalWithMTF: Signal Decision - Buy Score=" + DoubleToString(mtf.total_buy_score,1) +
|
||||
" Sell Score=" + DoubleToString(mtf.total_sell_score,1) +
|
||||
" Difference=" + DoubleToString(mtf.total_buy_score - mtf.total_sell_score,1));
|
||||
```
|
||||
|
||||
### 3. **Dashboard Enhancement**
|
||||
```mql5
|
||||
// Tambahan informasi signal dominan MTF
|
||||
string dominantSignal = "";
|
||||
color dominantColor = clrGray;
|
||||
if(mtf.total_buy_score > mtf.total_sell_score) {
|
||||
dominantSignal = StringFormat("MTF Dominant: BUY (%.1f > %.1f)", mtf.total_buy_score, mtf.total_sell_score);
|
||||
dominantColor = clrLime;
|
||||
} else if(mtf.total_sell_score > mtf.total_buy_score) {
|
||||
dominantSignal = StringFormat("MTF Dominant: SELL (%.1f > %.1f)", mtf.total_sell_score, mtf.total_buy_score);
|
||||
dominantColor = clrTomato;
|
||||
} else {
|
||||
dominantSignal = StringFormat("MTF Balanced: BUY=%.1f SELL=%.1f", mtf.total_buy_score, mtf.total_sell_score);
|
||||
dominantColor = clrYellow;
|
||||
}
|
||||
DrawLabel("mtf_dominant",10,baseY+90,dominantSignal,dominantColor,9);
|
||||
```
|
||||
|
||||
### 4. **Dashboard Cleanup**
|
||||
- **Menghapus MTF handles debug info** yang tidak diperlukan
|
||||
- **Menghapus debug info lainnya** untuk merapikan tampilan
|
||||
- **Merapikan posisi elemen** dashboard untuk tampilan yang lebih bersih
|
||||
- **Menghapus debug log** yang tidak diperlukan di OnDeinit
|
||||
|
||||
## 📋 **Langkah Debugging**
|
||||
|
||||
### 1. **Cek Log MTF Score Debug**
|
||||
- Lihat log untuk melihat kondisi buy/sell per timeframe
|
||||
- Verifikasi strength buy/sell per timeframe
|
||||
- Pastikan tidak ada timeframe yang memberikan signal yang salah
|
||||
|
||||
### 2. **Cek Log Signal Decision**
|
||||
- Lihat log untuk melihat perhitungan score final
|
||||
- Verifikasi perbedaan antara buy_score dan sell_score
|
||||
- Pastikan logic penentuan signal dominan berjalan dengan benar
|
||||
|
||||
### 3. **Cek Dashboard**
|
||||
- Dashboard sekarang menampilkan score buy/sell yang akurat
|
||||
- Tambahan informasi signal dominan MTF
|
||||
- Tampilan yang lebih bersih tanpa debug info yang tidak diperlukan
|
||||
- Bandingkan dengan signal yang ditampilkan di bagian atas
|
||||
|
||||
## 🎯 **Expected Results**
|
||||
|
||||
Setelah perbaikan ini:
|
||||
|
||||
1. **Logging yang lebih detail** untuk debugging masalah score MTF
|
||||
2. **Dashboard yang lebih informatif** dengan menampilkan score buy/sell yang akurat
|
||||
3. **Signal dominan yang konsisten** antara score dan display
|
||||
4. **Tampilan dashboard yang lebih bersih** tanpa debug info yang mengganggu
|
||||
5. **Kemampuan untuk mendeteksi** masalah di logika MTF
|
||||
|
||||
## 🔍 **Cara Verifikasi**
|
||||
|
||||
1. **Jalankan EA** dan lihat log untuk debugging info
|
||||
2. **Cek dashboard** untuk melihat score buy/sell yang akurat
|
||||
3. **Bandingkan** signal dominan di dashboard dengan score MTF
|
||||
4. **Verifikasi** tampilan dashboard yang lebih bersih
|
||||
5. **Laporkan** jika masih ada inkonsistensi
|
||||
|
||||
## 📝 **Catatan**
|
||||
|
||||
- Perbaikan ini menambahkan logging yang lebih detail untuk debugging
|
||||
- Dashboard sekarang menampilkan informasi yang lebih lengkap dan bersih
|
||||
- Debug info yang tidak diperlukan telah dihapus untuk tampilan yang lebih profesional
|
||||
- Jika masalah masih terjadi, log akan memberikan informasi yang lebih detail untuk analisis lebih lanjut
|
||||
Reference in New Issue
Block a user