MetaTrader5
Polanya Spike Bullish pada Boom Index: Indikator untuk MetaTrader 5
Pola Spike BullishPola 3 lilin:Lilin pertama: Hijau dengan tubuh besar (spike bullish).Lilin kedua: Merah (pullback).Lilin ketiga: Hijau dengan tubuh besar (spike bullish).Ketika pola ini muncul, sebuah zona terbentuk.Pembentukan ZonaSebuah persegi panjang biru digambar dari rentang tinggi/rendah 3 lilin tersebut.Sebuah garis horizontal hijau limau digambar pada harga pembukaan lilin kedua (titik masuk).Garis ini akan meluas jauh ke depan hingga harga kembali.PENJELASAN INPUTmq5
input color BoxColor = clrBlue; // Warna kotak pola 3 lilin
input color EntryLineColor = clrLime; // Warna garis entry
input ENUM_LINE_STYLE EntryLineStyle = STYLE_SOLID; // Gaya garis entry
input int BoxWidth = 2; // Lebar border kotak
input int EntryLineWidth = 2 // Lebar garis entry
input int EntryLineLength = 200 // Seberapa jauh garis mitigasi meluas
IDE DASARKita mencari pola bullish 3 lilin1. Lilin pertama – bullish kuat (spike)2. Lilin kedua – retracement bearish3. Lilin ketiga – spike bullish kuat lagiKetika pola ini muncul, kita menggambar:- Sebuah kotak di sekitar pola- Sebuah garis horizontal pada harga pembukaan lilin kedua (titik masuk)Setelah harga kembali ke garis tersebut ("mitigasi"), kita menghentikan garis tersebut dan tidak menggambarnya lagi.STRUKTUR DATAstruct PatternInfo {
datetime time; // Waktu pola
double entry; // Harga entry (open lilin kedua)
double high; // Tinggi tertinggi dari 3 lilin
double low; // Rendah terendah dari 3 lilin
bool mitigated; // Apakah harga sudah kembali ke level entry?
};
CArrayObj activePatterns;
Kita menggunakan struct `PatternInfo` untuk melacak setiap pola yang valid dan menyimpannya dalam sebuah array. Ini membantu menghindari pemrosesan berulang.FUNGSI INISIALISASIint OnInit() {
IndicatorSetInteger(INDICATOR_DIGITS, _Digits);
ArrayInitialize(activePatterns, 0);
return INIT_SUCCEEDED;
}
Kita menetapkan presisi indikator dan mempersiapkan array kita.POLA DETEKSI (SETIAP TICK)```mq5
for (int i = limit - 3; i >= 0; i--) {
```
Kita melakukan loop melalui lilin dan melihat 3 bar ke belakang.
```mq5
if (isBullish(i+2) && isBearish(i+1) && isBullish(i))
```
Kita memeriksa jika 3 lilin terakhir sesuai dengan pola spike: Hijau-Merah-Hijau.
```mq5
double high = MathMax(MathMax(High[i], High[i+1]), High[i+2]);
double low = MathMin(MathMin(Low[i], Low[i+1]), Low[i+2]);
double entry = Open[i+1];
```
Kita mengekstrak tinggi/rendah untuk kotak dan level entry dari lilin kedua (tengah). Buat dan tambahkan pola ini ke daftar. GAMBARKAN KOTAK DAN GARIS ```mq5
string boxName = "Box_" + IntegerToString(Time[i]);
ObjectCreate(0, boxName, OBJ_RECTANGLE, 0, Time[i+2], high, Time[i], low);
```
Gambar persegi panjang (kotak) dari pola 3-lilin.
```mq5
string lineName = "EntryLine_" + IntegerToString(Time[i]);
ObjectCreate(0, lineName, OBJ_TREND, 0, Time[i], entry, Time[i] + PeriodSeconds() * EntryLineLength, entry);
```
Gambar garis entry dari harga pembukaan lilin kedua ke depan dalam waktu.PEMERIKSAAN MITIGASI (SETIAP TICK)Loop melalui semua pola:
```mq5
for (int p = 0; p < activePatterns.Total(); p++) {
PatternInfo *pt = (PatternInfo*)activePatterns.At(p);
```
Jika belum mitigasi, periksa:
```mq5
if (!pt.mitigated && Low[0] <= pt.entry)
```
Jika harga saat ini mengenai level entry:
```mq5
pt.mitigated = true;
ObjectDelete("EntryLine_" + IntegerToString(pt.time));
```
Hapus garis panjang asli.
```mq5
ObjectCreate(0, "MitigatedLine_" + IntegerToString(pt.time), OBJ_TREND, 0,
pt.time, pt.entry,
Time[0], pt.entry);
```
Buat garis pendek yang menunjukkan di mana mitigasi terjadi.FUNGSI PEMBANTU
### Periksa Bullish/Bearish:
```mq5
bool isBullish(int i) {
return Close[i] > Open[i];
}
bool isBearish(int i) {
return Close[i] < Open[i];
}
Indikator ini sederhana namun kuat: Mendeteksi perilaku spike yang nyata di BoomMemvisualisasikan entry uang pintarSecara otomatis mendeteksi mitigasiAnda sekarang bisa mengujinya secara langsung di Boom 500 atau Boom 1000.Silakan tinggalkan komentar jika ada pertanyaan atau ingin berbagi.
2025.07.21