Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
43
Valutazioni:
(3)
Pubblicato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Rilevamento del pattern spike rialzista

  • Schema a 3 barre:

    • 1a candela: Verde con corpo ampio (spike rialzista).

    • 2a candela: Rossa (pullback).

    • 3a candela: Verde con corpo largo (spike rialzista).

  • Quando appare questo schema, si crea una zona.

Creazione della zona

  • Viene tracciato un rettangolo blu dall'intervallo alto/basso delle 3 candele.

  • Una linea di ingresso orizzontale verde lime viene tracciata al prezzo di apertura della candela centrale (2a).

  • La linea si estende nel futuro fino al ritorno del prezzo.


INGRESSI SPIEGATI

mq5
input color BoxColor = clrBlue;              // Colore della scatola del motivo a 3 candele
input color EntryLineColor = clrLime;        // Colore della linea di ingresso
input ENUM_LINE_STYLE EntryLineStyle = STYLE_SOLID; // Stile della riga di ingresso
input int BoxWidth = 2;                      // Larghezza del bordo della scatola
input int EntryLineWidth = 2;                // Larghezza della riga di ingresso
input int EntryLineLength = 200;             // Quanto si estende la linea di mitigazione
```
These inputs let you fully control the style of the box and entry line.


IDEA PRINCIPALE

Cerchiamo un modello rialzista a 3 candele

1. Prima candela - forte rialzo (spike)

2. Seconda candela: ritracciamento ribassista.

3. Terza candela - forte spike rialzista.


Quando questo appare, disegniamo:

- Un riquadro intorno al pattern

- Una linea orizzontale in corrispondenza dell'apertura della 2a candela (punto di ingresso)

Una volta che il prezzo torna su quella linea ("mitigazione"), tagliamo la linea ed evitiamo di ridisegnarla.


STRUTTURE DATI

struct PatternInfo {
  datetime time;   // Ora del modello
  double entry;    // Prezzo di ingresso (apertura della seconda candela)
  double high;     // Massimo delle 3 candele
  double low;      // Il minimo più basso delle 3 candele
  bool mitigated;  // Il prezzo è tornato al livello iniziale?
};

CArrayObj activePatterns;
```
We use a struct `PatternInfo` to track each valid pattern and store it in an array. This helps avoid repeated processing.

FUNZIONE ON INIT

int OnInit() {
  IndicatorSetInteger(INDICATOR_DIGITS, _Digits);
  ArrayInitialize(activePatterns, 0);
  return INIT_SUCCEEDED;
}
```
We set the indicator precision and prepare our array.


RILEVAMENTO DEL PATTERN (SU OGNI TICK)

```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.
DISEGNO DEL RIQUADRO E DELLA LINEA
```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.

CONTROLLO DELL'ATTENUAZIONE (A OGNI TICK)

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];
}

Questo indicatore è semplice ma potente:

  • Rileva il comportamento dei picchi reali in Boom
  • Visualizza le entrate di denaro intelligente
  • Rileva automaticamente l'attenuazione

Ora è possibile testarlo dal vivo su Boom 500 o Boom 1000.


grazie commentate se volete chiedere o condividere.


Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/61749

Turnover di DailyPivot Turnover di DailyPivot

L'indicatore DailyPivot_Shift si differenzia dal solito indicatore DailyPivot in quanto i livelli principali possono essere calcolati con uno spostamento dell'inizio della giornata.

XCCX XCCX

Indice del canale delle materie prime con algoritmo di mediazione selezionabile e livelli di ipervenduto/ipercomprato che cambiano dinamicamente.

CBitBuffer Class - Data Serialization in MQL5 CBitBuffer Class - Data Serialization in MQL5

Una classe per leggere e scrivere singoli bit o sequenze di bit da e verso un buffer.

EMA_RSI_RISK-EA EMA_RSI_RISK-EA

Expert Advisor for MetaTrader 5 that combines Exponential Moving Averages (EMA) and Relative Strength Index (RSI) to generate trading signals. Includes risk management features and trading time filter.