3 çubuklu formasyon:
1. mum: Büyük gövdeli yeşil (yükseliş spike).
2. mum: Kırmızı (geri çekilme).
3. mum: Büyük gövdeli yeşil (boğa yükselişi).
Bu desen göründüğünde bir bölge oluşturulur.
Mavi bir dikdörtgen, 3 mumun yüksek / düşük aralığından çizilir.
Orta (2.) mumun açık fiyatına kireç yeşili yatay bir giriş çizgisi çizilir.
Çizgi, fiyat geri gelene kadar geleceğe uzanır.
mq5 input color BoxColor = clrBlue; // 3 mumluk desen kutusunun rengi input color EntryLineColor = clrLime; // Giriş çizgisinin rengi input ENUM_LINE_STYLE EntryLineStyle = STYLE_SOLID; // Giriş satırının stili input int BoxWidth = 2; // Kutu kenarlığının genişliği input int EntryLineWidth = 2; // Giriş satırının genişliği input int EntryLineLength = 200; // Azaltma hattının ne kadar uzadığı ``` These inputs let you fully control the style of the box and entry line.
TEMEL FİKİR
3 mumluk bir boğa formasyonu arıyoruz
1. İlk mum - güçlü yükseliş (başak)
2. İkinci mum - aşağı yönlü geri çekilme
3. Üçüncü mum - yine güçlü yükseliş yükselişi
Bu göründüğünde, çiziyoruz:
- Desenin etrafında bir kutu
- İkinci mumun açılışında yatay bir çizgi (giriş noktası
Fiyat bu çizgiye döndüğünde ("azaltma"), çizgiyi kısa keseriz ve yeniden çizmekten kaçınırız.
struct PatternInfo { datetime time; // Desenin zamanı double entry; // Giriş fiyatı (2. mumun açılışı) double high; // 3 mumun en yükseği double low; // 3 mumun en düşük seviyesi bool mitigated; // Fiyat giriş seviyesine döndü mü? }; CArrayObj activePatterns; ``` We use a struct `PatternInfo` to track each valid pattern and store it in an array. This helps avoid repeated processing.
int OnInit() { IndicatorSetInteger(INDICATOR_DIGITS, _Digits); ArrayInitialize(activePatterns, 0); return INIT_SUCCEEDED; } ``` We set the indicator precision and prepare our array.
```mq5 for (int i = limit - 3; i >= 0; i--) { ``` We loop through candles and look 3 bars back. ```mq5 if (isBullish(i+2) && isBearish(i+1) && isBullish(i)) ``` We check if the last 3 candles fit the spike pattern: Green-Red-Green. ```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]; ``` We extract high/low for box and the entry level from the 2 nd (middle) candle. ```mq5 PatternInfo *pattern = new PatternInfo; pattern.time = Time[i]; pattern.entry = entry; pattern.high = high; pattern.low = low; pattern.mitigated = false; ``` Create and add this pattern to our list.
```mq5 string boxName = "Box_" + IntegerToString(Time[i]); ObjectCreate(0, boxName, OBJ_RECTANGLE, 0, Time[i+2], high, Time[i], low); ``` Draw the rectangle (box) from the 3-candle pattern. ```mq5 string lineName = "EntryLine_" + IntegerToString(Time[i]); ObjectCreate(0, lineName, OBJ_TREND, 0, Time[i], entry, Time[i] + PeriodSeconds() * EntryLineLength, entry); ``` Draw the entry line from the 2 nd candle’s open forward in time.
Loop through all patterns:
```mq5
for (int p = 0; p < activePatterns.Total(); p++) {
PatternInfo *pt = (PatternInfo*)activePatterns.At(p);
```
If not already mitigated, check:
```mq5
if (!pt.mitigated && Low[0] <= pt.entry)
```
If current price hits the entry level:
```mq5
pt.mitigated = true;
ObjectDelete("EntryLine_" + IntegerToString(pt.time));
```
Delete original long line.
```mq5
ObjectCreate(0, "MitigatedLine_" + IntegerToString(pt.time), OBJ_TREND, 0,
pt.time, pt.entry,
Time[0], pt.entry);
```
Create a short line showing where mitigation happened. HELPER FUNCTIONS
### Check Bullish/Bearish:
```mq5
bool isBullish(int i) {
return Close[i] > Open[i];
}
bool isBearish(int i) {
return Close[i] < Open[i];
}Bu gösterge basit ama güçlüdür:
Artık Boom 500 veya Boom 1000 üzerinde canlı olarak test edebilirsiniz.
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/61749
DailyPivot Kayması
DailyPivot_Shift göstergesi, temel seviyelerin günün başlangıcından itibaren bir kayma ile hesaplanabilmesi açısından normal DailyPivot göstergesinden farklıdır.
XCCX
Ortalama alma algoritmasının seçilebilmesi ve aşırı satım/aşırı alım seviyelerinin dinamik olarak değiştirilebilmesi özelliğine sahip emtia kanalı endeksi.
CBitBuffer Class - Data Serialization in MQL5
Tek tek bitleri veya bit dizilerini bir arabelleğe okumak ve arabellekten yazmak için bir sınıf.
ATR Kanalları
ATR Channels göstergesi, ATR (Ortalama Gerçek Aralık) değerini dikkate alarak fiyat hareket kanalları oluşturur.